Migration Toolkit Command Options

MigrationToolkitを実行するときに移行オプションして、移行の詳細を簡単に制御します。例、データベース内のすべてのスキーマを移行するには、コマンドに-allSchemasオプションを追加します。

$ ./runMTK.sh -allSchemas

以下のセクションには、MigrationToolkitで動作する各コマンドオプションの参照資料が含まれていリファレンス。オプションは、動作によってグループ化されます。次の表に、MigrationToolkitのオプションとそれらがグループ化されているセクションを示します。

機能:

関連オプション:

オフライン移行オプション

-offlineMigration

インポートオプション

-sourcedbtype、-targetdbtype、-schemaOnly、-dataOnly

スキーマ作成オプション

-dropSchema、-targetSchema

スキーマオブジェクト選択オプション

-allTables、-tables、

-コンストレイン、-ignoreCheckConstFilter、

-skipCKConst、-skipFKConst、

-skipColDefaultClause、

-indexes、-triggers、

-allViews、-views、

-allSequences、-sequences、

-allProcs、-procs、

-allFuncs、-funcs、

-checkFunctionBodies、

-allPackages、-パッケージソフト、

-allDomains、

-allQueues、-queues、

-allRules、

移行オプション

-truncLoad、-enableConstBeforeDataLoad、

-retryCount、-safeMode、-fastCopy、

-analyze、vacuumAnalyze、-replaceNullChar、

-copyDelimiter、-batchSize、

-cpBatchSize、-lobBatchSize、

-fetchSize、-filterProp

-customColTypeMapping、-customColTypeMappingFile

オラクル固有のオプション

-allUsers、-users、

-allProfiles、-プロファイル、

-importPartitionAsTable、

-objectTypes、

-copyViaDBLinkOra、-allDBLinks

-allSynonyms、-allPublicSynonyms、

-allPrivateSynonyms、-useOraCase、

-skipUserSchemaCreation

その他のオプション

-ヘルプ、-logdir、-logFileCount、-logFileSize、-logBadSQL-verbose、-バージョン

オフライン移行オプション

コマンドラインで -offlineMigration オプションを指定すると、MigrationToolkitは*オフライン* 移行を実行します。オフライン移行中、MigrationToolkitは選択された各オブジェクトの定義を読み取り、後で実行されるときにPostgresの各オブジェクトを複製するSQLスクリプトを作成します。

注:次の例は、LinuxでMigrationToolkitを呼び出す方法を示しています。WindowsでMigrationToolkitを呼び出すには、 runMTK.sh コマンドの代わりに runMTK.bat コマンドを使用します。

スキーマとデータの両方のオフライン移行を実行するには、 ‑offlineMigration キーワードを指定し、その後にスキーマ名前を指定します。

$ ./runMTK.sh -offlineMigration <schema_name>

各データベースオブジェクト定義は、ユーザーのホームフォルダー内のスキーマ名前とオブジェクトタイプから派生した名前を持つ個別のファイルに保存されます。代替ファイルの宛先を指定するには、 ‑offlineMigration オプションの後にディレクトリ名前を含めます。

$ ./runMTK.sh -offlineMigration <file_dest> <schema_name>

スキーマオブジェクトのみのオフライン移行(空のテーブルの作成)を実行するには、MigrationToolkitを呼び出すときに ‑offlineMigration キーワードに加えて ‑schemaOnly キーワードを指定します。

$ ./runMTK.sh -offlineMigration -schemaOnly <schema_name>

データのみのオフライン移行(スキーマオブジェクト定義を省略)を実行するには、MigrationToolkitを呼び出すときに ‑dataOnly キーワードと ‑offlineMigration キーワードを指定します

$ ./runMTK.sh -offlineMigration -dataOnly <schema_name>

デフォルトでは、データはCOPYフォーマットで書き込まれます。データをプレーンなSQLフォーマットで書き込むには、 ‑safeMode キーワードを含めます。

$ ./runMTK.sh -offlineMigration -dataOnly -safeMode <schema_name>

デフォルトでは、テーブルデータを含むオフライン移行を実行すると、テーブルごとに個別のファイルが作成されます。マルチプルのテーブルのデータを含む単一のファイルを作成するには、 ‑singleDataFile キーワードを指定します。

./runMTK.sh -offlineMigration -dataOnly -singleDataFile -safeMode <schema_name>

ノート:-singleDataFile オプションは、プレーンSQLフォーマットでデータを移行する場合にのみ使用できます。 ‑singleDataFile オプションを含める場合は、 -safeMode キーワードを含める必要があります。

オフライン移行スクリプトの実行

edb-psql(またはpsql)コマンドラインを使用して、オフライン移行中に生成されたスクリプトを実行移行。次の例では<EDBPostgresAdvancedServerに保存されている(ACCTG*名前付けの)新しいデータベースに(*時間 名前付けの)スキーマを復元について説明します。

  1. createdb コマンドを使用して acctg データベースを作成し、そこに移行したデータベースオブジェクトを復元します。

    createdb -U enterprisedb acctg

  2. edb-psqlを使用して新しいデータベースに接続します。

    edb-psql -U enterprisedb acctg

  3. /i メタコマンドを使用して、オブジェクト定義を作成する移行スクリプトを呼び出します。

    acctg=# /i ./mtk_hr_ddl.sql

  4. -offlineMigration コマンドに ‑singleDataFile キーワードが含まれている場合、 mtk_hr_data.sql スクリプトには、新しいターゲットデータベース内のすべてのオブジェクトを再作成するために必要なコマンドが含まれます。次のコマンドでデータベースを作成します。

    acctg=# /i ./mtk_hr_data.sql

