dポイントプレゼントキャンペーン実施中!

あるデータベース検索ソフトを使用しているのですが
アクセスログが取れないのです。

ODBCやORACLEなどで
以下のようなアクセスログはとれないでしょうか?

・いつ
・だれが
・どのデータベースに
・どのようなアクセスをしたのか(SQL文)

※ORACLE9iSEを使用しているので
標準監査は使用できますがFGN監査が使用できません。
標準監査ではSQL文のログが取れません。

なんとかログが取れる方法はないでしょうか?

よろしくお願いします。

A 回答 (2件)

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分間隔でスケジュールされたらいいのではないでしょうか。

まぁ間隔などは調整してくださいね。

でわ。
    • good
    • 0

その場合は、常にSQLトレースを取りつづけるしかないと思います。


デメリットとしてはパフォーマンスの悪化とトレース解析処理の複雑さがあります。
要件的には、
EnterpriseEditionの導入も提案すべきとも思えなくもないです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!