

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# ConnConnecting para a IBM DB2 para bancos de dados Linux, UNIX e Windows com o AWS Schema Conversion Tool
<a name="CHAP_Source.DB2LUW"></a>

Você pode usar AWS SCT para converter esquemas, objetos de código na linguagem SQL e código de aplicativo do IBM Db2 for Linux, Unix e Windows (Db2 LUW) para os seguintes destinos.
+ Amazon RDS para MySQL
+ Amazon Aurora Edição Compatível com MySQL
+ Amazon RDS para PostgreSQL
+ Amazon Aurora Edição Compatível com PostgreSQL
+ Amazon RDS para MariaDB

AWS SCT suporta como fonte as versões 9.1, 9.5, 9.7, 10.1, 10.5, 11.1 e 11.5 do Db2 LUW.

## Privilégios do Db2 LUW como origem
<a name="CHAP_Source.DB2LUW.Permissions"></a>

Os privilégios necessários para se conectar a um banco de dados Db2 LUW, para verificar privilégios disponíveis e ler metadados de esquema para uma origem são listados a seguir: 
+ Privilégio necessário para estabelecer uma conexão:
  + CONNECT ON DATABASE
+ Privilégios necessários para executar instruções SQL:
  + EXECUTAR NO PACOTE NULLID. SYSSH200
+ Privilégios necessários para obter informações no nível de instância:
  + EXECUTE ON FUNCTION SYSPROC.ENV\$1GET\$1INST\$1INFO
  + SELECT ON SYSIBMADM.ENV\$1INST\$1INFO
  + SELECT ON SYSIBMADM.ENV\$1SYS\$1INFO
+ Privilégios necessários para verificar os privilégios concedidos por meio de funções, grupos e autoridades:
  + EXECUTE ON FUNCTION SYSPROC.AUTH\$1LIST\$1AUTHORITIES\$1FOR\$1AUTHID
  + EXECUTE ON FUNCTION SYSPROC.AUTH\$1LIST\$1GROUPS\$1FOR\$1AUTHID
  + EXECUTE ON FUNCTION SYSPROC.AUTH\$1LIST\$1ROLES\$1FOR\$1AUTHID
  + SELECT ON SYSIBMADM.PRIVILEGES
+ Privilégios necessários em catálogos e tabelas do sistema:
  + SELECT ON SYSCAT.ATTRIBUTES
  + SELECT ON SYSCAT.CHECKS
  + SELECT ON SYSCAT.COLIDENTATTRIBUTES
  + SELECT ON SYSCAT.COLUMNS
  + SELECT ON SYSCAT.DATAPARTITIONEXPRESSION
  + SELECT ON SYSCAT.DATAPARTITIONS
  + SELECT ON SYSCAT.DATATYPEDEP
  + SELECT ON SYSCAT.DATATYPES
  + SELECT ON SYSCAT.HIERARCHIES
  + SELECT ON SYSCAT.INDEXCOLUSE
  + SELECT ON SYSCAT.INDEXES
  + SELECT ON SYSCAT.INDEXPARTITIONS
  + SELECT ON SYSCAT.KEYCOLUSE
  + SELECT ON SYSCAT.MODULEOBJECTS
  + SELECT ON SYSCAT.MODULES
  + SELECT ON SYSCAT.NICKNAMES
  + SELECT ON SYSCAT.PERIODS
  + SELECT ON SYSCAT.REFERENCES
  + SELECT ON SYSCAT.ROUTINEPARMS
  + SELECT ON SYSCAT.ROUTINES
  + SELECT ON SYSCAT.ROWFIELDS
  + SELECT ON SYSCAT.SCHEMATA
  + SELECT ON SYSCAT.SEQUENCES
  + SELECT ON SYSCAT.TABCONST
  + SELECT ON SYSCAT.TABLES
  + SELECT ON SYSCAT.TRIGGERS
  + SELECT ON SYSCAT.VARIABLEDEP
  + SELECT ON SYSCAT.VARIABLES
  + SELECT ON SYSCAT.VIEWS
  + SELECIONE NO SISTEMA. SYSDUMMY1
