web-dev-qa-db-ja.com

Oracleでインデックスの最終変更時間を取得するにはどうすればよいですか?

インデックス名を指定して、その最終変更時刻とOracle 11gでの変更の作成者を取得します。これを達成するためのクエリはありますか?

2
user2788050

@ Jeffrey Kemp のコメントについて詳しく説明します。変更の作成者に関する情報はオブジェクトのメタデータに収集されないため、データベース監査メカニズムを使用する必要があります。

データベースセキュリティガイドの 監査によるセキュリティアクセスの検証 の章にあるように、監査にはいくつかの種類がありますが、質問で述べた要件に従って必要な監査の種類は、おそらく標準監査のみです。

標準監査を使用する前に、それを有効にする必要があります(まだ有効になっていない場合) AUDIT_TRAIL 初期化パラメーターを適切な値に設定します(リンクを参照)。 SQLステートメントをキャプチャできるAUDIT_TRAILDB,EXTENDEDに設定して、標準監査を評価しました。

SQL> alter system set audit_trail = db,extended scope=spfile;
System altered.

SQL> startup force;
Oracle instance started.

標準監査を有効にすると、データベースに存在するすべての監査ポリシーが監査の詳細のキャプチャを開始します。

標準監査には、ステートメント、特権、オブジェクト、ネットワークの4つのレベルがあります。 (セキュリティガイドの同じ章にある を参照してください。)

次のさまざまなレベルの標準監査ステートメントを使用して、インデックスの作成、インデックスの再構築、インデックスの削除、およびインデックスの使用不可化に関するいくつかの有用な監査情報を収集することができました。

audit index by access;    
audit create any index;    
audit index on hr.employees by access;

私の活動に基づくサンプル出力は以下のとおりです。

SQL> select username, sql_text from dba_audit_object order by timestamp;

USERNAME          SQL_TEXT
--------          ------------------------------------------------------
hr                create index audidx on employees(last_name)
hr                alter index audidx rebuild
scott             drop index hr.audidx
scott             create index hr.audidx on hr.employees(last_name)
scott             alter index hr.audidx rebuild
scott             alter index hr.audidx unusable

私が参照したセキュリティガイドの関連する章に書かれている内容を理解していることを確認し、新しく実装した監査ポリシーを本番環境で使用する前にいくつかの実験を行ってください。

その他の種類の監査と監査に関する有用な情報については、 私の以前の回答 を確認してください。

2