- 締切済み
アクセスログのとり方を教えてください
あるデータベース検索ソフトを使用しているのですが アクセスログが取れないのです。 ODBCやORACLEなどで 以下のようなアクセスログはとれないでしょうか? ・いつ ・だれが ・どのデータベースに ・どのようなアクセスをしたのか(SQL文) ※ORACLE9iSEを使用しているので 標準監査は使用できますがFGN監査が使用できません。 標準監査ではSQL文のログが取れません。 なんとかログが取れる方法はないでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- gdcootie
- ベストアンサー率42% (3/7)
V$SESSIONとV$SESSION_WAITをJOINしてバックグラウンドプロセスを省き、SQLが実行中であるものだけ(STATUSがACTIVE)を対象にして、ログ出力します。 ※この際、実行前に必ずdual表からsysdateで時間を取得 いつ(sysdateの時間) だれが(SID、USERNAME、PROGRAMなど特定できるいずれか) どのデータベースにおよびどんなSQL文を実行したか(sql_hash_value) が取得できます。 SQL文そのものもそこからとれますが量からいってあまり現実的ではありませんので取得はせずにこのSQL文がくさいと思って原因を断定した時には V$SQLAREAやV$SQLTEXTなどで出力されたSQLアドレスをキーにSQL文を取得します。 欲張らず最低限の情報のみcronで10秒間隔程度で1分間のデータを1ファイルに吐き出すようなシェルをcronなどで1分間隔でスケジュールされたらいいのではないでしょうか。 まぁ間隔などは調整してくださいね。 でわ。
- ese_ee
- ベストアンサー率48% (68/139)
その場合は、常にSQLトレースを取りつづけるしかないと思います。 デメリットとしてはパフォーマンスの悪化とトレース解析処理の複雑さがあります。 要件的には、 EnterpriseEditionの導入も提案すべきとも思えなくもないです。