Invoking Migration Toolkit
==========================

.. container:: registered_link
   :name: invoking_mtk

Migration Toolkitをインストールし、 :ref:`toolkit.properties file <Specifying connection properities>` 
のソースデータベースとターゲットデータベースの接続プロパティを指定した後、
Migration Toolkitは移行を実行する準備ができています。

Migration
Toolkit実行可能ファイルの名前付けは、Linuxシステムでは\ ``runMTK.sh`` 、
Windowsシステムでは\ ``runMTK.bat`` です。
Linuxシステムでは、実行可能ファイルは次の場所にあります。

``/usr/edb/migrationtoolkit/bin``

Windowsでは、実行可能ファイルは次の場所にあります。

``C:\Program Files\edb\mtk\bin``

移行の詳細を制御する方法については、 :ref:`Migration Toolkit command options <Migration Toolkit command options>` を参照してください。

..  Note::
   Migration Toolkitの呼び出し時に次のエラーが表示される場合 、 `toolkit.properties` ファイルのファイル権限を確認してください。

.. code:: text

   MTK-11015: The connection credentials file ../etc/toolkit.properties is
   not secure and accessible to group/others users. This file contains
   plain passwords and should be restricted to Migration Toolkit owner user
   only.

Migration
Toolkitを実行しているオペレーティングシステムのユーザーアカウントは、ファイルに対する最小限の読み取り権限を持つ\ ``toolkit.properties``
ファイルの所有者である必要があります。さらに、グループおよび他のユーザーにはいかなる種類の権限も与えてはなりません。以下は、ユーザーenterprisedbがMigration
Toolkitを実行している場合の、推奨されるファイル許可の例です。

``-rw------- 1 enterprisedb enterprisedb 191 Aug 1 09:59 toolkit.properties``

バイナリゼロ（NULL文字）が埋め込まれた文字データのインポート
------------------------------------------------------------

Migration
Toolkitは、値がNULLの列のインポートをサポートしています。ただし、
Migration
Toolkitは、JDBC接続プロトコルを使用したNULL文字値（埋め込みバイナリゼロ0x00）のインポートをサポートしていません。
NULL文字を含むデータをインポートする場合は、 ``-replaceNullChar``
オプションを使用して、
NULL文字を単一のNULL以外の置換文字に置き換えます。

..  Note::
   - MTKは、暗黙的にNULL文字を空の文字列に置き換えます。 - `-replaceNullChar` オプションは、`-copyViaDBLinkOra` オプションと連携しません。

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

Oracleからスキーマを移行する
----------------------------

コマンドラインで指定されない限り、 Migration
ToolkitはソースデータベースがOracleであり、ターゲットデータベースがEDB
Postgres Advanced Serverであると想定しています。
Linuxでスキーマ全体を移行するには、実行可能ファイルに移動し、次のコマンドを呼び出します。

``$ ./runMTK.sh <schema_name>``

Windowsでスキーマ全体を移行するには、実行可能ファイルに移動し、次のコマンドを呼び出します。

``> .\runMTK.bat <schema_name>``

そこで：

``<schema_name>`` は、移行する\ ``toolkit.properties``
ファイルで指定されたソースデータベース内のスキーマの名前です。少なくとも1つの\ ``schema_name``
値を含める必要があります。

..  Note::
   - 移行されたスキーマのデフォルトのデータベースユーザーが自動的に移行される場合、カスタムプロファイルが存在する場合はデフォルトのデータベースユーザーのカスタムプロファイルも移行されます。カスタムプロファイルは、ユーザーが作成したプロファイルです。たとえば、カスタムプロファイルはOracleプロファイル`DEFAULT` および`MONITORING_PROFILE` を除外します。 - PostgreSQLのデフォルト行のサイズは8 KBに制限されています。これは、各テーブルの行が単一の8 KBブロックに収まる必要があることを意味します。 そうしないと、エラーが発生し、たとえば、1600列のINTを持つテーブルを作成し、すべての列にデータを挿入できます。ただし、 INTは4バイトとして格納されるため、BIGINT列で同じことを行うことはできませんが、各BIGINTにはより多くの領域（8バイト）が必要です。詳細については、PostgreSQLドキュメントの `PostgreSQL Limits <https://www.postgresql.org/docs/14/limits.html>`_ を参照してください。