インポートオプション

デフォルトでは、MigrationToolkitはソースデータベースがオラクルで、ターゲットデータベースがEDBPostgresAdvancedServerと想定しています。 ‑sourcedbtype および -targetdbtype キーワードを含めて、デフォルト以外のソースまたはターゲットデータベースを指定します。

デフォルトでは、MigrationToolkitはスキーマを移行するときにデータとオブジェクト定義の両方をインポートします。または、データまたはオブジェクト定義のいずれかをインポートすることもできます。

-sourcedbtype <source_type>

-sourcedbtypeオプションは、ソースデータベースタイプを指定します。 source_type は、 mysql 、 oracle 、 sqlserver 、 sybase 、 postgresql または enterprisedb のいずれかの値になります。 source_type は大文字小文字ません。デフォルトでは、 source_type は oracle です。

-targetdbtype <target_type>

-targetdbtypeオプションは、ターゲットデータベースタイプを指定します。 target_type は、 enterprisedb 、 postgres 、または postgresql の値のいずれかです。 target_type は大文字小文字ません。デフォルトでは、 target_type は enterprisedb です。

-schemaOnly

このオプションは、スキーマ定義をインポートし、選択したすべてのスキーマオブジェクトをターゲットデータベース。このオプションは、 ‑dataOnly オプションと併用できません。

-dataOnly

このオプションはデータのみをコピーします。 -tables オプションを使用すると、MigrationToolkitは選択したテーブルのデータのみをインポートます(以下の使用方法の詳細を参照)。このオプションは、 -schemaOnly オプションと併用できません。

スキーマ作成オプション

デフォルトでは、MigrationToolkitはソーススキーマオブジェクトまたはデータ、あるいはその両方を同じ名前のスキーマにインポートします。ターゲットスキーマが存在しない場合、MigrationToolkitは新しいスキーマを作成します。または、 ‑targetSchema option を介してカスタムスキーマ名前を指定できます。次のオプションを使用して、既存のスキーマを削除し、新しいスキーマを作成することを選択できます。

-dropSchema [true|false]

真に設定すると、MigrationToolkitは既存のスキーマ(およびそのスキーマ内のオブジェクト)を削除し、新しいスキーマを作成します。(デフォルトでは、 -dropSchema は false です)。

-targetSchema <schema_name>

-targetSchema オプションを使用して、移行されたスキーマの名前を指定します。マルチプルのスキーマを移行する場合は、各スキーマの名前を、間にスペース文字を入れずにコンマ区切りリストで指定します。コマンドラインが -targetSchema オプションが含まれていない場合は、新しいスキーマの名前は、ソース・スキーマの名前と同じになります。

ターゲットスキーマ名として information-schema 、 dbo 、 sys 、または pg_catalog を指定することはできません。これらのスキーマ名は、EDBPostgresAdvancedServerのメタデータストレージ用に予約ています。

スキーマオブジェクト選択オプション

次のオプションを使用して、移行する特定のスキーマオブジェクトを選択します。

-allTables

ソーススキーマからすべてのテーブルをインポートします。

-tables <table_list>

選択したテーブルをソーススキーマからインポートします。 table_list は、テーブル名(例:-tables emp 、 dept 、 acctg )のコンマ区切りリスト(スペース文字を挿入しない)です。

-constraints

テーブルコンストレインをインポートします。このオプションは、スキーマ全体をインポートするとき、または -allTables または -tables <table_list> オプションを指定するときのみ有効です。

-ignoreCheckConstFilter

デフォルトでは、MigrationToolkitは、Sybaseデータベースからのチェックコンストレインとデフォルト句の移行を実装しません。Sybaseデータベースから移行コンストレインおよびデフォルト条項に -constraints パラメータを指定するとき ‑ignoreCheckConstFilter パラメータを含めます。

-skipCKConst

チェック制約の移行を省略しコンストレイン。このオプションは、ターゲットデータベースでサポートされていない(ソースデータベースの)ビルトイン関数に基づくチェックコンストレインを移行する場合に役立ちます。

このオプションは、スキーマ全体をインポートする場合、または -allTables または -tables <table_list> オプションが指定されている場合にのみ有効です。

-skipFKConst

外部キーコンストレインの移行を省略します。このオプションは、スキーマ全体をインポートする場合、または -allTables または -tables <table_list> オプションが指定されている場合にのみ有効です。

-skipColDefaultClause

列の DEFAULT 句の移行を省略し移行。

-indexes

テーブルインデックスをインポートします。このオプションは、スキーマ全体をインポートするとき、または -allTables または -tables <table_list> オプションが指定されているときに有効です。

-triggers

テーブルトリガーをインポートします。このオプションは、スキーマ全体をインポートするとき、または allTables または -tables <table_list> オプションが指定されているときに有効です。

