Specifying connection properities
=================================

.. container:: registered_link
   :name: building_toolkit_properties_file

Migration Toolkitは、移行プロセス中に\ ``toolkit.properties``
ファイルに保存された構成および接続情報を使用して、ソースデータベースとターゲットデータベースを識別して接続します。

Linuxでは、 ``toolkit.properties``
ファイルは\ ``/usr/edb/migrationtoolkit/etc`` にあります。

Windowsでは、ファイルは\ ``C:\Program Files\edb\mtk\etc`` にあります。

Mac OSでは、ファイルは\ ``/Library/edb/mtk/etc`` にあります。

図は、サンプルの\ ``toolkit.properties`` ファイルを示しています。

.. figure:: /images/building_toolkit.properties.png
   :width: 70% 
   :alt: A typical toolkit.properties file.

   A typical toolkit.properties file.

Migration
Toolkitコマンドを実行する前に、選択したエディターで\ ``toolkit.properties``
ファイルを変更します。ファイルを更新して、次の情報を含めます。

-  ``SRC_DB_URL`` は、 Migration
   Toolkitがソースデータベースに接続する方法を指定します。各ソースデータベースのURLの形成の詳細は次のとおりです。

-  ``SRC_DB_USER``
   は、ソースデータベースで（十分な権限を持つ）ユーザー名を指定します。

-  ``SRC_DB_PASSWORD``
   は、ソースデータベースユーザーのパスワードを指定します。

-  ``TARGET_DB_URL`` は、ターゲットデータベースのJDBC URLを指定します。

-  ``TARGET_DB_USER``
   は、特権ターゲットデータベースユーザーの名前を指定します。

-  ``TARGET_DB_PASSWORD``
   は、ターゲットデータベースユーザーのパスワードを指定します。

..  Note::
   コマンドラインで指定されない限り、 Migration ToolkitはソースデータベースがOracleであり、ターゲットデータベースがEDB Postgres Advanced Serverであると想定しています。他のソースまたはターゲットデータベースの場合、 :ref:`Oracle以外のソースデータベースからの移行 <Oracle以外のソースデータベースからの移行>`  の説明に従って、 `-sourcedbtype`  または `-targetdbtype` オプションを指定します。

BigAnimalでターゲットデータベースを指定するには、 :ref:`BigAnimal URLの定義 <BigAnimal URLの定義>` 
を参照してください。

.. container:: registered_link
   :name: define_epas_url

Advanced ServerのURLの定義
--------------------------

Migration Toolkitは、次のプラットフォームからAdvanced
Serverへの移行に役立ちます。

-  Oracle

-  PostgreSQL

-  MySQL

-  Sybase

-  SQL Server

各データベースタイプから移行されたオブジェクトの明確なリストについては、
 :ref:`Functionality overview <Overview>`  を参照してください。

Migration
Toolkitは、ソースデータベースとターゲットデータベースの接続仕様を\ ``toolkit.properties``
ファイルから読み取ります。それぞれの接続情報には以下が含まれる必要があります。

-  データベースのURL

-  特権ユーザーの名前

-  指定されたユーザーに関連付けられたパスワード

URLはJDBC標準に準拠し、次の形式を取ります。

.. code:: text

   {TARGET_DB_URL|SRC_DB_URL}=jdbc:edb://<host>:<port><database_id>

Advanced ServerのURLには、次の情報が含まれています。

-  ``jdbc`` —プロトコルは常に\ ``jdbc`` です。

-  ``edb`` — Advanced Serverを使用している場合
   、サブプロトコル値に\ ``edb`` を指定します。

-  ``<host>`` —
   Postgresインスタンスが実行されているホストの名前またはIPアドレス。

-  ``<port>`` — Advanced
   Serverデータベースリスナーが監視しているポート番号。デフォルトのポート番号は5444です。

-  ``<database_id>`` —ソースまたはターゲットデータベースの名前。