コマンド名の後にスキーマ名のコンマ区切りリストを指定することにより、複数のスキーマを移行できます。

Linuxでは、次のコマンドを実行します。

``$ ./runMTK.sh <schema_name1>,<schema_name2>,<schema_name3>``

Windowsでは、次のコマンドを実行します。

``> .\runMTK.bat <schema_name1>,<schema_name2>,<schema_name3>``

.. container:: registered_link
   :name: migrate_non_oracle

Oracle以外のソースデータベースからの移行
----------------------------------------

ソースデータベースタイプとターゲットデータベースタイプを指定しない場合、PostgresはソースデータベースがOracleであり、ターゲットデータベースがEDB
Postgres Advanced Serverであると想定します。

Migration
Toolkitを呼び出すには、コマンドウィンドウを開き、実行可能ファイルに移動して、次のコマンドを呼び出します。

``$ ./runMTK.sh -sourcedbtype <source_type> -targetdbtype <target_type> [options, …] <schema_name>;``

``-sourcedbtype <source_type>``

``<source_type>`` は、ソースデータベースのサーバータイプを指定します。
``<source_type>`` は大文字と小文字を区別しません。デフォルトでは、
``<source_type>`` はoracleです。 ``source_type``
は、次のいずれかの値になります。

.. csv-table::
  :header: To migrate from:,Specify:
  :widths: 10,30
  :align: left
  :class: longtable

  Oracle,oracle (the default value)
  MySQL,mysql
  SQL Server,sqlserver
  Sybase,sybase
  PostgreSQL,postgres or postgresql
  EDB Postgres Advanced Server,enterprisedb

``-targetdbtype <target_type>``

``<target_type>``
は、ターゲットデータベースのサーバータイプを指定します。
``<target_type>`` は大文字と小文字を区別しません。デフォルトでは、
``<target_type>`` は\ ``enterprisedb`` です。 ``<target_type>``
は、次のいずれかの値です。

.. csv-table::
  :header: To migrate to:,Specify:
  :widths: 10,30
  :align: left
  :class: longtable

  EDB Postgres Advanced Server,enterprisedb
  PostgreSQL,postgres or postgresql

``<schema_name>``

``<schema_name>`` は、移行する\ ``toolkit.properties``
ファイルで指定されたソースデータベース内のスキーマの名前です。少なくとも1つの\ ``<schema_name>``
値を含める必要があります。

次の例では、 ``HR``
という名前のスキーマ（テーブル定義とテーブルコンテンツ）をLinuxシステムのMySQLデータベースからEDB
Postgres Advanced Serverホストに移行します。コマンドには、
``‑sourcedbtype`` および\ ``-targetdbtype`` オプションが含まれています。

Linuxでは、次のコマンドを使用します。

``$ ./runMTK.sh -sourcedbtype mysql -targetdbtype enterprisedb HR``

Windowsでは、次のコマンドを使用します。

``> .\runMTK.bat -sourcedbtype mysql -targetdbtype enterprisedb HR``

Migration
Toolkitコマンドの最後にスキーマのコンマ区切りリストを含めることにより、ソースデータベースから複数のスキーマを移行できます。次の例では、複数のスキーマ（HRおよびACCTGという名前）をMySQLデータベースからPostgreSQLデータベースに移行します。

Linuxでは、次のコマンドを使用します。

``$ ./runMTK.sh -sourcedbtype mysql -targetdbtype postgres HR,ACCTG``

Windowsでは、次のコマンドを使用します。

``> .\runMTK.bat -sourcedbtype mysql -targetdbtype postgres HR,ACCTG``

.. toctree::
  :maxdepth: 3

  07_08_mtk_command_options