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*名前付けの)新しいデータベースに(*時間 名前付けの)スキーマを復元について説明します。
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
インポートオプション¶
デフォルトでは、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オプションを含めて、ターゲットデータベースに対してPostgresANALYZEオペレーションを呼び出します。オプティマイザは、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=INTEGERWindows、
'/.'を使用して'.'文字を表します。
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_oraCOPY 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 HRMigrationToolkitは、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/logsWindowsでは、ログファイルは次の場所に保存されます。
%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)
*************************************************************
スキップされた、サポートされていないデータベースオブジェクトの省略に注意してください。移行情報は、実行の最後に移行概要に要約されます。