-  ``{TARGET_DB_USER|SRC_DB_USER}``
   —移行される各タイプのオブジェクトを作成する権限を持つユーザーを指定します。データをテーブルに移行する場合、指定されたユーザーには、各ターゲットテーブルの挿入、切り捨て、および参照特権も必要になる場合があります。

-  ``{TARGET_DB_PASSWORD|SRC_DB_PASSWORD}`` — Advanced
   Server特権ユーザーのパスワードに設定します。

.. container:: registered_link
   :name: define_pg_url

PostgreSQL URLの定義
--------------------

Migration
Toolkitは、次のプラットフォームからPostgreSQLへの移行に役立ちます。

-  Oracle

-  Advanced Server

-  MySQL

-  SQL Server

各データベースタイプから移行されたオブジェクトの決定的なリストについては、
 :ref:`Functionality overview <Overview>`  を参照してください。

Migration
Toolkitは、ソースデータベースとターゲットデータベースの接続仕様を\ ``toolkit.properties``
ファイルから読み取ります。それぞれの接続情報には以下が含まれる必要があります。

-  データベースのURL

-  特権ユーザーの名前

-  指定されたユーザーに関連付けられたパスワード

PostgreSQL URLはJDBC標準に準拠し、次の形式を取ります。

.. code:: text

   {SRC_DB_URL|TARGET_DB_URL}=jdbc:postgresql://<host>:<port>/<database_id>

URLには次の情報が含まれています。

-  ``jdbc`` —プロトコルは常に\ ``jdbc`` です。

-  ``postgresql`` —
   PostgreSQLを利用している場合、サブプロトコル値に\ ``postgresql``
   を指定します。

-  ``<host>`` —
   Postgresインスタンスが実行されているホストの名前またはIPアドレス。

-  ``<port>`` —
   Postgresデータベースリスナーが監視しているポート番号。デフォルトのポート番号は5432です。

-  ``<database_id>`` —ソースまたはターゲットデータベースの名前。

-  ``{SRC_DB_USER|TARGET_DB_USER}``
   —移行される各タイプのオブジェクトを作成する権限を持つユーザーを指定します。データをテーブルに移行する場合、指定されたユーザーには、各ターゲットテーブルの挿入、切り捨て、および参照特権も必要になる場合があります。

-  ``{SRC_DB_PASSWORD|TARGET_DB_PASSWORD}``
   —特権PostgreSQLユーザのパスワードに設定します。

.. container:: registered_link
   :name: define_oracle_url

BigAnimal URLの定義
-------------------

Migration
Toolkitは、次のプラットフォームからBigAnimalへの移行に役立ちます。

-  Oracle

-  Advanced Server

-  PostgreSQL

-  MySQL

-  SQL Server

Migration
Toolkitは、ソースデータベースとターゲットデータベースの接続仕様を\ ``toolkit.properties``
ファイルから読み取ります。それぞれの接続情報には以下が含まれる必要があります。

-  データベースのURL

-  特権ユーザーの名前

-  指定されたユーザーに関連付けられたパスワード

BigAnimalに移行する場合、 ``TARGET_DB_URL`` はJDBC
URLの形式を取ります。例：

.. code:: text

   jdbc:<postgres_type>://<host_name>[:<port>]/<database_id>?sslmode=<sslmode>

..  Note::
   ターゲットデータベースのURLに必要な値の多くは、BigAnimalポータルから入手できます。 BigAnimalで、クラスターを選択し、[**Connect**]タブに移動して値を見つけます。 !!!

URLには次の情報が含まれています。

-  ``jdbc`` —プロトコルは常に\ ``jdbc`` です。

-  ``postgres_type`` —サブプロトコルはPostgresタイプです。 Advanced
   Serverを使用している場合は\ ``edb``
   を、PostgreSQLを使用している場合は\ ``postgresql`` を指定します。

-  ``<host_name>`` —クラスターのホスト名。 BigAnimalポータルの
   **Connect** タブの **Host** フィールドからコピーできます。

