

# db2look を使用して Db2 から Amazon RDS for Db2 にデータベースメタデータをコピーする
<a name="db2-native-db2-tools-db2look"></a>

`db2look` は、データ定義言語 (DDL) ファイル、オブジェクト、認証、設定、WLM、およびデータベースレイアウトを抽出するネイティブ Db2 ツールです。`db2look` を使用して、セルフマネージド Db2 データベースから Amazon RDS for Db2 データベースにデータベースメタデータをコピーできます。詳細については、IBM Db2 ドキュメントの「[Mimicking databases using db2look](https://www.ibm.com/docs/en/db2/11.5?topic=tools-db2look)」を参照してください。

**データベースメタデータをコピーするには**

1. セルフマネージド Db2 システムで `db2look` ツールを実行し、DDL ファイルを抽出します。次の例では、*database\$1name* を Db2 データベースの名前に置き換えます。

   ```
   db2look -d database_name -e -l -a -f -wlm -cor -createdb -printdbcfg -o db2look.sql
   ```

1. クライアントマシンがソース (セルフマネージド Db2) データベースと RDS for Db2 DB インスタンスにアクセスできる場合は、リモートインスタンスに直接アタッチすることで、クライアントマシンで `db2look.sql` ファイルを作成できます。次に、リモートのセルフマネージド Db2 インスタンスをカタログ化します。

   1. ノードをカタログ化します。次の例では、*dns\$1ip\$1address* と *port* を、DNS 名または IP アドレス、セルフマネージド Db2 データベースのポート番号に置き換えます。

      ```
      db2 catalog tcpip node srcnode REMOTE dns_ip_address server port
      ```

   1. データベースをカタログ化します。次の例では、*source\$1database\$1name* と *source\$1database\$1alias* を、セルフマネージド Db2 データベースの名前と、このデータベースに使用するエイリアスに置き換えます。

      ```
      db2 catalog database source_database_name as source_database_alias at node srcnode \ 
          authentication server_encrypt
      ```

   1. ソースデータベースにアタッチします。次の例では、*source\$1database\$1alias*、*user\$1id*、*user\$1password* を、前のステップで作成したエイリアスと、セルフマネージド Db2 データベースのユーザー ID とパスワードに置き換えます。

      ```
      db2look -d source_database_alias -i user_id -w user_password -e -l -a -f -wlm \
          -cor -createdb -printdbcfg -o db2look.sql
      ```

1. クライアントマシンからリモートのセルフマネージド Db2 データベースにアクセスできない場合は、`db2look.sql` ファイルをクライアントマシンにコピーします。 次に、RDS for Db2 DB インスタンスをカタログ化します。

   1. ノードをカタログ化します。次の例では、*dns\$1ip\$1address* と *port* を、DNS 名または IP アドレスと、RDS for Db2 DB インスタンスのポート番号に置き換えます。

      ```
      db2 catalog tcpip node remnode REMOTE dns_ip_address server port
      ```

   1. データベースをカタログ化します。次の例では、*rds\$1database\$1name* と *rds\$1database\$1alias* を、RDS for Db2 データベースの名前と、このデータベースに使用するエイリアスに置き換えます。

      ```
      db2 catalog database rds_database_name as rds_database_alias at node remnode \ 
          authentication server_encrypt
      ```

   1. RDS for Db2 を管理する管理データベースをカタログ化します。このデータベースを使用してデータを保存することはできません。

      ```
      db2 catalog database rdsadmin as rdsadmin at node remnode authentication server_encrypt
      ```

1. バッファプールとテーブルスペースを作成します。管理者には、バッファプールまたはテーブルスペースを作成する権限がありません。ただし、Amazon RDS ストアドプロシージャを使用して作成することができます。

   1. `db2look.sql` ファイル内のバッファプールとテーブルスペースの名前と定義を見つけます。

   1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して Amazon RDS に接続します。次の例では、*master\$1username* と *master\$1password* をユーザー自身の情報に置き換えます。

      ```
      db2 connect to rdsadmin user master_username using master_password
      ```

   1. `rdsadmin.create_bufferpool` を呼び出してバッファプールを作成します。詳細については、「[rdsadmin.create\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-create-buffer-pool)」を参照してください。

      ```
      db2 "call rdsadmin.create_bufferpool(
          'database_name', 
          'buffer_pool_name', 
          buffer_pool_size, 
          'immediate', 
          'automatic', 
          page_size, 
          number_block_pages, 
          block_size)"
      ```

   1. `rdsadmin.create_tablespace` を呼び出してテーブルスペースを作成します。詳細については、「[rdsadmin.create\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-create-tablespace)」を参照してください。

      ```
      db2 "call rdsadmin.create_tablespace(
          'database_name', 
          'tablespace_name',
          'buffer_pool_name', 
          tablespace_initial_size, 
          tablespace_increase_size, 
          'tablespace_type')"
      ```

   1. 追加するバッファプールまたはテーブルスペースごとに、ステップ c または d を繰り返します。

   1. 接続を終了します。

      ```
      db2 terminate
      ```

1.  テーブルとオブジェクトを作成します。

   1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、RDS for Db2 データベースに接続します。次の例では、*rds\$1database\$1name*、*master\$1username*、*master\$1password* をユーザー自身の情報に置き換えます。

      ```
      db2 connect to rds_database_name user master_username using master_password
      ```

   1. `db2look.sql` ファイルを実行します。

      ```
      db2 -tvf db2look.sql
      ```

   1. 接続を終了します。

      ```
      db2 terminate
      ```