-allViews

ソーススキーマからビューをインポートします。このオプションは、ソースから動的*および* マテリアライズドビューの両方を移行することにノートてください。(オラクルおよびPostgresのマテリアライズドビューがサポートされています。)

-views <view_list>

指定されたマテリアライズドビューまたは動的ビューをソーススキーマからインポートします。(オラクルおよびPostgresのマテリアライズドビューがサポートされています。) view_list は、ビュー名(たとえば、 -views all_emp 、 mgmt_list 、 acct_list )のコンマ区切りリスト(スペース文字なし)です。

-allSequences

ソーススキーマからすべてのシーケンスをインポートします。

-sequences <sequence_list>

選択したシーケンスをソーススキーマからインポートします。 <sequence_list> は、シーケンス名のコンマ区切りリスト(スペース文字を介在させない)です。

-allProcs

ソーススキーマからすべてのストアドプロシージャをインポートします。

-procs <procedures_list>

選択したストアドプロシージャをソーススキーマからインポートします。 procedures_list は、プロシージャ名のコンマ区切りリスト(スペース文字を介在させない)です。

-allFuncs

ソーススキーマからすべての関数をインポートします。

-funcs <function_list>

選択した関数をソーススキーマからインポートします。 function_list は、ファンクション名のコンマ区切りリスト(間にスペース文字を入れない)です。

-checkFunctionBodies [true/false]

false の場合、ファンクションの作成中にファンクション本体のバリデーションを無効にします(ファンクションに前方参照が含まれる場合のエラーを回避するため)。デフォルト値は true です。

-allPackages

ソーススキーマからすべてのパッケージソフトをインポートします。

-packages <package_list>

選択したパッケージソフトをソーススキーマからインポートします。 package_list は、パッケージ名のコンマ区切りリスト(間にスペース文字を入れない)です。

-allDomains

ソースデータベースからすべてのドメイン、列挙型、および複合型をインポートします。このオプションは、ソースとターゲットの両方がPostgresホストに保存されている場合にのみ有効です。

-allQueues

ソーススキーマからすべてのキューをインポートします。これらは、DBMS_AQおよびDBMS_AQADMビルトインパッケージソフトによって作成および管理されるキューです。オラクルがソースデータベースの場合、 -objectTypes オプションも指定する必要があります。EDBPostgresAdvancedServerがソースデータベースの場合、 -allDomains および -allTables オプションも指定する必要があります。(オラクルおよびEDBPostgresAdvancedServerキューがサポートされています。)

-queues <queue_list>

選択したキューをソーススキーマからインポートします。 queue_list は、キュー名のコンマ区切りリスト(間にスペース文字を入れない)です。これらは、DBMS_AQおよびDBMS_AQADMビルトインパッケージソフトによって作成および管理されるキューです。オラクルがソースデータベースの場合、 -objectTypes オプションも指定する必要があります。EDBPostgresAdvancedServerがソースデータベース場合、 -allDomains および -allTables オプションも指定する必要があります。(オラクルおよびEDBPostgresAdvancedServerキューがサポートされています。)

-allRules

ソースデータベースからすべてのルールをインポートします。このオプションは、ソースとターゲットの両方がPostgresホストに保存されている場合にのみ有効です。

移行オプション

以下にリストされた移行オプションを使用して、移行プロセスの詳細を制御します。

-loaderCount [<value>]

-loaderCount オプションを使用して、データのインポート時にMigrationToolkitが使用する必要のある並列スレッドの数を指定します。ソースデータベースは、<ラージ>のデータが含まれている場合、このオプションが特に有用であり、(移行ツールキットを実行している)Postgresのホストは、ハイエンドCPUとRAMリソースを有しています。 value にはゼロ以外の正の数値を指定できますが、 value はCPUコアの数を超えないようにすることをお勧めします。デュアルコアCPUでは、 2 の最適な value が必要です。

value の大きラージ指定すると、移行ツールキットは 'Out of heap space' エラーが発生、終了する可能性がありますのでごノートください。

-truncLoad

新しいデータをインポートする前に、テーブルからデータを切り捨てます。このオプションは、 -dataOnly オプションと組み合わせてのみ使用できます。

-enableConstBeforeDataLoad

パーティション化されていないソーステーブルがパーティション化されたテーブルにマップされる場合は、 -enableConstBeforeDataLoad オプションを含めます。このオプションは、データ移行の前に、ターゲットテーブルのすべてのトリガー(データを個々のパーティションにリダイレクトするトリガーを含む)を有効にします。 -enableConstBeforeDataLoad は、 -truncLoad パラメータも指定されている場合にのみ有効です。

-retryCount [<value>]

複数スキーマの移行を実行している場合、スキーマ間の依存関係のために最初の移行試行中に移行に失敗したオブジェクトは、後続の移行中に正常に移行する場合があります。移行ツールキットは、最初の移行の試行中に失敗したオブジェクトを移行するmakeます試行回数を指定するには、 -retryCount オプションを使用します。 0 より大きい value を指定します。デフォルト値は 2 です。

-safeMode

-safeMode オプションを含めると、MigrationToolkitは移行された行をコミットします。移行がすべてのレコードの転送に失敗した場合、障害点の前に挿入された行はターゲットデータベースに残ります。