+  Para executar instruções SQL, a conta do usuário precisa de um privilégio para usar pelo menos uma das cargas de trabalho ativadas no banco de dados. Se nenhuma das cargas de trabalho for atribuída ao usuário, assegure-se de que a carga de trabalho do usuário padrão esteja acessível ao usuário:
  + USAGE ON WORKLOAD SYSDEFAULTUSERWORKLOAD

Para executar consultas, é necessário criar um espaço de tabela temporário do sistema com tamanho de página de 8K, 16K e 32K, se não houver. Para criar os espaços de tabela temporários, execute os scripts a seguir.

```
CREATE BUFFERPOOL BP8K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 8K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_8K 
  PAGESIZE 8192 
  BUFFERPOOL BP8K;
  
CREATE BUFFERPOOL BP16K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 16K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_BP16K 
  PAGESIZE 16384 
  BUFFERPOOL BP16K;  
  
CREATE BUFFERPOOL BP32K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 32K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_BP32K 
  PAGESIZE 32768 
  BUFFERPOOL BP32K;
```

## Como se conectar ao Db2 LUW como origem
<a name="CHAP_Source.DB2LUW.Connecting"></a>

Use o procedimento a seguir para conectar seu banco de dados de origem do Db2 LUW com a AWS Schema Conversion Tool. 

**Para se conectar a um banco de dados de origem do Db2 LUW**

1. No AWS Schema Conversion Tool, escolha **Adicionar fonte**. 

1. Escolha **Db2 LUW** e, em seguida, escolha **Avançar**. 

   A caixa de diálogo **Adicionar origem** é exibida.

1. Em **Nome da conexão**, insira um nome para o banco de dados. A AWS SCT exibe esse nome na árvore no painel esquerdo. 

1. Use as credenciais do banco de dados AWS Secrets Manager ou insira-as manualmente:
   + Para usar as credenciais do banco de dados do Secrets Manager, use as instruções a seguir:

     1. Em **Segredo da AWS **, escolha o nome do seu segredo.

     1. Escolha **Preencher** para preencher automaticamente todos os valores na caixa de diálogo de conexão do banco de dados do Secrets Manager.

     Para obter informações sobre o uso de credenciais de banco de dados do Secrets Manager, consulte a [Configurando AWS Secrets Manager no AWS Schema Conversion Tool](CHAP_UserInterface.SecretsManager.md).
   + Para inserir manualmente as informações de conexão do banco de dados de origem do IBM Db2 LUW, use as instruções a seguir:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/SchemaConversionTool/latest/userguide/CHAP_Source.DB2LUW.html)

1. Escolha **Testar conexão** para verificar se AWS SCT pode se conectar ao seu banco de dados de origem. 

1. Escolha **Conectar** para se conectar ao banco de dados de origem.

# Migração da IBM DB2 para Linux, UNIX e Windows para o Amazon Relational Database Service for PostgreSQL ou Amazon Aurora PostgreSQL Compatible Edition
<a name="CHAP_Source.DB2LUW.ToPostgreSQL"></a>

Quando você migra o IBM Db2 LUW para o PostgreSQL, AWS SCT pode converter várias instruções de gatilho usadas com o Db2 LUW. Essas declarações de trigger incluem:
+ **Eventos de trigger**: Os eventos de trigger INSERT, DELETE e UPDATE especificam que a ação acionada é executada sempre que o evento é aplicado à tabela do assunto ou visualização do assunto. Você pode especificar qualquer combinação dos eventos INSERT, DELETE e UPDATE, mas você pode especificar cada evento somente uma vez. AWS SCT suporta eventos de gatilho únicos e múltiplos. O PostgreSQL tem praticamente a mesma funcionalidade para eventos. 
+ **Evento OF COLUMN**: Você pode especificar um nome de coluna de uma tabela-base. O trigger é ativado apenas pela atualização de uma coluna identificada na lista de nomes de colunas. O PostgreSQL tem a mesma funcionalidade.
+ **Triggers de declarações**: Especificam que a ação acionada é aplicada somente uma vez para toda a declaração. Não é possível especificar esse tipo de granularidade de trigger para um trigger BEFORE ou um trigger INSTEAD OF. Se especificado, um trigger UPDATE ou DELETE será ativado, mesmo que nenhuma linha seja afetada. O PostgreSQL também tem essa funcionalidade, e a declarações de trigger do PostgreSQL é idêntica à da Db2 LUW.
+ **Cláusulas de referência**: Especificam os nomes de correlações de variáveis de transição e os nomes de tabelas de transição. Os nomes de correlações identificam uma determinada linha no conjunto de linhas que foi afetada pela operação SQL de trigger. Os nomes de tabelas identificam o conjunto completo de linhas afetadas. Cada linha afetada por uma operação SQL de trigger está disponível para a ação acionada por meio da qualificação de colunas com nomes de correlação especificados. O PostgreSQL não é compatível com essa funcionalidade e usa apenas um nome de correlação NEW ou OLD.
+ **Triggers INSTEAD OF**: a AWS SCT oferece suporte a eles.