-  ``<port>`` —データベースリスナーが監視しているポート番号。
   BigAnimalポータルの **Connect** タブの **Port**
   フィールドからコピーできます。

-  ``<database_id>``
   —ターゲットデータベースの名前。これを、移行ターゲットデータベースとして使用するクラスター内のデータベースの名前に設定します。クラスターのデフォルトデータベースの名前は、BigAnimalポータルの
   **Connect** タブの **Dbname**
   フィールドに表示されます。多くの場合、移行ターゲットとして使用する別のデータベースが作成されます。

-  ``TARGET_DB_USER`` —特権データベースユーザーの名前を指定します。
   BigAnimalポータルの **Connect** タブの **User**
   フィールドからコピーできます。

-  ``TARGET_DB_PASSWORD``
   —指定されたユーザーのパスワードが含まれています。

-  ``sslmode`` — 「require」または「verify-full」のいずれか。
   :ref:`Recommended settings for SSL mode <../../../biganimal/latest/using_cluster/02_connect_to_cluster/#recommended-settings-for-ssl-mode>` を参照してください。 BigAnimalポータルの **Connect**
   タブの **ServiceURI** 値の最後にリストされています。

Oracle URLの定義
----------------

Migration Toolkitは、OracleデータベースからPostgreSQLまたはAdvanced
Serverデータベースへの移行に役立ちます。 Oracleから移行する場合、
``toolkit.properties``
ファイルでOracleソースデータベースの接続仕様を指定する必要があります。接続情報には以下が含まれる必要があります。

-  OracleデータベースのURL

-  特権ユーザーの名前

-  指定されたユーザーに関連付けられたパスワード

Oracleデータベースから移行する場合、 SRC_DB_URL
には、2つの形式のいずれかで指定されたJDBC
URLを含める必要があります。最初のフォームは次のとおりです。

.. code:: text

   jdbc:oracle:thin:@<host_name>:<port>:<database_id>

2番目の形式は次のとおりです。

.. code:: text

   jdbc:oracle:thin:@//<host_name>:<port>{<database_id|service_name>}

Oracle URLには、次の情報が含まれています。

-  ``jdbc`` —プロトコルは常に\ ``jdbc`` です。

-  ``oracle`` —サブプロトコルは常に\ ``oracle`` です。

-  ``thin`` —ドライバーの種類。 ``thin``
   のドライバータイプを指定します。

-  ``<host_name>`` —
   Oracleサーバーが実行されているホストの名前またはIPアドレス。

-  ``<port>`` — Oracleデータベースリスナーが監視しているポート番号。

-  ``<database_id>`` — OracleデータベースのデータベースSID。

-  ``<service_name>`` — Oracleサービスの名前。

-  ``SRC_DB_USER`` —特権Oracleユーザーの名前を指定します。
   Oracleユーザーは、オブジェクトをOracleからAdvanced
   Serverに移行するDBA権限が必要です。 Oracle ``GRANT DBA TO user``
   コマンドを使用してDBA権限をOracleユーザーに付与し、目的のすべてのデータベースオブジェクトが移行されるようにすることができます。

-  ``SRC_DB_PASSWORD`` —指定されたユーザーのパスワードが含まれています。

.. container:: registered_link
   :name: define_mysql_url

SQL ServerのURLの定義
---------------------

Migration Toolkitは、 SQL ServerデータベースからPostgreSQLまたはAdvanced
Serverデータベースへの移行に役立ちます。 Migration
Toolkitは、次のオブジェクト定義の移行をサポートしています。

-  スキーマ

-  テーブル

-  テーブルデータ

-  制約

-  インデックス

Migration Toolkitは、 ``toolkit.properties``
ファイルからソースデータベースの接続仕様を読み取ります。接続情報には以下が含まれる必要があります。

-  ソースデータベースのURL

-  特権ユーザーの名前