-fastCopy

-fastCopy オプションを含めると、MigrationToolkitがWALロギングをバイパスして、最適化された方法でCOPYオペレーションを実行するように指定されます。デフォルトでは無効になっています。 -fastCopy オプションを使用することを選択した場合、移行が中断された場合、移行れたデータは(ターゲットデータベースで)回復できない可能性があります。

-replaceNullChar <value>

MigrationToolkitは、値がNULLの列のインポートを適切にサポートします。

ただし、MigrationToolkitは、JDBC接続プロトコルでの NULL 文字値(埋め込みバイナリゼロ0x00)のインポートをサポートしていません。 NULL 文字を含むデータをインポートする場合は、 -replaceNullChar オプションを使用して、 NULL 文字を単一の non-NULL 置換文字に置き換えます。置換文字を引用符またはアポストロフィで囲まないでください。

データを移行したら、SQLステートメントを使用して、 -replaceNullChar で指定された文字をバイナリのゼロに置き換えます。

-analyze

-analyze オプションを含めて、ターゲットデータベースに対してPostgres ANALYZE オペレーションを呼び出します。オプティマイザは、 ANALYZE オペレーションによって収集された統計を参照し、情報を利用して効率的なクエリープランをコンストラクトます。

-vacuumAnalyze

-vacuumAnalyze オプションを含めて、ターゲットデータベースに対して VACUUM 操作と ANALYZE 操作の両方を呼び出します。オプティマイザは、 ANALYZE オペレーションによって収集された統計を参照し、情報を利用して効率的なクエリープランをコンストラクトます。 VACUUM オペレーションは、ターゲットデータベースの無効なタプルによって占有されているストレージスペースを再利用します。

-copyDelimiter

テーブルデータをローディングときに、コピーコマンドでデリミタとして使用する単一の文字を指定します。デフォルト値は '/t' ( tab )です。

-batchSize

一括挿入のバッチサイズを指定します。有効な値は 1-1000 です。デフォルトのバッチサイズは 1000 です。 Out of Memory 例外が発生した場合、 -batchSize の値を減らします。

-cpBatchSize

COPY コマンドで使用するバッチサイズをメガバイトで指定します。 0 より大きい値はすべて有効です。デフォルトのバッチサイズは 8 MB です。

-lobBatchSize

LOBデータ型のバッチでロードする行数を指定します。 BYTEA 、 BLOB 、または CLOB などのラージオブジェクトタイプ( LOB )列を含むテーブルのデータ移行は、デフォルトで一度に1行ずつ実行されます。これは、個々の LOB 列が数百メガバイトのデータを保持している場合のヒープスペースエラーを回避するためです。 LOB 列の平均データサイズが下限の場合、各バッチの行数を 0 より大きい値で指定することにより、 LOB バッチサイズをカスタマイズます。

-fetchSize

-fetchSize オプションを使用して、結果セットでフェッチされる行の数を指定します。指定された -fetchSize が大きラージ場合は、 Out of Memory 例外が発生する可能性があります。ラージテーブルを移行するときにこの落とし穴を避けるために、 -fetchSize オプションを含めます。デフォルトのフェッチサイズはJDBCドライバの実装に固有であり、データベースによって異なります。

MySQLユーザーのノート:デフォルトでは、MySQLJDBCドライバは、1つのネットワークラウンドトリップで、テーブルにあるすべての行をクライアントアプリケーション(MigrationToolkit)にフェッチします。この動作は、ラージテーブルで使用可能なメモリを簡単に超える可能性があります。 'out of heap space' エラーが発生した場合は、コマンドライン引数として -fetchSize 1 を指定して、MigrationToolkitにテーブルデータを1行ずつ強制的にロードせます。

-filterProp <file_name>

file_name は、キー=valueペアのコンストレインを含むファイルの名前を指定します。データベースから読み取られた各レコードは、制約に対して評価されコンストレイン。コンストレインを満たすものは移行されます。ペアの左側にはテーブル名前がリストされます。テーブル名前は not がスキーマ修飾されている必要があることにノートしてください。右側は、移行される行に対して真でなければならない条件を指定します。例、プロパティ>に次のコンストレインを含みます。

countries=country_id<>'AR'

AR に等しくない country_id 値を持つ国のみを移行します。この制約は国テーブルに適用されます。

マルチプルのテーブルの条件を指定することもできます。ただし、各テーブルの条件は、プロパティファイルの新しい行にある必要があります。

例:

プロパティファイルの次のエントリは、EMPLOYEESテーブルとDEPARTMENTSテーブルからのみ関連データを移行します。

EMPLOYEES=(LAST_NAME IN ('Grant','Weiss') AND PHONE_NUMBER LIKE '650%')

DEPARTMENTS=(DEPARTMENT_ID BETWEEN 10 AND 30)

-customColTypeMapping <column_list>

カスタム型マッピングを使用して、移行された列のデータタイプを変更します。各ペアの左側は、正規表現で列を指定します。各ペアの右側には、列が想定するデータタイプの名前を指定します。セミコロンで区切られた column_list にマルチプルのペアを含めることができます。例、次のカスタムマッピングエントリーを使用し、名前が終了 ID で INTEGER を入力するための任意の列をマップします:

