web-dev-qa-db-ja.com

OracleSQLクエリのロギング

Oracle 11g StandardEditionを使用しています。

ユーザーが実行しているすべてのSQLクエリをテーブルに記録したいと思います。

これはどのように行うことができますか?

16
JMW

最新バージョンのデータベース(9i以降)を使用していて、Enterprise Editionライセンスをお持ちの場合は、Fine-GrainingAuditingを使用できます。定義されたポリシーを通じて、非常に低いレベルの粒度でユーザークエリを監査できます。

SQLテキストをキャプチャして変数をバインドするには、FGAポリシーを追加するときにAUDIT_TRAILパラメータを適切に設定する必要があります。 詳細


「私は11g標準を使用しているため、監査機能はサポートされていません。」

ではない正確に。 AUDITコマンドは標準のOracleビルドの一部ですが、特定のユーザーが特定のテーブルに対してSELECTを発行したときにのみキャプチャできます。しかし、はい、彼らが選択しているwhatを正確に見つけるには、Enterprise Editionライセンスが必要です。

また、ON SELECTトリガーがないため、自分でロールすることはできません。


「では、Standard EditionでAUDITコマンドを使用できますか?...しかし、コンサルタントから、エンタープライズライセンスを支払わないと使用できないと言われました。」

私自身コンサルタントとして言えば、彼らは彼らが何について話しているのかを常に知っているとは限らないと言わざるを得ません。

明確にしましょう:

  • aUDITコマンドはOracleSQLの一部です。スタンダード版でも使えます。実際、11g以降、デフォルトで有効になっています。一般的なアクティビティを監査します。 詳細
  • Fine Grained AuditingはPL/SQLパッケージであり、Enterprise Editionを使用している場合にのみ使用できます。これにより、非常に低いレベルでユーザーアクティビティを監査できます。 詳細
11
APC

SQLのQUICK、EASYロギングの場合、 ここで私の監視の答えを試してください 。長期間のロギングではありませんが、短い時間枠で何が起こっているかを確認するだけでうまく機能します。 :-)

0
mike