Configure seu banco de dados Oracle de origem

O Database Migration Service aproveita a API Oracle LogMiner, que faz parte do Oracle Database, para consultar arquivos de redo log arquivados. Os arquivos de redo log contêm informações sobre o histórico de atividades em um banco de dados. Para obter mais informações sobre como o Database Migration Service funciona com esses arquivos de log, consulte Sobre fluxo de dados para migrações Oracle .

Configure seu banco de dados Oracle de origem

Antes de poder usar o Database Migration Service para extrair dados do seu banco de dados Oracle de origem, você deve configurar seu banco de dados:

  • Configurando o log de arquivo para rastrear alterações em seu banco de dados, como as operações INSERT , UPDATE , DELETE e RENAME .

  • Conceder os privilégios apropriados à conta de usuário que será usada para conectar-se ao seu banco de dados e acessar objetos de esquema e código.

    Por padrão, o Database Migration Service tenta acessar todas as definições de objeto por meio de DBA_VIEWS . O acesso a DBA_VIEWS é concedido com o privilégio SELECT ANY DICTIONARY . Se as visualizações do DBA não estiverem acessíveis à conta do usuário de migração, o Database Migration Service retornará para ALL_VIEWS . Essa abordagem oferece o maior grau de flexibilidade em relação à definição de um modelo de segurança que melhor atenda aos seus requisitos.

    Se você quiser que o Database Migration Service acesse apenas um determinado subconjunto de suas definições de objeto, conceda ao usuário de migração uma função com configuração de privilégios mais refinada em vez de SELECT ANY DICTIONARY .

  • Definir uma política de retenção de dados para a sua base de dados para determinar quais dados serão arquivados, por quanto tempo serão mantidos, caso os dados no final do período de retenção sejam arquivados ou destruídos.

O Database Migration Service funciona com os seguintes tipos de bancos de dados Oracle:

Configurar um banco de dados Amazon RDS para Oracle

  1. Verifique se seu banco de dados está sendo executado no modo ARCHIVELOG . Para fazer isso, execute o seguinte comando:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Se o resultado for ARCHIVELOG , vá para a etapa c.

    2. Se o resultado for NOARCHIVELOG , você precisará habilitar o modo ARCHIVELOG para seu banco de dados.

    3. Os arquivos de log arquivados consomem espaço em disco, recomendamos que você configure o parâmetro DB_RECOVERY_FILE_DEST_SIZE para seu banco de dados. Use este parâmetro para especificar (em bytes) o limite rígido do espaço total a ser usado pelos arquivos de recuperação do banco de dados de destino. Ao definir esse parâmetro, você pode gerenciar a compensação entre disponibilidade de informações e espaço em disco.

    4. Defina uma política de retenção de dados para seu banco de dados executando este comando:

      exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);

      Recomendamos que você retenha backups e arquive logs por no mínimo 4 dias, e 7 dias é recomendado.

    5. Configure a política de rotação de arquivos de log do Oracle. Recomendamos definir um tamanho máximo de arquivo de log de no máximo 512 MB. Para obter mais informações sobre como gerenciar a rotação de log, consulte Trabalhar com arquivos de log do banco de dados Oracle .

  2. Habilite dados de log complementares . Para fazer isso, primeiro habilite o log suplementar no banco de dados executando o seguinte comando:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

    Em seguida, escolha se deseja ativar o registro em log para tabelas específicas ou para todo o banco de dados.

    Para registrar alterações apenas em tabelas específicas, execute o seguinte comando para cada tabela que você deseja replicar:

    ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS

    Substitua o seguinte:

    • SCHEMA : o nome do esquema que contém a tabela.
    • TABLE : o nome da tabela para a qual você deseja registrar as alterações.

    Para replicar a maioria ou todas as tabelas do seu banco de dados, considere ativar o logon para todo o banco de dados.

    No prompt SQL, execute o seguinte comando para ativar dados de log complementares para todo o banco de dados:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
  3. Conceda os privilégios apropriados à conta de usuário que será usada para conectar-se ao seu banco de dados. Para fazer isso, execute os seguintes comandos:

    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','USER_NAME','EXECUTE');
    exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR_D','USER_NAME','EXECUTE');
    GRANT SELECT ANY TRANSACTION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT SELECT ANY DICTIONARY TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

    Se o seu banco de dados de origem for Oracle 12c ou mais recente, conceda o seguinte privilégio adicional:

    GRANT LOGMINING TO USER_NAME;

