2

Informixでは、systablesテーブルから選択を実行し、そのバージョン列を調べて、特定のテーブルの数値バージョンを確認できます。この列は、指定されたテーブルに影響を与えるすべてのDDLステートメントで増分されます。これは、前回接続してからテーブルの構造が変更されたかどうかを確認できることを意味します。

Oracleでこれを行う同様の方法はありますか?

4

3 に答える 3

3

あまり。Oracle DBA / ALL / USER_OBJECTSビューにはLAST_DDL_TIME列がありますが、構造変更以外の操作の影響を受けます。

于 2010-01-26T16:08:55.267 に答える
3

これ(およびそれ以上)は、テーブルへの変更を追跡するDDLトリガーを使用して行うことができます。ここに例のある興味深い記事があります。

于 2010-01-26T16:20:18.940 に答える
2

本当にそうしたい場合は、Oracleの監査機能を使用して変更を監査する必要があります。それは次のように単純かもしれません:

AUDIT ALTER TABLE WHENEVER SUCCESSFUL on [schema I care about];

それは、ドロップとクリエイトを無視して、少なくとも成功した変更をキャプチャします。残念ながら、監査証跡をマイニングすることによってテーブルの履歴構造のスタックを巻き戻すことは、Oracleの読者、または変更管理パックのライセンスの演習として残されています。

DDLステートメントで呼び出されるシステムイベントトリガーを作成することで、独自の監査を行うこともできます。何が変化しているかを本当に確認したい場合は、独自のSQLパーサーを作成する必要があります。

于 2010-01-26T19:16:12.560 に答える