Informixでは、systablesテーブルから選択を実行し、そのバージョン列を調べて、特定のテーブルの数値バージョンを確認できます。この列は、指定されたテーブルに影響を与えるすべてのDDLステートメントで増分されます。これは、前回接続してからテーブルの構造が変更されたかどうかを確認できることを意味します。
Oracleでこれを行う同様の方法はありますか?
あまり。Oracle DBA / ALL / USER_OBJECTSビューにはLAST_DDL_TIME列がありますが、構造変更以外の操作の影響を受けます。
これ(およびそれ以上)は、テーブルへの変更を追跡するDDLトリガーを使用して行うことができます。ここに例のある興味深い記事があります。
本当にそうしたい場合は、Oracleの監査機能を使用して変更を監査する必要があります。それは次のように単純かもしれません:
AUDIT ALTER TABLE WHENEVER SUCCESSFUL on [schema I care about];
それは、ドロップとクリエイトを無視して、少なくとも成功した変更をキャプチャします。残念ながら、監査証跡をマイニングすることによってテーブルの履歴構造のスタックを巻き戻すことは、Oracleの読者、または変更管理パックのライセンスの演習として残されています。
DDLステートメントで呼び出されるシステムイベントトリガーを作成することで、独自の監査を行うこともできます。何が変化しているかを本当に確認したい場合は、独自のSQLパーサーを作成する必要があります。