## Como converter tabelas particionadas do Db2 LUW em tabelas particionadas do PostgreSQL versão 10
<a name="CHAP_Source.DB2LUW.ToPostgreSQL.PartitionedTables"></a>

AWS SCT pode converter tabelas LUW do Db2 em tabelas particionadas no PostgreSQL 10. Há algumas restrições ao converter uma tabela particionada do Db2 LUW em PostgreSQL:
+ Você pode criar uma tabela particionada com uma coluna anulável em Db2 LUW e especificar uma partição para armazenar os valores NULL. No entanto, o PostgreSQL não é compatível com valores NULL para particionamento RANGE.
+ O Db2 LUW pode usar uma cláusula INCLUSIVE ou EXCLUSIVE para definir valores limite de intervalo. O PostgreSQL só é compatível com INCLUSIVE para um limite inicial e EXCLUSIVE para um limite final. O nome da partição convertida está no formato <original\$1table\$1name>\$1<original\$1partition\$1name>.
+ É possível criar chaves primárias ou exclusivas para tabelas particionadas em Db2 LUW. O PostgreSQL exige que você crie chaves primárias ou exclusivas para cada partição diretamente. As restrições da chave primária ou exclusiva devem ser removidas da tabela pai. O nome da chave convertida está no formato <original\$1key\$1name>\$1<original\$1partition \$1name>.
+ É possível criar uma restrição de chave estrangeira de e para uma tabela particionada em Db2 LUW. No entanto, o PostgreSQL não é compatível com referências de chaves estrangeiras em tabelas particionadas. O PostgreSQL também não é compatível com as referências de chave estrangeira de uma tabela particionada para outra tabela.
+ Você pode criar um índice em uma tabela particionada em Db2 LUW. No entanto, o PostgreSQL exige que você crie um índice para cada partição diretamente. Os índices devem ser removidos da tabela pai. O nome do índice convertido está no formato <original\$1index\$1name>\$1<original\$1partition\$1name>.
+ Você deve definir os acionadores de linha em partições individuais, e não na tabela particionada. Os acionadores devem ser removidos da tabela pai. O nome do acionador convertido está no formato <original\$1trigger\$1name>\$1<original\$1partition\$1name>.

## Privilégios do PostgreSQL como destino
<a name="CHAP_Source.DB2LUW.ToPostgreSQL.ConfigureTarget"></a>

Para usar o PostgreSQL como destino AWS SCT , é necessário o privilégio. `CREATE ON DATABASE` Certifique-se de conceder esse privilégio para cada banco de dados PostgreSQL de destino.

Para usar os sinônimos públicos convertidos, altere o caminho de pesquisa padrão do banco de dados para `"$user", public_synonyms, public`.

É possível utilizar o exemplo de código a seguir para criar um usuário do banco de dados e conceder os privilégios.

```
CREATE ROLE user_name LOGIN PASSWORD 'your_password';
GRANT CREATE ON DATABASE db_name TO user_name;
ALTER DATABASE db_name SET SEARCH_PATH = "$user", public_synonyms, public;
```

No exemplo anterior, *user\$1name* substitua pelo nome do seu usuário. Em seguida, *db\$1name* substitua pelo nome do seu banco de dados de destino. Por fim, *your\$1password* substitua por uma senha segura.