.*ID=INTEGER

カスタムマッピングは、列がテーブル修飾されていない限り、条件にマッチするすべてのテーブル列に適用されます。

'//' 文字はエスケープ文字列として機能します。 '.' は正規表現の予約文字である予約、Linuxでは '//.' を使用して '.' 文字を表します。例、 EMP テーブルの EMP_ID 列から行を選択するために、カスタムマッピングを使用するために、次のカスタムマッピングエントリーを指定します。

EMP//.EMP_ID=INTEGER

Windows、 '/.' を使用して '.' 文字を表します。

EMP/.EMP_ID=INTEGER

-customColTypeMappingFile <property_file>

property_file にマルチプルのカスタムタイプマッピングを含めることができます。キー=valueのペアで、ファイル内の各エントリーを個別の行に指定します。各ペアの左側は、正規表現で列を選択します。各ペアの右側には、列が想定するデータタイプの名前を指定します。

オラクル固有のオプション

次のオプションは、ソースデータベースがオラクルの場合にのみ適用されます。

-objectTypes

runMTK.sh コマンドの最後に指定されたスキーマリストからユーザー定義のオブジェクトタイプをインポートします。

-allUsers

ソースデータベースからすべてのユーザーとロールをインポートします。‑allUsersオプションは、オラクルデータベースからEDBPostgresAdvancedServerデータベースに移行する場合にのみサポートされることにノートしてください。

-users <user_list>

選択したユーザーまたはロールをソースオラクルデータベースからインポートします。 user_list は、ユーザ/ロール名(例:-users MTK, SAMPLE, acctg )のコンマ区切りリスト(間にスペース文字を入れない)です。 -users オプションは、オラクルデータベースからEDBPostgresAdvancedServerデータベースに移行する場合にのみサポートされることにノートしてください。

-allProfiles

すべてのカスタム(つまり、ユーザー作成)プロファイルをソースデータベースからインポートします。 DEFAULT や MONITORING_PROFILE などの他のオラクル非カスタムプロファイルはインポートされません。

インポートされたプロファイルの場合、プロファイルに関連付けられているだけで次のパスワードのパラメータがインポートされます。

FAILED_LOGIN_ATTEMPTS

PASSWORD_LIFE_TIME

PASSWORD_REUSE_TIME

PASSWORD_REUSE_MAX

PASSWORD_LOCK_TIME

PASSWORD_GRACE_TIME

PASSWORD_VERIFY_FUNCTION

オラクルリソースパラメータなど、他のすべてのプロファイルパラメータはインポートされません。 SRC_DB_USER で指定されたオラクルデータベースユーザには、オラクルデータディクショナリビュー DBA_PROFILES に対する SELECT 権限が必要です。

‑allProfiles オプションは、オラクルデータベースからEDBPostgresAdvancedServerデータベースに移行する場合にのみサポートされることにノートしてください。

-profiles <profile_list>

選択したカスタム(つまり、ユーザー作成)プロファイルをソースオラクルデータベースからインポートします。 profile_list は、プロファイル名(例:-profiles ADMIN_PROFILE,USER_PROFILE )のコンマ区切りリスト(スペース文字を入れない)です。 DEFAULT や MONITORING_PROFILE などのオラクル非カスタムプロファイルはインポートされません。

-allProfiles オプションと同様に、パスワードパラメーターのみがインポートされます。 SRC_DB_USER で指定されたオラクルデータベースユーザには、オラクルデータディクショナリビュー DBA_PROFILES に対する SELECT 権限が必要です。

-profiles オプションは、オラクルデータベースからEDBPostgresAdvancedServerデータベースに移行する場合にのみサポートされることにノートしてください。

-importPartitionAsTable <table_list>

-importPartitionAsTable パラメータを含めて、オラクルホスト上にあるパーティション化されたテーブルの内容を単一のパーティション化されていないテーブルにインポートします。 table_list は、テーブル名(たとえば、 -importPartitionAsTable emp,dept,acctg )のコンマ区切りリスト(間にスペース文字を入れない)です。

-copyViaDBLinkOra

dblink_ora モジュールは、SQLレベルでEDBPostgresAdvancedServerからOracleへの接続を提供します。 dblink_ora はバンドルされ、EDBPostgresAdvancedServerデータベースインストレーションのパートとしてインストールされます。 dblink_ora は、 COPY API メソッドを使用してデータベース間でデータを転送します。このメソッドは、 JDBC COPY メソッドよりもかなり高速です。

次の例では、 dblink_ora COPY API を使用して、 HR スキーマからすべてのテーブルを移行します。

$./runMTK.sh -copyViaDBLinkOra -allTables HR

ターゲットEDBPostgresAdvancedServerデータベースに dblink_ora がインストールおよび構成されている必要があります。 dblink_ora については、「オラクル開発者ガイドのデータベース互換性ガイド<<ahref="https://www.enterprisedb.com/docs/en/11.0/EPAS_Oracompat_Guide_v11/Database_Compatibility_for_Oracle_Developers_Guide.1.124.html#">https://www.enterprisedb.com/docs/en/11.0/EPAS_Oracompat_Guide_v11/Database_Compatibility_for_Oracle_Developers_Guide.1.124.html#</a>>`_」を参照して<ahref="https://www.enterprisedb.com/docs/en/11.0/EPAS_Oracompat_Guide_v11/Database_Compatibility_for_Oracle_Developers_Guide.1.124.html#">ください</a>。

