3

私は 8 人の開発者と共に、Java、Subversion、および svn に基づく Web ベースのプロジェクトを管理しています。残念ながら、DB の変更をマングリングすることは、プロジェクトにとって大きな問題です。私たちの場合、すべてのユーザーがテーブルを更新し、svn に変更スクリプトを入れるのを忘れている可能性があります。そのため、更新されていないテーブルまたはビューが原因で発生した問題を確認してデバッグするには、多くの時間がかかります。

ですから、svn などのどこかにスクリプトとしてすべての DB 変更を保持するための oracle 11g 用の方法、ツール、またはプラグインはありますか?

編集 1:データベース全体からダンプを取得しても問題は解決しません。実際の環境では、顧客データを破棄して新しいダンプに戻ることができないためです。

4

5 に答える 5

2

これはまさにあなたが必要としているものだと思います。オープン ソースのデータベース変更管理システム。リキベース。 http://www.liquibase.org/

于 2012-11-28T11:59:06.437 に答える
1

変更スクリプトは保存せず、すべてのオブジェクトを削除して再作成するスクリプトのみを保存してください。開発者は、ローカルインスタンスでこれらのスクリプトを変更して実行し、自動化された単体テストを実行してから、変更をチェックインする必要があります。

ゼロから再構築することは、常に変更スクリプトを実行するよりはるかに優れています。誰もがシステム全体を最初から簡単に再構築できるようになるまで、アプリケーションを制御することはできません。

(トランクでの開発について質問していると思いますが、ここでは小さな変更がたくさんあります。バージョン1.1からバージョン1.2への移行などのメジャーアップグレードでは、データを保持するために変更スクリプトを使用する必要があります。)

于 2012-11-29T06:20:04.847 に答える
0

Oracleによると、Liquibase よりも安価で悪いソリューション: スキーマトピックのみをエクスポートすると、コミット後のフックになる可能性があります。

  • expdp ... DUMPFILE=file.dmp CONTENT=METADATA_ONLYリポジトリ内の WC または特別な場所である dir に
  • このファイルをコミットします.dmp
于 2012-11-28T12:38:54.410 に答える
0

データベースの変更を維持するには、2 つの側面があります。1つは、おっしゃったように、古いスキーマに適用してアップグレードできるスクリプトの形式です。ただし、開発者がスクリプトを調べて解析し、最近のスキーマ変更が作業にどのように影響するかを把握するのは非常に難しいため、これは答えの一部です。

そのため、変更スクリプトに加えて、データベース メタデータの人間が読める形式のテキスト ファイルもチェックインすることをお勧めします。SchemaCrawlerは、この目的のために設計された無料のツールの 1 つであり、差分を取るように設計された形式で豊富なメタデータ情報を生成します。スキーマ メタデータのチェックインを自動化するプロセスを毎晩行うと、時間の経過に伴うデータベース メタデータの変更が追跡可能になることがわかりました。

于 2012-12-21T15:16:40.757 に答える