No PostgreSQL, apenas o proprietário do esquema ou um `superuser` pode descartar um esquema. O proprietário pode descartar um esquema e todos os objetos incluídos nesse esquema, mesmo que o proprietário do esquema não possua alguns de seus objetos.

Ao usar usuários diferentes para converter e aplicar esquemas diferentes ao banco de dados de destino, você pode receber uma mensagem de erro quando não AWS SCT consegue descartar um esquema. Para evitar essa mensagem de erro, use o perfil `superuser`. 

# Migração da IBM DB2 para Linux, UNIX e Windows para o Amazon RDS for MySQL ou Amazon Aurora MySQL
<a name="CHAP_Source.DB2LUW.ToMySQL"></a>

Ao converter um banco de dados IBM Db2 LUW em RDS para MySQL ou Amazon Aurora MySQL, esteja ciente do seguinte.

## Privilégios do MySQL como um destino
<a name="CHAP_Source.DB2LUW.ToMySQL.ConfigureTarget"></a>

Os privilégios obrigatórios para MySQL como destino são listados a seguir:
+ CREATE ON \$1.\$1
+ ALTER ON \$1.\$1
+ DROP ON \$1.\$1
+ INDEX ON \$1.\$1
+ REFERENCES ON \$1.\$1
+ SELECT ON \$1.\$1
+ CREATE VIEW ON \$1.\$1
+ SHOW VIEW ON \$1.\$1
+ TRIGGER ON \$1.\$1
+ CREATE ROUTINE ON \$1.\$1
+ ALTER ROUTINE ON \$1.\$1
+ EXECUTE ON \$1.\$1
+ SELECT ON mysql.proc
+ INSIRA E ATUALIZE EM AWS\$1DB 2\$1EXT. \$1
+ INSIRA, ATUALIZE E EXCLUA EM AWS\$1DB 2\$1EXT\$1DATA. \$1
+ CRIE TABELAS TEMPORÁRIAS EM AWS\$1DB 2\$1EXT\$1DATA. \$1

É possível utilizar o exemplo de código a seguir para criar um usuário do banco de dados e conceder os privilégios.

```
CREATE USER 'user_name' IDENTIFIED BY 'your_password';
GRANT CREATE ON *.* TO 'user_name';
GRANT ALTER ON *.* TO 'user_name';
GRANT DROP ON *.* TO 'user_name';
GRANT INDEX ON *.* TO 'user_name';
GRANT REFERENCES ON *.* TO 'user_name';
GRANT SELECT ON *.* TO 'user_name';
GRANT CREATE VIEW ON *.* TO 'user_name';
GRANT SHOW VIEW ON *.* TO 'user_name';
GRANT TRIGGER ON *.* TO 'user_name';
GRANT CREATE ROUTINE ON *.* TO 'user_name';
GRANT ALTER ROUTINE ON *.* TO 'user_name';
GRANT EXECUTE ON *.* TO 'user_name';
GRANT SELECT ON mysql.proc TO 'user_name';
GRANT INSERT, UPDATE ON AWS_DB2_EXT.* TO 'user_name';
GRANT INSERT, UPDATE, DELETE ON AWS_DB2_EXT_DATA.* TO 'user_name';
GRANT CREATE TEMPORARY TABLES ON AWS_DB2_EXT_DATA.* TO 'user_name';
```

No exemplo anterior, *user\$1name* substitua pelo nome do seu usuário. Em seguida, *your\$1password* substitua por uma senha segura.

Para usar o Amazon RDS para MySQL ou o Aurora MySQL como destino, defina o parâmetro `lower_case_table_names` como `1`. Esse valor significa que o servidor MySQL manipula identificadores de nomes de objetos como tabelas, índices, acionadores e bancos de dados sem distinção entre maiúsculas e minúsculas. Se você ativou o registro binário em sua instância de destino, defina o parâmetro `log_bin_trust_function_creators` como `1`. Nesse caso, você não precisa usar as características `DETERMINISTIC`, `READS SQL DATA` ou `NO SQL` para criar funções armazenadas. Para configurar esses parâmetros, crie um novo grupo de parâmetros de banco de dados ou modifique um grupo de parâmetros de banco de dados existente.