-allDBLinks [link_Name_1=password_1,link_Name_2=password_2,...]

オラクルデータベースリンクを移行するには、このオプションを選択します。ソースデータベース内の各リンク接続のパスワード情報は暗号化されているため、指定されない限り、ダミーパスワード( edb )に置き換えられます。

接続ユーザのダミーパスワードとして edb を使用してすべてのデータベースリンクを移行するには:

$./runMTK.sh -allDBLinks HR

または、 name=value ペアのコンマ区切りリスト(スペース文字なし)を使用して、各データベースリンクのパスワードを指定できます。ペアの左側にリンク名前を、右側にパスワード値を指定します。

コマンドラインで指定された実際のパスワードですべてのデータベースリンクを移行するには:

$./runMTK.sh -allDBLinks LINK_NAME1=abc,LINK_NAME2=xyz HR

MigrationToolkitは、EnterpriseDBで現在サポートされているデータベースリンクタイプのみを移行します。これには、パブリックおよびプライベートタイプの固定ユーザリンクが含まれます。

-allSynonyms

すべてのパブリックシノニムとプライベートシノニムをオラクルデータベースからEDBPostgresAdvancedServerデータベースに移行するには、 -allSynonyms オプションを含めます。同じ名前の同義語がターゲットデータベースに既に存在する場合、既存の同義語は移行されたバージョンに置き換えられます。

-allPublicSynonyms

すべてのパブリックシノニムをオラクルデータベースからEDBPostgresAdvancedServerデータベースに移行するには、 -allPublicSynonyms オプションを含めます。同じ名前の同義語がターゲットデータベースに既に存在する場合、既存の同義語は移行されたバージョンに置き換えられます。

-allPrivateSynonyms

すべてのプライベートシノニムをオラクルデータベースからEDBPostgresAdvancedServerデータベースに移行するには、 -allPrivateSynonyms オプションを含めます。同じ名前の同義語がターゲットデータベースに既に存在する場合、既存の同義語は移行されたバージョンに置き換えられます。

-useOraCase

-useOraCase オプションを含めて、オラクルデータベースからEDBPostgresAdvancedServerデータベースに移行するときに、すべてのデータベースオブジェクトのオラクルのデフォルトの大文字の命名規則を保持します。

テーブル、ビュー、シーケンス、プロシージャ、関数、トリガー、パッケージソフトなどの大文字の命名規則は保持されます。これらのデータベースオブジェクトの場合、大文字の命名規則はa)データベースオブジェクトの名前、b)列名、キー名、インデックス名、制約、等、表およびビューの、C)ビューの SELECT 列リスト、およびd)プロシージャまたはファンクションヘッダーのパートであるパラメータ名。

注釈

プロシージャ、ファンクション、triggerまたはpackageの手続きコード本体内で、エラーなしでプログラムを適切に実行ために、識別子参照を手動で編集するオーダーがある場合があります。このような修正は、発生した場合と発生していない場合がある識別子参照の適切な大文字小文字変換に関するものです。

注釈

-useOraCase オプションを指定する場合、 -skipUserSchemaCreation オプションも指定する必要がある場合があります。詳細については、このセクションの -skipUserSchemaCreation オプションの説明を参照してください。

MigrationToolkitのデフォルトの動作( -useOraCase オプションを使用しない場合)では、データベースオブジェクト名は引用符ずにオラクルから抽出されます(データベースオブジェクトがオラクルで引用符れて明示的に作成された場合を除く)。以下は、 -offlineMigration オプションを使用してMigrationToolkitによって生成されたTABLEコマンドの一部です。

CREATE TABLE DEPT (
    DEPTNO NUMBER(2) NOT NULL,
    DNAME VARCHAR2(14),
    LOC VARCHAR2(13)
);
ALTER TABLE DEPT ADD CONSTRAINT DEPT_PK PRIMARY KEY (DEPTNO);
ALTER TABLE DEPT ADD CONSTRAINT DEPT_DNAME_UQ UNIQUE (DNAME);

このテーブルがEDBPostgresAdvancedServerに移行され、作成されると、引用されていないオブジェクト名はすべて小文字に変換されるため、テーブルは次のようにEDBPostgresAdvancedServerれます。

Table "edb.dept"
Column  | Type                  | Modifiers
--------+-----------------------+-----------
deptno  | numeric(2,0)          | not null
dname   | character varying(14) |
loc     | character varying(13) |
Indexes:
    "dept_pk" PRIMARY KEY, btree (deptno)
    "dept_dname_uq" UNIQUE CONSTRAINT, btree (dname)

EDBPostgresAdvancedServerアプリケーションが、引用符で囲まれた大文字の識別子を使用して移行されたデータベースオブジェクトを参照いる場合、データベースオブジェクト名が小文字になっているため、アプリケーションは失敗します。

usepostcase=# SELECT * FROM "DEPT";
ERROR: relation "DEPT" does not exist
LINE 1: SELECT * FROM "DEPT";

