2016-10-20 20 views
1

テーブルのデータ構造を比較する方法。 1.追加または削除されたテーブル。 2.テーブル内の任意の列が追加または削除されました。テーブルのデータ構造を比較する方法

私の仕事は、毎月1日にテーブルや列が追加/削除されたかどうかを確認することです。

私の計画では、SQLクエリを実行して、テーブルのリスト全体とそのデータ型(NO DATA)をコピーしてtxtファイルなどに保存し、ベースラインとして使用し、来月は同じSQLクエリを実行し、結果を取得してファイルを比較します。出来ますか?この仕事をすることができるSQLクエリを手伝ってください。

+1

これは間違った方法に近づいています。 _Any_スキーマ定義への変更は、SQLスクリプトを使用して行う必要があります。そのスクリプトをバージョン管理下に置く必要があり、変更はそれらのスクリプトを通じて展開する必要があります。そうするなら、構造を "比較"する必要はありません。 LiquibaseやFlywayのようなツールが役立ちます。 –

+0

さて、馬、私はDBAの男ではない、私はこれらの人が自分のやり方を知っていると私は今のところSQLスクリプトが必要ない。私はSQL Developerへのアクセス権を持っており、ユーザーの "ABCD"のためのデータ構造と共にテーブルのリストを取得する方法についてのクエリはまったくわかりません。私はどちらのツールも必要ありません。 –

+0

dbms_metadata.get_ddlをご覧ください –

答えて

0

このクエリでは、特定のユーザーのすべてのテーブルとその列のリストが表示されます(監査対象のユーザーのこのクエリのABCDを置き換えて、これが動作するすべてのユーザーテーブルにアクセスできるようにします)。

SELECT table_name, 
    column_name 
FROM all_tab_columns 
WHERE owner = 'ABCD' 
ORDER 
BY table_name, 
    column_id; 

これは、あなたの質問に答えるが、私は、最も顕著な変化は、すでに起こっているので、変更管理を実装する良い方法ではありませんa_horse_with_no_nameに同意する必要があります。

このクエリは非常に基本的なものであり、カラムが変更された(または他のオブジェクトタイプなどの情報がある)場合に必要なすべての情報を提供するわけではありませんが、このスクリプトの出力を以前の出力と比較して、割り当てられたタスクに対する答えを見つけることができます。

関連する問題