4

データベース コードを展開するために使用される大規模な (2000 以上の) スクリプト セットがあります。正しい依存関係の順序に準拠する単一の展開スクリプトを作成するために使用できるツールがあるかどうかを知っている人はいますか?

Redgate の SQL Compare を使用してこれを実行できることは理解していますが、SQL Server を使用している場合はこれで十分です。Schema Compare for Oracle ツールに関する限られた情報から、この機能はないようです。

4

4 に答える 4

3

私は次の順序で行きます(大まかにオブジェクトがEXPDPで抽出される順序に基づいています):

  • シノニム
  • TYPE (表の列はユーザ​​ー定義の型に依存する場合があります)
  • DB_LINK
  • 順序
  • テーブルテーブル
  • テーブル付与
  • テーブルインデックス
  • TABLE-CONSTRAINT (既存のインデックスによって適用される PK 制約が必要な場合があります)
  • テーブルコメント
  • パッケージ
  • 関数
  • 手順
  • 見る
  • テーブル参照制約
  • テーブルトリガー
  • テーブルインデックス (関数)
  • マテリアライズド ビュー
  • マテリアライズド ビュー ログ
  • 仕事
于 2011-05-05T03:06:49.573 に答える
2

スクリプトの実装方法に応じて、スクリプトを適切な順序で開始するスクリプトを作成します。

  • テーブル/シーケンス
  • ビュー/タイプ
    • (通常force、生成順序の問題または「コード」タイプまたは他のビューとタイプへの依存関係がある場合に作成されるオプションを使用)
  • パッケージ/プロシージャ/関数/トリガー
    • (これらが依存関係の順序から作成された場合でも作成されますが、無効になります)
  • 外部キーの制約

無効なオブジェクトの再コンパイルが完了したら、rdbms / admin/utlrpをキックオフして無効なオブジェクトを再コンパイルします。

于 2011-05-05T01:50:17.120 に答える
1

問題を完全に理解しているかどうかはわかりませんが、次のことをお試しください。

  1. 現在のスクリプトを実行してデータベースを作成します
  2. 空のスキーマを作成する
  3. Red Gate の Schema Compare を使用して、データベースを空のスキーマと比較します
  4. スクリプトを保存します (依存関係の順序にする必要があります)。
于 2011-05-05T10:38:55.960 に答える
0

以下は、さまざまな種類のデータベース オブジェクトに対してインストール スクリプトを実行する順序の一般的なガイドラインです。

Package specifications

Tables (with constraints and indexes) in proper order

Sequences (because they are most often used by triggers)

Triggers

Synonyms

Views (because they may reference functions, procedures, or synonyms)

Package bodies

Data (optionally disabling all constraints before loading the data and re-enabling them afterwards)

パッケージ仕様は常に有効であり、他のオブジェクトがそれらを参照する可能性があるため、最初に一覧表示されます。パッケージ本体は、他のオブジェクト タイプを参照する可能性があるため、最後に作成する必要があります。依存関係の問題のため、関数とプロシージャをパッケージに入れることをお勧めします。

于 2013-10-16T14:05:22.103 に答える