アプリケーションが引用符付きの大文字の識別子を使用する場合は、 -useOraCase オプションを使用して移行を実行します。DDLは、すべてのデータベースオブジェクト名を引用符で囲みます。

CREATE TABLE "DEPT" (
    "DEPTNO" NUMBER(2) NOT NULL,
    "DNAME" VARCHAR2(14),
    "LOC" VARCHAR2(13)
);
ALTER TABLE "DEPT" ADD CONSTRAINT "DEPT_PK" PRIMARY KEY ("DEPTNO");
ALTER TABLE "DEPT" ADD CONSTRAINT "DEPT_DNAME_UQ" UNIQUE ("DNAME");

このテーブルをEDBPostgresAdvancedServerに移行して作成すると、すべてのオブジェクト名が大文字で維持されるため、テーブルは次のようにEDBPostgresAdvancedServerれます。

Table "EDB.DEPT"
Column  | Type                  | Modifiers
--------+-----------------------+-----------
DEPTNO  | numeric(2,0)          | not null
DNAME   | character varying(14) |
LOC     | character varying(13) |
Indexes:
    "DEPT_PK" PRIMARY KEY, btree ("DEPTNO")
    "DEPT_DNAME_UQ" UNIQUE CONSTRAINT, btree ("DNAME")

アプリケーションは、引用符で囲まれた大文字の名前を使用してオブジェクトにアクセスできます。

useoracase=# SELECT * FROM "DEPT";
DEPTNO  | DNAME      | LOC
--------+------------+----------
10      | ACCOUNTING | NEW YORK
20      | RESEARCH   | DALLAS
30      | SALES      | CHICAGO
40      | OPERATIONS | BOSTON
(4 rows)

-skipUserSchemaCreation

オラクルユーザが移行されると、そのロールがまだ存在しない場合、オラクルユーザのターゲットデータベースサーバにロール(ユーザ名前)が作成されます。ロール名前は小文字で作成されます。新しいロールが作成されると、同じ名前のスキーマも小文字で作成されます。

-skipUserSchemaCreation オプションを指定すると、移行されたオラクルユーザ名前の自動スキーマ作成が防止されます。このオプションは、 -useOraCase オプションが指定されている場合に、1つのスキーマ名前が小文字で、もう1つが大文字である場合を除き、同じ名前の2つのスキーマが作成されないようにオーダー場合に特に役立ちます。 -useOraCase オプションを指定すると、MigrationToolkitが呼び出されたときにオプションリストに従って指定されたソーススキーマの大文字のオラクル命名規則でスキーマが作成されます。

したがって、 -useOraCase オプションが -skipUserSchemaCreation オプションなしで指定された場合、ターゲットデータベースは、一方が小文字でもう一方が大文字の2つの同じ名前付けのスキーマを持つことになります。 -useOraCase オプションが -skipUserSchemaCreation オプションと共に指定されている場合、ターゲットデータベースには大文字のスキーマのみが含まれます。

その他のオプション

移行ツールキットのヘルプとバージョンをビューするには、以下に挙げる移行>を使用します。このセクションのオプションを使用して、MigrationToolkitのフィードバックとロギングオプションを制御することもできます。

-help

アプリケーションのコマンドラインの使用情報を表示します。

-logDir <log_path>

ログファイルが書き込まれる場所を指定するには、このオプションを含めます。 log_path は、アプリケーションログファイルが保存されるパスを表します。デフォルトでは、Linuxではログファイルは次の場所に書き込まれます。

$HOME/.enterprisedb/migration-toolkit/logs

Windowsでは、ログファイルは次の場所に保存されます。

%HOMEDRIVE%%HOMEPATH%/.enterprisedb/migration-toolkit/logs

-logFileCount <file_count>

ログファイルのローテーションで使用されるファイルの数を指定するには、このオプションを含めます。値0を指定すると、ログファイルのローテーションが無効になり、単一のログファイルが作成されます(logFileSizeオプションを使用して指定された値に達すると、切り捨てられます)。 file_count は 0 以上でなければなりません。デフォルトは 20 です。

-logFileSize <file_size>

新しいログファイルにローテーションする前に、このオプションを含めて、最大ファイルサイズ制限(メガバイト単位)を指定します。 file_size は0より大きいなければなりません。デフォルトは 50 MB です。

-logBadSQL

失敗したオブジェクトのスキーマ定義(DDLスクリプト)をファイルに保存するには、このオプションを含めます。ファイルは、エラーログに使用されるのと同じパスの下に保存され、 schema_name がスキーマの名前で、 timestamp がMigrationToolkit実行のタイムスタンプである mtk_bad_sql_<schema_name_timestamp>.sql のフォーマットで名前付けます。

-verbose [on|off]

標準出力にアプリケーションログメッセージを表示します(デフォルトでは、詳細は on です)。

-version

MigrationToolkitバージョンを表示します。

例

次の例は、オラクルからEDBPostgresAdvancedServerへの移行の実行を示しています。

以下は、 toolkit.properties ファイルのコンテンツです。

SRC_DB_URL=jdbc:oracle:thin:@192.168.2.6:1521:xe
SRC_DB_USER=edb
SRC_DB_PASSWORD=password

