Migration Toolkitコマンドオプション

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

$ ./runMTK.sh -allSchemas

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

機能:

関連オプション:

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

-offlineMigration

インポートオプション _

-sourcedbtype、-targetdbtype、-schemaOnly、-dataOnly

スキーマ作成オプション _

-dropSchema、-targetSchema

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

-allTables、-tables、-constraints、-ignoreCheckConstFilter、-skipCKConst、-skipFKConst、-skipColDefaultClause、-indexes、-triggers、-allViews、-views、-allSequences、-sequences、-allProcs、-procs、-allFuncs、-funcs 、-checkFunctionBodies、-allPackages、-packages、-allDomains、-allQueues、-queues、-allRules、

移行オプション _

-truncLoad、-enableConstBeforeDataLoad、-retryCount、-safeMode、-fastCopy、-analyze、vacuumAnalyze、-replaceNullChar、-copyDelimiter、-batchSize、-cpBatchSize、-lobBatchSize、-fetchSize、-filterProp -customColTypeMappingFile、-customColTypeMappingFile

``Oracle固有のオプション``_

-allUsers、-users、-allProfiles、-profiles、-importPartitionAsTable、-objectTypes、-copyViaDBLinkOra、-allDBLinks -allSynonyms、-allPublicSynonyms、-allPrivateSynonyms、-useOraCase、-skipUserSchemaCreation

``その他のオプション``_

-help、-logDir、-logFileCount、-logFileSize、-logBadSQL -verbose、-version

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

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

注:次の例は、Linuxでの移行ツールキットの呼び出しを示しています。 WindowsでMigration Toolkitを起動するには、 runMTK.sh コマンドの代わりに runMTK.bat コマンドを使用します。

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

$ ./runMTK.sh -offlineMigration <schema_name>

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

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

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

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

