

# Copiar metadados do banco de dados do Db2 para o Amazon RDS para Db2 com db2look
<a name="db2-native-db2-tools-db2look"></a>

`db2look` é uma ferramenta nativa do Db2 que extrai arquivos, objetos, autorizações, configurações, WLM e layouts de banco de dados da linguagem de definição de dados (DDL). É possível usar o `db2look` para copiar metadados de um banco de dados do Db2 autogerenciado para um banco de dados do Amazon RDS para Db2. Para ter mais informações, consulte [Mimicking databases using db2look](https://www.ibm.com/docs/en/db2/11.5?topic=tools-db2look) na documentação do IBM Db2.

**Como copiar os metadados do banco de dados**

1. Execute a ferramenta `db2look` no sistema do Db2 autogerenciado para extrair o arquivo DDL. No exemplo a seguir, substitua {{database\_name}} pelo nome do banco de dados do Db2.

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

1. Se a máquina cliente tiver acesso ao banco de dados de origem (Db2 autogerenciado) e à instância de banco de dados do RDS para Db2, será possível criar o arquivo `db2look.sql` na máquina cliente conectando-se diretamente à instância remota. Depois, catalogue a instância remota autogerenciada do Db2.

   1. Catalogue o nó. No exemplo a seguir, substitua {{dns\_ip\_address}} e {{port}} pelo nome do DNS ou pelo endereço IP e pelo número da porta do banco de dados do Db2 autogerenciado.

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

   1. Catalogue o banco de dados. No exemplo a seguir, substitua {{source\_database\_name}} e {{source\_database\_alias}} pelo nome do banco de dados do Db2 autogerenciado e pelo alias a ser utilizado para esse banco de dados.

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

   1. Associe ao banco de dados de origem. No exemplo a seguir, substitua {{source\_database\_alias}}, {{user\_id}} e {{user\_password}} pelo alias que você criou na etapa anterior e pelo ID de usuário e senha do banco de dados do Db2 autogerenciado.

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

1. Se você não conseguir acessar o banco de dados do Db2 autogerenciado remoto da máquina cliente, copie o arquivo `db2look.sql` para a máquina cliente. Depois, catalogue a instância de banco de dados do RDS para Db2. 

   1. Catalogue o nó. No exemplo a seguir, substitua {{dns\_ip\_address}} e {{port}} pelo nome do DNS ou pelo endereço IP e pelo número da porta da instância de banco de dados do RDS para Db2.

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

   1. Catalogue o banco de dados. No exemplo a seguir, substitua {{rds\_database\_name}} e {{rds\_database\_alias}} pelo nome do banco de dados do RDS para Db2 e pelo alias a ser utilizado para esse banco de dados.

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

   1. Catalogue o banco de dados administrativo que gerencia o RDS para Db2. Não é possível usar esse banco de dados para armazenar dados.

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

1. Crie grupos de buffer e espaços de tabela. O administrador não tem privilégios para criar grupos de buffer nem espaços de tabela. No entanto, é possível usar procedimentos armazenados do Amazon RDS para criá-los.

   1. Encontre os nomes e as definições dos grupos de buffer e dos espaços de tabela no arquivo `db2look.sql`.

   1. Conecte-se ao Amazon RDS usando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substitua {{master\_username}} e {{master\_password}} por suas próprias informações.

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

   1. Crie um grupo de buffers chamando `rdsadmin.create_bufferpool`. Para ter mais informações, consulte [rdsadmin.create\_bufferpool](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. Crie um espaço de tabela chamando `rdsadmin.create_tablespace`. Para ter mais informações, consulte [rdsadmin.create\_tablespace](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. Repita as etapas c ou d para cada grupo de buffers ou espaço de tabela extra que você deseja adicionar.

   1. Encerre a conexão.

      ```
      db2 terminate
      ```

1. Crie tabelas e objetos.

   1. Conecte-se ao banco de dados do RDS para Db2 usando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substitua {{rds\_database\_name}}, {{master\_username}} e {{master\_password}} por suas próprias informações.

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

   1. Execute o arquivo `db2look.sql`.

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

   1. Encerre a conexão.

      ```
      db2 terminate
      ```