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 *という名前)に復元する方法について説明します。
createdbコマンドを使用してacctgデータベースを作成し、そこに移行したデータベースオブジェクトを復元します。createdb -U enterprisedb acctgedb-psqlを使用して新しいデータベースに接続します。
edb-psql -U enterprisedb acctg/iメタコマンドを使用して、オブジェクト定義を作成する移行スクリプトを呼び出します。acctg=# /i ./mtk_hr_ddl.sql-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=INTEGERWindowsでは、
'/.'を使用して'.'文字を表します。
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_FUNCTIONOracleリソースパラメータなど、他のすべてのプロファイルパラメータはインポートされません。
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 HRMigration 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/logsWindowsでは、ログファイルは次の場所に保存されます。
%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)
*************************************************************
スキップされ、サポートされていないデータベースオブジェクトが省略されていることに注意してください。移行情報は、実行の最後に移行概要に要約されます。