データのみのオフライン移行を実行するには(スキーマオブジェクト定義を省略)、Migration Toolkitを呼び出すときに ‑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)コマンドラインを使用して、オフライン移行中に生成されたスクリプトを実行できます。次の例では、スキーマ(* hr という名前)をAdvanced Serverに保存されている新しいデータベース( 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

インポートオプション

デフォルトでは、Migration ToolkitはソースデータベースをOracle、ターゲットデータベースをAdvanced Serverと見なします。 ‑sourcedbtype および -targetdbtype キーワードを含めて、デフォルト以外のソースまたはターゲットデータベースを指定します。

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

-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 オプションとともに使用すると、Migration Toolkitは選択したテーブルのデータのみをインポートします(以下の使用法の詳細を参照)。このオプションは -schemaOnly オプションと一緒には使用できません。

スキーマ作成オプション

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

-dropSchema [true|false]

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

-targetSchema schema_name>

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

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

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

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

-allTables

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

-tables <table_list>

選択したテーブルをソーススキーマからインポートします。 <table_list> はコンマで区切られたテーブル名のリストです(間にスペース文字は挿入されません)(たとえば、-tables emp、dept、acctg)。

-constraints

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

-ignoreCheckConstFilter

デフォルトでは、Migration Toolkitは、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

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

-views <view_list>

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

-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組み込みパッケージによって作成および管理されるキューです。 Oracleがソースデータベースの場合、 -objectTypes オプションも指定する必要があります。 Advanced Serverがソースデータベースの場合、 -allDomains および -allTables オプションも指定する必要があります。 (OracleおよびAdvanced Serverキューがサポートされています。)

-queues <queue_list>

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

-allRules

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

移行オプション

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

-loaderCount [<value>]

-loaderCount オプションを使用して、データのインポート時にMigration Toolkitが使用する必要のある並列スレッドの数を指定します。このオプションは、ソースデータベースに大量のデータが含まれており、(Migration Toolkitを実行している)PostgresホストにハイエンドのCPUおよびRAMリソースがある場合に特に役立ちます。ながら<value>ゼロ以外の正の数である可能性があります。 <value> CPUコアの数を超えないでください。デュアルコアCPUには、最適な <value> の2が必要です。

大きすぎる <value> を指定すると、Migration Toolkitが終了し、 'Out of heap space' エラーが生成される可能性があることに注意してください。

-truncLoad

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

-enableConstBeforeDataLoad

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

-retryCount [<value>]

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

-safeMode

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

-fastCopy

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

-replaceNullChar <value>

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

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

注:

  • MTKは暗黙的に NULL 文字を空の文字列に置き換えます。

  • -replaceNullChar オプションは -copyViaDBLinkOra オプションでは機能しません。

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

-analyze

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

-vacuumAnalyze

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

-copyDelimiter

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

-batchSize

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

-cpBatchSize

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

-lobBatchSize

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

-fetchSize

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

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

-filterProp <file_name>

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

countries=country_id<>'AR'

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

-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> に複数のカスタムタイプマッピングを含めることができます。 key = valueのペアで、ファイルの各エントリを個別の行に指定します。各ペアの左側は、正規表現で列を選択します。各ペアの右側には、列が想定するデータ型の名前を指定します。

Oracle固有のオプション

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

-objectTypes

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

-allUsers

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

-users <user_list>

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

-allProfiles

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

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

FAILED_LOGIN_ATTEMPTS

PASSWORD_LIFE_TIME

PASSWORD_REUSE_TIME

PASSWORD_REUSE_MAX

PASSWORD_LOCK_TIME

PASSWORD_GRACE_TIME

PASSWORD_VERIFY_FUNCTION

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

‑allProfiles オプションは、OracleデータベースからAdvanced Serverデータベースに移行する場合にのみサポートされることに注意してください。

-profiles <profile_list>

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

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

-profiles オプションは、OracleデータベースからAdvanced Serverデータベースに移行する場合にのみサポートされることに注意してください。

-importPartitionAsTable <table_list>

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

-copyViaDBLinkOra

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

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

$./runMTK.sh -copyViaDBLinkOra -allTables HR

ターゲットAdvanced Serverデータベースにdblink_oraがインストールおよび構成されている必要があります。 dblink_oraの詳細については、``Oracle開発者ガイドのデータベース互換性``を参照してください。 <https://www.enterprisedb.com/edb-docs/d/edb-postgres-advanced-server/user-guides/database-compatibility-for-oracle-developers-guide/11/toc.html>`_ 。

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

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

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

$./runMTK.sh -allDBLinks HR

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

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

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

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

-allSynonyms

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

-allPublicSynonyms

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

-allPrivateSynonyms

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

-useOraCase

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

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

注: プロシージャ、関数、トリガー、またはパッケージのプロシージャコード本体内で、プログラムをエラーなしで適切に実行するには、識別子参照を手動で編集する必要がある場合があります。このような修正は、発生した場合と発生していない場合がある識別子参照の適切な大文字小文字変換に関するものです。

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

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

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);

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

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)

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

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");

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

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

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

-skipUserSchemaCreation オプションを指定すると、移行されたOracleユーザー名のこの自動スキーマ作成が防止されます。このオプションは、小文字のスキーマ名と大文字のスキーマ名を除き、同じ名前の2つのスキーマの作成を防ぐために -useOraCase オプションが指定されている場合に特に便利です。 -useOraCase オプションを指定すると、Migration Toolkitの起動時にオプションリストに従って指定されたソーススキーマの大文字のOracle命名規則でスキーマが作成されます。

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

その他のオプション

以下にリストされている移行オプションを使用して、Migration Toolkitのヘルプとバージョン情報を表示します。このセクションのオプションを使用して、Migration Toolkitのフィードバックとログオプションを制御することもできます。

-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>

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

-logBadSQL

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

-verbose [on|off]

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

-version

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

例

次の例は、OracleからAdvanced Serverへの移行の実行を示しています。

以下は、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

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

$ ./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)
*************************************************************

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