TARGET_DB_URL=jdbc:edb://localhost:5444/edb
TARGET_DB_USER=enterprisedb
TARGET_DB_PASSWORD=password

次のコマンドは、MigrationToolkitを呼び出します。

$ ./runMTK.sh EDB

Running EnterpriseDB Migration Toolkit (Build 48.0.0) ...
Source database connectivity info...
conn =jdbc:oracle:thin:@192.168.2.6:1521:xe
user =edb
password=*****\*
Target database connectivity info...
conn =jdbc:edb://localhost:5444/edb
user =enterprisedb
password=*****\*
Connecting with source Oracle database server...
Connected to Oracle, version 'Oracle Database 10g Express Edition
Release 10.2.0.1.0 - Production'
Connecting with target EnterpriseDB database server...
Connected to EnterpriseDB, version '9.4.0.0'
Importing redwood schema EDB...
Creating Schema...edb
Creating Sequence: NEXT_EMPNO
Creating Tables...
Creating Table: BAD_TABLE
MTK-15013: Error Creating Table BAD_TABLE
DB-42704: ERROR: type "binary_double" does not exist at position 58
-- CREATE TABLE BAD_TABLE (
-- F1 NUMBER NOT NULL,
-- Line 3: F2 BINARY_DOUBLE
-- ^
Creating Table: DEPT
Creating Table: EMP
Creating Table: JOBHIST
Creating Table: "MixedCase"
Creating Table: "lowercase"
Created 5 tables.
Loading Table Data in 8 MB batches...
Loading Table: DEPT ...
[DEPT] Migrated 4 rows.
[DEPT] Table Data Load Summary: Total Time(s): 0.147 Total Rows: 4
Loading Table: EMP ...
[EMP] Migrated 14 rows.
[EMP] Table Data Load Summary: Total Time(s): 0.077 Total Rows: 14
Loading Table: JOBHIST ...
[JOBHIST] Migrated 17 rows.
[JOBHIST] Table Data Load Summary: Total Time(s): 0.042 Total Rows: 17
Total Size(MB): 9.765625E-4
Loading Table: "MixedCase" ...
["MixedCase"] Table Data Load Summary: Total Time(s): 0.098 Total Rows:0
Loading Table: "lowercase" ...
["lowercase"] Table Data Load Summary: Total Time(s): 0.066 Total Rows:0
Data Load Summary: Total Time (sec): 0.806 Total Rows: 35 Total
Size(MB): 0.001
Creating Constraint: DEPT_PK
Creating Constraint: DEPT_DNAME_UQ
Creating Constraint: EMP_PK
Creating Constraint: JOBHIST_PK
Creating Constraint: SYS_C008958
MTK-15001: Error Creating Constraint SYS_C008958
DB-42P01: com.edb.util.PSQLException: ERROR: relation "bad_table" does
not exist
Creating Constraint: EMP_REF_DEPT_FK
Creating Constraint: EMP_SAL_CK
Creating Constraint: JOBHIST_REF_DEPT_FK
Creating Constraint: JOBHIST_REF_EMP_FK
Creating Constraint: JOBHIST_DATE_CHK
Creating Trigger: USER_AUDIT_TRIG
Creating Trigger: EMP_SAL_TRIG
MTK-13009:Warning! Skipping migration of trigger DROP_TRIGGER, currently
non-table triggers are not supported in target database.
Creating View: SALESEMP
Creating Function: EMP_COMP
Creating Package: EMP_ADMIN
MTK-16005:Package Body is Invalid, Skipping...
Schema EDB imported with errors.
MTK-12001: The user/role migration failed due to insufficient
privileges.
Grant the user SELECT privilege on the following Oracle catalogs:
DBA_ROLES
DBA_USERS
DBA_TAB_PRIVS
DBA_PROFILES
DBA_ROLE_PRIVS
ROLE_ROLE_PRIVS
DBA_SYS_PRIVS
One or more schema objects could not be imported during the migration
process. Please review the migration output for more details.
Migration logs have been saved to
/home/user/.enterprisedb/migration-toolkit/logs
******************** Migration Summary ********************
Sequences: 1 out of 1
Tables: 5 out of 6
Constraints: 9 out of 10
Triggers: 2 out of 3 (skipped 1)
Views: 1 out of 1
Functions: 1 out of 1
Packages: 1 out of 1
Total objects: 30
Successful count: 20
Failed count: 2
Skipped count: 1
Invalid count: 7
List of failed objects
======================
Tables
--------------------
1. EDB.BAD_TABLE
Constraints
--------------------
1. EDB.BAD_TABLE.SYS_C008958
List of invalid objects
=======================
1. EDB.HIRE_CLERK (FUNCTION)
2. EDB.NEW_EMPNO (FUNCTION)
3. EDB.EMP_ADMIN (PACKAGE BODY)
4. EDB.EMP_QUERY (PROCEDURE)
5. EDB.EMP_QUERY_CALLER (PROCEDURE)
6. EDB.LIST_EMP (PROCEDURE)
7. EDB.SELECT_EMP (PROCEDURE)
*************************************************************

スキップされた、サポートされていないデータベースオブジェクトの省略に注意してください。移行情報は、実行の最後に移行概要に要約されます。