-  指定されたユーザーに関連付けられたパスワード

SQL Serverデータベースに接続している場合、 ``SRC_DB_URL`` は
 :ref:`Microsoft JDBC URL <Microsoft JDBC URL>`  （推奨）または :ref:`JTDSのURL <JTDSのURL>`  の形式を取ります。

Microsoft JDBC URL
^^^^^^^^^^^^^^^^^^

既定では、Microsoft JDBC Driver for SQL Serverは、クライアントとSQL
Server間のすべての通信にTLS暗号化を使用します。
TLS暗号化を無効にする場合は、 ``encrypt`` を\ ``false`` に設定します。
JDBC Type 4ドライバーを使用したMicrosoft SQL
Serverへの接続の詳細については、 `Building the connection URL <https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver16>`_  を参照してください。

.. code:: text

    jdbc:sqlserver://<server_name>:<port>[;databaseName=<database_id>][;encrypt=false]

SQLサーバーのURLには、次の情報が含まれています。

-  ``jdbc`` —プロトコルは常に\ ``jdbc`` です。

-  ``sqlserver`` —サーバータイプは常に\ ``sqlserver`` です。

-  ``<server_name>``
   —ソースサーバーが実行されているホストの名前またはIPアドレス。

-  ``<port>`` —ソースデータベースリスナーが監視しているポート番号。

-  ``<database_id>`` —ソースデータベースの名前。

-  ``SRC_DB_USER`` —特権SQL Serverユーザーの名前を指定します。

-  ``SRC_DB_PASSWORD`` —指定されたユーザーのパスワードが含まれています。

JTDSのURL
^^^^^^^^^

.. code:: text

    jdbc:jtds:sqlserver://<server_name>:<port>/<database_id>

..  Tip::
   JTDSドライバーは、古いバージョンのMicrosoft SQL ServerをサポートするオープンソースのJDBC 3.0 Type 4ドライバーです。 `http://jtds.sourceforge.net/ <http://jtds.sourceforge.net/>`_ を参照してください。 Migration Toolkitを使用してMicrosoft SQL Serverの新しいバージョンを接続する場合、 Microsoft JDBC Driver for SQL Serverをお勧めします。

SQLサーバーのURLには、次の情報が含まれています。

-  ``jdbc`` —プロトコルは常に\ ``jdbc`` です。

-  ``jtds`` —ドライバー名は常に\ ``jtds`` です。

-  ``sqlserver`` —サーバータイプは常に\ ``sqlserver`` です。

-  ``<server_name>``
   —ソースサーバーが実行されているホストの名前またはIPアドレス。

-  ``<port>`` —ソースデータベースリスナーが監視しているポート番号。

-  ``<database_id>`` —ソースデータベースの名前。

-  ``SRC_DB_USER`` —特権SQL Serverユーザーの名前を指定します。

-  ``SRC_DB_PASSWORD`` —指定されたユーザーのパスワードが含まれています。

MySQL URLの定義
---------------

Migration Toolkitは、MySQLデータベースからAdvanced
ServerまたはPostgreSQLデータベースへの移行を支援します。
MySQLから移行する場合、 ``toolkit.properties``
ファイルでMySQLソースデータベースの接続仕様を指定する必要があります。接続情報には以下が含まれる必要があります。

-  ソースデータベースのURL

-  特権ユーザーの名前

-  指定されたユーザーに関連付けられたパスワード

MySQLから移行する場合、 ``SRC_DB_URL`` はJDBC URLの形式を取ります。例：

.. code:: text

   jdbc:mysql://<host_name>[:<port>]/<database_id>

URLには次の情報が含まれています。

-  ``jdbc`` —プロトコルは常に\ ``jdbc`` です。

-  ``mysql`` —サブプロトコルは常に\ ``mysql`` です。

-  ``<host_name>``
   —ソースサーバーが実行されているホストの名前またはIPアドレス。