Configurar um banco de dados Oracle auto-hospedado

  1. Verifique se seu banco de dados está sendo executado no modo ARCHIVELOG . Para fazer isso, execute o seguinte comando:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Se o resultado for ARCHIVELOG , vá para a etapa 2.

    2. Se o resultado for NOARCHIVELOG , você precisará habilitar o modo ARCHIVELOG para seu banco de dados.

    3. Execute os seguintes comandos quando estiver logado como SYSDBA :

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. Os arquivos de log arquivados consomem espaço em disco, recomendamos que você configure o parâmetro DB_RECOVERY_FILE_DEST_SIZE para seu banco de dados. Use este parâmetro para especificar (em bytes) o limite rígido do espaço total a ser usado pelos arquivos de recuperação do banco de dados de destino. Ao definir esse parâmetro, você pode gerenciar a compensação entre disponibilidade de informações e espaço em disco.

  2. Defina uma política de retenção de dados para seu banco de dados executando o seguinte comando do Oracle Recovery Manager (RMAN):

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;

    Recomendamos que você retenha backups e arquive logs por no mínimo 4 dias, e 7 dias é recomendado.

  3. Retorne ao prompt SQL da ferramenta de banco de dados que você está usando para configurar a política de rotação de arquivos de log do Oracle. Recomendamos definir um tamanho máximo de arquivo de log de no máximo 512 MB.

  4. Habilite dados de log complementares . Para fazer isso, primeiro habilite o log suplementar no banco de dados executando o seguinte comando:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    Em seguida, escolha se deseja ativar o registro em log para tabelas específicas ou para todo o banco de dados.

    Para registrar alterações apenas em tabelas específicas, execute o seguinte comando para cada tabela que você deseja replicar:

    ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS

    Substitua o seguinte:

    • SCHEMA : o nome do esquema que contém a tabela.
    • TABLE : o nome da tabela para a qual você deseja registrar as alterações.

    Para replicar a maioria ou todas as tabelas do seu banco de dados, considere ativar o logon para todo o banco de dados.

    Execute o seguinte comando para ativar dados de log complementares para todo o banco de dados:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (all) COLUMNS;
  5. Conceda os privilégios apropriados à conta de usuário que será usada para conectar-se ao seu banco de dados. Para fazer isso, execute os seguintes comandos:

    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;
    GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO USER_NAME;
    GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME;
    GRANT SELECT ON SYS.V_$LOGMNR_LOGS TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME;
    GRANT SELECT ANY TRANSACTION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT SELECT ANY DICTIONARY TO USER_NAME;
    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

    Se o seu banco de dados de origem for Oracle 12c ou mais recente, conceda o seguinte privilégio adicional:

    GRANT LOGMINING TO USER_NAME;

Configurar um banco de dados plugável Oracle auto-hospedado

O Database Migration Service oferece suporte à arquitetura multilocatário Oracle, onde um único banco de dados contêiner (CDB) contém um ou mais bancos de dados conectáveis ​​(PDBs). Cada banco de dados conectável é um banco de dados independente com ID e nome exclusivos e pode ser gerenciado de forma independente.

Para configurar um banco de dados plugável Oracle auto-hospedado para que você possa usá-lo com o Database Migration Service, execute as seguintes etapas:

  1. Verifique se seu banco de dados está sendo executado no modo ARCHIVELOG . Para fazer isso, execute o seguinte comando do contêiner CDB$ROOT :

    SELECT LOG_MODE FROM V$DATABASE;

    1. Se o resultado for ARCHIVELOG , passe para a etapa 2.

    2. Se o resultado for NOARCHIVELOG , você precisará ativar o modo ARCHIVELOG para o seu banco de dados.

    3. Execute os seguintes comandos quando conectado como SYSDBA :

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. Os arquivos de log arquivados consomem espaço em disco, recomendamos que você configure o parâmetro DB_RECOVERY_FILE_DEST_SIZE para o seu banco de dados. Use este parâmetro para especificar (em bytes) o limite rígido no espaço total a ser usado pelos arquivos de recuperação do banco de dados de destino. Ao definir este parâmetro, você pode gerenciar a troca entre a disponibilidade de informações e o espaço em disco.

  2. Defina uma política de retenção de dados para o seu banco de dados executando o seguinte comando Oracle Recovery Manager (RMAN) do contêiner CDB$ROOT :

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;

    Recomendamos que você mantenha backups e registros de arquivamento por um mínimo de 4 dias, e 7 dias são recomendados.

  3. Retorne ao prompt SQL da ferramenta de banco de dados que você está usando para configurar a política de rotação do arquivo de log do Oracle. Recomendamos definir um tamanho máximo de arquivo de log não superior a 512 MB.

  4. Ativar dados de log suplementares . Para fazer isso, primeiro ative o registro suplementar no banco de dados no nível CDB$ROOT , executando o seguinte comando:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    Em seguida, escolha se deseja ativar o log para tabelas específicas ou todo o banco de dados flashable.

    Para registrar as alterações apenas para tabelas específicas, conecte -se ao contêiner de banco de dados frugável e execute o seguinte comando para cada tabela que você deseja replicar:

    ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS

    Substitua o seguinte:

    • SCHEMA : o nome do esquema que contém a tabela.
    • TABLE : o nome da tabela para o qual você deseja registrar alterações.

    Para replicar a maioria ou todas as tabelas do seu banco de dados, considere ativar o login para todo o banco de dados.

    Execute o seguinte comando para ativar dados de log suplementares para todo o banco de dados:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (all) COLUMNS;
  5. Crie um usuário comum . Um usuário comum possui a mesma identidade no contêiner CDB$ROOT e nos bancos de dados flugable. Um usuário comum pode se conectar e executar operações dentro da raiz e dentro de qualquer banco de dados flugable no qual possua privilégios. O nome de usuário comum deve começar com C## ou c## .

  6. Conceda os privilégios apropriados ao usuário comum que será usado para se conectar ao seu banco de dados. Diferentes permissões são necessárias no contêiner CDB$ROOT e nos níveis de banco de dados flugable.

    • Conecte -se ao contêiner CDB$ROOT e execute os seguintes comandos:

      GRANT CREATE SESSION TO USER_NAME;
      GRANT SET CONTAINER TO USER_NAME;
      GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;
      GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME;
      GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME;
      GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME;
      GRANT LOGMINING TO USER_NAME;
      GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    • Conecte -se ao banco de dados flashable e execute os seguintes comandos:

      GRANT CREATE SESSION TO USER_NAME;
      GRANT SET CONTAINER TO USER_NAME;
      GRANT SELECT ANY TABLE TO USER_NAME;
      GRANT SELECT ANY DICTIONARY TO USER_NAME;
      GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;
      GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO USER_NAME;
      GRANT SELECT ON DBA_SUPPLEMENTAL_LOGGING TO USER_NAME;
      GRANT SELECT ON DBA_EXTENTS TO USER_NAME;