2011-11-29 9 views
6

CIビルド(例:Hudson)を設定し、かなりバニラのための夜間ビルド/テストサイクルの一部としてOracle 11gスキーマを作成したいJSF/JPAアプリケーション。カタログを断片化せずにCIビルド用にOracleスキーマを設定/解除する

これを行う最も明白な方法は、すべてのテーブルを削除して再作成することです。これはかなり標準的ですが(少なくともHibernate/JPAツールが自動的にあなたのために行うことですが)、私はOracle DBAにオブジェクトの作成/削除サイクルを繰り返すとOracleカタログが断片化すると警告しました。最終的には、SYSTEM表領域のデフラグ/合体ができないため、パフォーマンスの問題が発生します。

私の質問は以下のとおりです。

  • は、断片化が本物の関心事である、またはあなたは、一般的なWebアプリケーションの開発環境で心配する必要があるものではないのですか?
  • フラグメンテーションが本当に問題になる場合は、DROP TABLE/CREATE TABLEよりもOracleでスキーマを解体して再作成する方が良いでしょうか?

ありがとう!

答えて

7

は、これらのデータベース管理者は、少なくとも10グラムとし、ローカル管理表領域(LMT)これが問題になることはありませんを使用する時には、上記

を信じてはいけません。

それが断片化を引き起こしたとしても、その影響を測定できることは非常に疑問です。特に、CIに使用されるデータベースの場合は特にそうです。

+1

LMTは、「SYSTEM」テーブルスペースがローカル管理されていると仮定して、誰かが断片化していた懸念を排除すべきです。 ASMが何かを追加することは私には明らかではありません。また、ASMは政治的にも技術的にも争点となっている傾向があります。なぜなら、DBAにストレージ管理タスクをより多く処理させることができるからです。一方、LMTは古いディクショナリの管理対象表領域(DMT)を脳死していることは明らかです。 –

+0

@JustinCave:ヒントのおかげで。私はASMに関するコメントを削除しました(とにかく確かではありませんでした) –

2

私は2番目のOracleプロジェクト用にCIビルド・プロセスを実行しています。私はすべてを落として作り直すことは害を及ぼすとは思わない(上記のa_horse_with_no_nameのように)。 CIをデータベースオブジェクトに拡張しようとしていると聞いてうれしく思います。

最近のバックアップからデータベースを毎晩(またはフラッシュバックデータベースを使用して)リストアし、各CIの実行時にアプリケーションを「本番バックアップ」から現在の開発状態に移行するという方法があります。このようにして、最終的に生産に適用されるコードは、毎晩、生産と大部分同じものに対してテストされます。それは思考の少し変化ですが、あなたがすでにCIを考えているならば、あまり変化はありません。 http://dbgeni.comこれはまだ開発中ですが、CIを使用して設計し、マイグレーションを考慮してデータベースの変更を管理しています。

関連する問題