Configurar o banco de dados Oracle de origem

Visão geral

O Database Migration Service oferece suporte a migrações contínuas de bancos de dados de origem para bancos de dados de destino do Cloud SQL para PostgreSQL.

Os bancos de dados de origem compatíveis com o Oracle incluem as versões:

  • Oracle 11g, versão 11.2.0.4
  • Oracle 12c, versão 12.1.0.2
  • Oracle 12c, versão 12.2.0.1
  • Oracle 18c
  • Oracle 19c
  • Oracle 21c
  • Oracle Real Application Clusters (RAC)

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

Configurar o banco de dados Oracle de origem

Antes de usar o Database Migration Service para extrair dados do banco de dados Oracle de origem, configure seu banco de dados:

  • Configurar a geração de registros de arquivo para rastrear mudanças no banco de dados, como as operações INSERT, UPDATE, DELETE e RENAME.

  • Conceder os privilégios adequados à conta de usuário que será usada para se conectar 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 usando DBA_VIEWS. O acesso a DBA_VIEWS é concedido com o privilégio SELECT ANY DICTIONARY. Se as visualizações do DBA não forem acessíveis à conta de usuário da migração, o Database Migration Service vai retornar para ALL_VIEWS. Essa abordagem oferece o maior grau de flexibilidade para definir um modelo de segurança que melhor se adapta aos seus requisitos.

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

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

No momento, o Database Migration Service funciona com os seguintes tipos de bancos de dados Oracle:

Configurar um banco de dados do Amazon RDS para Oracle

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

    SELECT LOG_MODE FROM V$DATABASE;

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

    2. Se o resultado for NOARCHIVELOG, será necessário ativar o modo ARCHIVELOG para seu banco de dados.

    3. Os arquivos de registro arquivados consomem espaço em disco. Portanto, configure o parâmetro DB_RECOVERY_FILE_DEST_SIZE para seu banco de dados. Use esse parâmetro para especificar (em bytes) o limite absoluto no espaço total a ser usado pelos arquivos de recuperação do banco de dados de destino. Ao configurar esse parâmetro, é possível 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ê mantenha backups e arquive registros por no mínimo quatro dias. Recomendamos sete dias.

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

  2. Ative os dados de registro complementares. Para fazer isso, ative o registro complementar no banco de dados executando o seguinte comando:

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

    Em seguida, escolha se você quer ativar a geração de registros para tabelas específicas ou para todo o banco de dados.

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

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

    Substitua:

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

    Para replicar a maioria ou todas as tabelas do banco de dados, ative o registro para todo o banco de dados.

    No prompt SQL, execute o seguinte comando para habilitar dados de registro complementares para todo o banco de dados:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
  3. Conceda os privilégios necessários à conta de usuário que será usada para se conectar ao seu banco de dados. Para 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 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 isso, execute o seguinte comando:

    SELECT LOG_MODE FROM V$DATABASE;

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

    2. Se o resultado for NOARCHIVELOG, será necessário ativar o modo ARCHIVELOG para 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 registro arquivados consomem espaço em disco. Portanto, configure o parâmetro DB_RECOVERY_FILE_DEST_SIZE para seu banco de dados. Use esse parâmetro para especificar (em bytes) o limite absoluto no espaço total a ser usado pelos arquivos de recuperação do banco de dados de destino. Ao configurar esse parâmetro, é possível 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ê mantenha backups e arquive registros por no mínimo quatro dias. Recomendamos sete dias.

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

  4. Ative os dados de registro complementares. Para fazer isso, ative o registro complementar no banco de dados executando o seguinte comando:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    Em seguida, escolha se você quer ativar a geração de registros para tabelas específicas ou para todo o banco de dados.

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

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

    Substitua:

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

    Para replicar a maioria ou todas as tabelas do banco de dados, ative o registro para todo o banco de dados.

    Execute o comando a seguir para ativar os dados de registro complementares em todo o banco de dados:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (all) COLUMNS;
  5. Conceda os privilégios necessários à conta de usuário que será usada para se conectar ao seu banco de dados. Para 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 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 com plug-in do Oracle auto-hospedado

O Database Migration Service oferece suporte à arquitetura multilocatária do Oracle, em que um único banco de dados de contêiner (CDB) contém um ou mais bancos de dados conectáveis (PDBs). Cada banco de dados com plug-in é independente, tem um ID e um nome exclusivos e pode ser gerenciado de forma independente.

Para configurar um banco de dados plugável do Oracle auto-hospedado para que ele possa ser usado com o Database Migration Service, siga estas etapas:

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

    SELECT LOG_MODE FROM V$DATABASE;

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

    2. Se o resultado for NOARCHIVELOG, será necessário ativar o modo ARCHIVELOG para 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 registro arquivados consomem espaço em disco. Portanto, configure o parâmetro DB_RECOVERY_FILE_DEST_SIZE para seu banco de dados. Use esse parâmetro para especificar (em bytes) o limite absoluto no espaço total a ser usado pelos arquivos de recuperação do banco de dados de destino. Ao configurar esse parâmetro, é possível 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) no contêiner CDB$ROOT:

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;

    Recomendamos que você mantenha backups e arquive registros por no mínimo quatro dias. Recomendamos sete dias.

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

  4. Ative os dados de registro complementares. Para fazer isso, primeiro ative a geração de registros complementares no banco de dados no nível CDB$ROOT executando o seguinte comando:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    Em seguida, escolha se você quer ativar a geração de registros para tabelas específicas ou para todo o banco de dados.

    Para registrar alterações apenas em tabelas específicas, conecte-se ao contêiner de banco de dados com plug-in e execute o seguinte comando para cada tabela que você quer replicar:

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

    Substitua:

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

    Para replicar a maioria ou todas as tabelas do banco de dados, ative o registro para todo o banco de dados.

    Execute o comando a seguir para ativar os dados de registro complementares em todo o banco de dados:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (all) COLUMNS;
  5. Crie um usuário comum. Um usuário comum tem a mesma identidade no contêiner CDB$ROOT e nos bancos de dados com plug-in. Um usuário comum pode se conectar e realizar operações na raiz e em qualquer banco de dados com plug-in em que ele tenha privilégios. O nome de usuário comum precisa começar com C## ou c##.

  6. Conceda os privilégios adequados ao usuário comum que será usado para se conectar ao seu banco de dados. São necessárias permissões diferentes nos níveis do contêiner CDB$ROOT e do banco de dados com plug-in.

    • 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 com plug-in 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;