Configurar um banco de dados Oracle autogerenciado para CDC

Nesta página, descrevemos como configurar a captura de dados alterados (CDC) para transmitir dados de um banco de dados Oracle autogerenciado para um destino compatível, como o BigQuery ou o Cloud Storage.

É possível configurar seu banco de dados Oracle autogerenciado para funcionar com os seguintes métodos de CDC:

Esses métodos especificam como o Datastream acessa seus arquivos de registro. Para mais informações sobre o leitor de registros binários e a API LogMiner, consulte Trabalhar com arquivos do tipo redo log do banco de dados Oracle.

Para instruções detalhadas sobre como configurar o banco de dados Oracle de origem para cada um desses métodos, consulte as seções a seguir.

Configurar o banco de dados Oracle autogerenciado para o leitor de registros binários

Para configurar o banco de dados Oracle autogerenciado para o uso com o método de CDC do leitor de registros binários, siga estas etapas:

  1. Crie uma conta de usuário do banco de dados para ser usada pelo Datastream na conexão com seu banco de dados:

    CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD;

    Substitua:

    • USER_NAME: o nome da conta de usuário do banco de dados que você quer usar para se conectar ao banco de dados.
    • USER_PASSWORD: a senha da conta de usuário do banco de dados.
  2. Selecione um dos seguintes métodos para acessar seus arquivos de registros:

    • Gerenciamento automático de armazenamento (ASM): se você selecionar essa opção, crie uma conexão ASM dedicada e forneça os detalhes dela ao criar o perfil de conexão. A conta de usuário usada para a conexão do ASM precisa ter o privilégio SYSASM.

      Para criar um usuário do ASM com o privilégio SYSASM, execute os seguintes comandos:

      CREATE USER ASM_USER_NAME IDENTIFIED BY ASM_PASSWORD;
      GRANT SYSASM TO ASM_USER_NAME;

      Substitua:

      • ASM_USER_NAME: o nome do usuário do ASM.
      • ASM_PASSWORD: a senha do usuário do ASM.
    • Diretórios de banco de dados: se você selecionar essa opção, crie objetos de diretório de banco de dados que apontem para os arquivos redo log e arquivos de registro arquivados e conceda acesso READ aos diretórios para o usuário do banco de dados:

    CREATE DIRECTORY DIRECTORY_NAME_1 as 'ONLINE_REDO_LOGS_PATH';
    CREATE DIRECTORY DIRECTORY_NAME_2 as 'ARCHIVED_REDO_LOGS_PATH';
    GRANT READ ON DIRECTORY DIRECTORY_NAME_1 to USER_NAME;
    GRANT READ ON DIRECTORY DIRECTORY_NAME_2 to USER_NAME;

    Substitua:

    • DIRECTORY_NAME_1: o nome do diretório dos arquivos redo log disponíveis.
    • DIRECTORY_NAME_2: o nome do diretório para os arquivos redo log arquivados.
    • ONLINE_REDO_LOGS_PATH: o caminho para o diretório em que os arquivos redo log disponíveis serão armazenados.
    • ARCHIVED_REDO_LOGS_PATH: o caminho para o diretório em que os arquivos redo log serão armazenados.
    • USER_NAME: o nome da conta de usuário do banco de dados criada anteriormente.

    Se você selecionar o método de leitura de registros binários e usar diretórios de banco de dados, será necessário fornecer os nomes dos diretórios de redo logs e de registros arquivados ao criar o stream.

  3. Verifique se o banco de dados está sendo executado no modo ARCHIVELOG.

    Para fazer isso, faça login no banco de dados Oracle e execute o seguinte comando no prompt SQL:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Se o resultado for ARCHIVELOG, avance para a próxima etapa.
    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 registros arquivados consomem espaço em disco. Portanto, configure o parâmetro DB_RECOVERY_FILE_DEST_SIZE para o 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 definir esse parâmetro, é possível gerenciar a compensação entre proteger o banco de dados contra falta de espaço em disco e a falha do stream devido à perda da posição do registro.

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

    TARGET /
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;

    Recomendamos que você mantenha backups e arquive registros por no mínimo quatro dias, sendo sete dias o mais recomendado.

  5. 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.

  6. Ative os dados de registro complementares. Para fazer isso, primeiro ative o registro complementar mínimo no nível do 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 em que você quer registrar as mudanças.

    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;
  7. Conceda os privilégios adequados diretamente à conta de usuário usada para se conectar ao seu banco de dados. Essas concessões não funcionam quando são atribuídas a um papel, por exemplo. Para isso, execute os seguintes comandos:

    GRANT SELECT ON GV_$LOG TO USER_NAME;
    GRANT SELECT ON GV_$LOGFILE TO USER_NAME;
    GRANT SELECT ON GV_$ARCHIVED_LOG TO USER_NAME;
    GRANT SELECT ON GV_$INSTANCE TO USER_NAME;
    GRANT SELECT ON GV_$STANDBY_LOG TO USER_NAME;
    GRANT SELECT ON V_$INSTANCE TO USER_NAME;
    GRANT SELECT ON V_$PDBS TO USER_NAME;
    GRANT SELECT ON V_$TRANSPORTABLE_PLATFORM TO USER_NAME;
    GRANT SELECT ON V_$DATABASE TO USER_NAME;
    GRANT SELECT ON V_$PARAMETER TO USER_NAME;
    GRANT SELECT ON COL$ TO USER_NAME;
    GRANT SELECT ON DBA_OBJECTS TO USER_NAME;
    GRANT SELECT ON DBA_TABLESPACES TO USER_NAME;
    GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
    
    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;

    Substitua USER_NAME pelo nome da conta de usuário do banco de dados criada anteriormente.

