開発目的(この場合:Java開発者のテストデータベースとして使用するため)にスキーマ(DDLまたはDDL + data)をOracle EE(Enterprise Edition)からOracle XE(Express Edition)にエクスポートしたい)。
ソーススキーマには、Oracle XEで利用できない機能がいくつか含まれていますが、開発に必要な機能はありません。ターゲットスキーマは、XEと互換性を持つように変更できます。
特に:
これを実現する1つの方法は、ソースDDLをsqlスクリプトにエクスポートし、それを手動で変更することです。しかし、他にもっと効率的な方法があるかどうか知りたいです。
注: 同様の質問 はすでに存在しますが、私の場合、ソーススキーマとターゲットスキーマの違いをいくつか受け入れます。
すでに述べたように、Oracle Express EditionはEnterprise Editionで使用されるすべての機能をサポートしていないため、このようなスキーマの移行を行うコマンドはありません。ただし、_expdp/impdp
_の実行中に、必要なオブジェクトや機能を変更または含めたり、除外したりするために使用できるいくつかの有用なパラメーターを収集しようとしました。
- パーティション宣言は省略できます。
その場合、impdp
で_PARTITION_OPTIONS
_パラメータを使用できます。
_PARTITION_OPTIONS=[NONE | DEPARTITION | MERGE]
_。
- ストレージの宣言が省略または簡略化されている(たとえば、テーブル用に予約されている初期スペースが可能な限り少ない)。
TRANSFORM
のimpdp
パラメータを使用すると、インポートされるオブジェクトのオブジェクト作成DDLを変更できます。
_TRANSFORM = transform_name:value[:object_type]
_
- 省略または置換されたテーブルスペース宣言(XEで使用される単一のテーブルスペース)。
Oracle XEインスタンスでimpdp
を実行中に_REMAP_TABLESPACE
_パラメーターを使用できます。
_REMAP_TABLESPACE=source_tablespace:target_tablespace
_
- いくつかの高度な機能を備えたマテリアライズドビューは、単純化するか、単純なビューに置き換えることができます。
そのようなマテリアライズドビューのDDLをSQL FILEにインポートしてから、手動でビューを作成する必要があると思います。
- ジョブは省略できます。
EXCLUDE
パラメータを使用してジョブを除外できますが、現在、Data Pump Export/Importは_DBMS_JOB
_で作成されたジョブを除外/含めることができます。
- Java関数(使用頻度は低いが1つのpl/sqlパッケージに存在)を無効にするか、コンパイルエラーでインポートできます。
EXCLUDE
を使用して、このようなJavaクラスを無視できます。
_EXCLUDE=Java_CLASS
_
これで、これらのパラメーターを組み合わせて_expdp/impdp
_コマンドを作成できます。
注:含まれているすべての参照リンクはOracle 11gバージョンに関連しています。ご使用のバージョンに関連するOracleのドキュメントを参照してください。