-  ``[<port>]`` — MySQLデータベースリスナーが監視しているポート番号。

-  ``<database_id>`` —ソースデータベースの名前。

-  ``SRC_DB_USER`` —特権MySQLユーザーの名前を指定します。

-  ``SRC_DB_PASSWORD`` —指定されたユーザーのパスワードが含まれています。

..  Note::
   - データ型`tinyInt(1)` を使用して0および1以外のバイト値をMySQLソースデータベースに保存する場合、MySQL Connector/J JDBC Driver URLにオプションパラメーター`?tinyInt1isBit=false` を追加してください。

-  MySQL Connector/J JDBC Driver
   8.0.26のバグにより、特定の場合に外部キー制約の移行が失敗します。
   EDBは、 Migration
   Toolkitを使用してデータを移行するためにこのドライバーを使用しないことをお勧めします。代わりに、
   MySQL Connector/J JDBC Driver 8.0.30以降を使用してください。

このバグの詳細については、 `MySQL bug report <https://bugs.mysql.com/bug.php?id=95280>`_  を参照してください。

``TINYINT(1)`` は、PostgreSQL / EDB Postgres Advanced
Serverの\ ``BIT(1)``
にマップされます（これは、場合によっては期待されない場合があります）。しかし、MySQL
JDBCドライバーは\ ``BIT(1)`` として報告するため、 Migration
ToolkitはそれをPostgreSQL / EDB Postgres Advanced Serverの\ ``BIT(1)``
にマッピングします。

-  128〜127の値を保持できる\ ``TINYINT(1)`` とは異なり、 ``BIT(1)``
   は0と1のみを保持できます。
   したがって、このフィールドに0と1以外の値を保存する場合は、MySQL
   JDBCドライバーのデフォルトの動作を変更する必要があります。ドライバーが\ ``TINYINT``
   として報告するようにします。

この動作を変更するには、接続文字列で次のURLオプションを設定します。

``jdbc:mysql://localhost:3306/world?tinyInt1isBit=false``

この場合、JDBCドライバーは\ ``TINYINT(1)`` を\ ``TINYINT``
として報告し、ターゲットのPostgreSQL / EDB Postgres Advanced
Serverの\ ``SMALLINT`` にマップされます。

.. container:: registered_link
   :name: define_sybase_url

Sybase URLの定義
----------------

Migration Toolkitは、SybaseデータベースからAdvanced
Serverデータベースへの移行に役立ちます。 Sybaseから移行する場合、
``toolkit.properties``
ファイルでSybaseソースデータベースの接続仕様を指定する必要があります。接続情報には以下が含まれる必要があります。

-  ソースデータベースのURL

-  特権ユーザーの名前

-  指定されたユーザーに関連付けられたパスワード

Sybaseから移行する場合、 ``SRC_DB_URL`` はJTDS URLの形式を取ります。例：

.. code:: text

   jdbc:jtds:sybase://<host_name>[:<port>]/<database_id>

..  Tip::
   Sybase ASEおよびMicrosoft SQL Serverの古いバージョン用のオープンソースJDBC 3.0タイプ4ドライバーについては、 `http://jtds.sourceforge.net/ <http://jtds.sourceforge.net/>`_  を参照してください。

SybaseのURLには、次の情報が含まれています。

-  ``jdbc`` —プロトコルは常に\ ``jdbc`` です。

-  ``jtds`` —ドライバー名は常に\ ``jtds`` です。

-  ``sybase`` —サーバータイプは常に\ ``sybase`` です。

-  ``<host_name>``
   —ソースサーバーが実行されているホストの名前またはIPアドレス。

-  ``<port>`` — Sybaseデータベースリスナーが監視しているポート番号。

-  ``<database_id>`` —ソースデータベースの名前。

-  ``SRC_DB_USER`` —特権Sybaseユーザの名前を指定します。

-  ``SRC_DB_PASSWORD`` —指定されたユーザーのパスワードが含まれています。