Configurar o banco de dados Oracle autogerenciado para o LogMiner

  1. Crie uma conta de usuário do banco de dados para ser usada pelo Datastream na conexão com seu banco de dados:

    CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD;

    Substitua:

    • USER_NAME: o nome da conta de usuário do banco de dados que você quer usar para se conectar ao banco de dados.
    • USER_PASSWORD: a senha da conta de usuário do banco de dados.
  2. Verifique se seu banco de dados está sendo executado no modo ARCHIVELOG.

    Para isso, faça login no banco de dados Oracle e execute o seguinte comando no prompt SQL:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Se o resultado for ARCHIVELOG, avance para a próxima etapa.
    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 registros arquivados consomem espaço em disco. Portanto, configure o parâmetro DB_RECOVERY_FILE_DEST_SIZE para o 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 definir esse parâmetro, é possível gerenciar a compensação entre proteger o banco de dados contra falta de espaço em disco e a falha do stream devido à perda da posição do registro.

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

    TARGET /
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;

    Recomendamos que você mantenha backups e arquive registros por no mínimo quatro dias, sendo sete dias o mais recomendado.

  4. 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.

  5. Ative os dados de registro complementares. Para fazer isso, primeiro ative o registro complementar mínimo no nível do 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 em que você quer registrar as mudanças.

    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;
  6. Conceda os privilégios adequados diretamente à conta de usuário usada para se conectar ao seu banco de dados. Essas concessões não funcionam quando são atribuídas a um papel, por exemplo. Para isso, execute os seguintes comandos:

    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    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_$LOG TO USER_NAME; -- for primary databases
    GRANT SELECT ON SYS.V_$STANDBY_LOG TO USER_NAME; -- for standby databases
    GRANT SELECT ON SYS.V_$LOGFILE 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_$PARAMETER 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;

    Se o banco de dados usa a criptografia transparente de dados (TDE, na sigla em inglês), conceda as seguintes permissões:

    GRANT SELECT ON DBA_TABLESPACES TO USER_NAME;
    GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME;

    Se a sua organização não permitir a concessão da permissão GRANT SELECT ANY TABLE, use a solução descrita na seção Captura de dados alterados (CDC) do Oracle da página de perguntas frequentes do Datastream.

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

    GRANT LOGMINING TO USER_NAME;
  7. Conceda à conta de usuário SELECT acesso à visualização DBA_EXTENTS no seu banco de dados. Com esse privilégio, você pode usar o preenchimento automático com base em ROWID para sua origem do Oracle:

    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

A seguir