Configure uma base de dados Oracle autogerida para CDC

Esta página descreve como configurar a captura de dados de alterações (CDC) para transmitir dados de uma base de dados Oracle autogerida para um destino suportado, como o BigQuery ou o Cloud Storage.

Pode configurar a sua base de dados Oracle autogerida para funcionar com os seguintes métodos de CDC:

Estes métodos especificam como o Datastream acede aos seus ficheiros de registo. Para mais informações sobre o leitor de registos binários e a API LogMiner, consulte Trabalhe com ficheiros de registo de refazer da base de dados Oracle.

Para instruções detalhadas sobre como configurar a base de dados Oracle de origem para cada um destes métodos, consulte as secções que se seguem.

Configure a sua base de dados Oracle autogerida para o leitor de registos binários

Para configurar a base de dados Oracle autogerida para utilização com o método CDC do leitor de registo binário, siga estes passos:

  1. Selecione um dos seguintes métodos para aceder aos ficheiros de registo:

    • Gestão automática de armazenamento (ASM): se selecionar esta opção, tem de criar uma associação de ASM dedicada e fornecer os respetivos detalhes quando criar o seu perfil de associação.
    • Diretórios da base de dados: se selecionar esta opção, tem de criar objetos de diretório da base de dados que apontem para os ficheiros de registo de repetição e os ficheiros de registo arquivados, e conceder acesso READ aos diretórios ao utilizador da base 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 o seguinte:

    • DIRECTORY_NAME_1: o nome do diretório para os ficheiros de registo de refazer online.
    • DIRECTORY_NAME_2: o nome do diretório para os ficheiros de registo de refazer arquivados.
    • ONLINE_REDO_LOGS_PATH: o caminho para o diretório onde os ficheiros de registo de refazimento online devem ser armazenados.
    • ARCHIVED_REDO_LOGS_PATH: o caminho para o diretório onde os ficheiros de registo arquivados devem ser armazenados.
    • USER_NAME: o nome do utilizador da base de dados ao qual quer conceder acesso READ.

    Se selecionar o método de leitor de registos binários e usar diretórios de bases de dados, tem de fornecer os nomes dos diretórios de registos de repetição e registos arquivados quando criar a sua stream.

  2. Confirme se a base de dados está a ser executada no modo ARCHIVELOG.

    Para o fazer, inicie sessão na sua base de dados Oracle e execute o seguinte comando no comando SQL:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Se o resultado for ARCHIVELOG, avance para o passo seguinte.
    2. Se o resultado for NOARCHIVELOG, tem de ativar o modo ARCHIVELOG para a sua base de dados.
    3. Execute os seguintes comandos quando tiver sessão iniciada como SYSDBA:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. Os ficheiros de registo arquivados consomem espaço em disco, pelo que deve configurar o parâmetro DB_RECOVERY_FILE_DEST_SIZE para a sua base de dados. Use este parâmetro para especificar (em bytes) o limite máximo do espaço total a ser usado pelos ficheiros de recuperação da base de dados de destino. Ao definir este parâmetro, pode gerir a compensação entre proteger a base de dados contra a falta de espaço em disco e a falha da stream devido à perda da posição do registo.

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

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

    Recomendamos que mantenha as cópias de segurança e os registos de arquivo durante, pelo menos, 4 dias, sendo 7 dias o recomendado.

  4. Regresse ao comando SQL da ferramenta de base de dados que está a usar para configurar a política de rotação de ficheiros de registo do Oracle. Recomendamos que defina um tamanho máximo do ficheiro de registo de, no máximo, 512 MB.

  5. Ative os dados de registo suplementares. Para tal, ative primeiro o registo suplementar mínimo ao nível da base de dados executando o seguinte comando:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    Em seguida, escolha se quer ativar o registo para tabelas específicas ou para toda a base de dados.

    Para registar alterações apenas para tabelas específicas, execute o seguinte comando para cada tabela que quer 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 quer registar alterações.

    Para replicar a maioria ou todas as tabelas na sua base de dados, considere ativar o registo para toda a base de dados. Execute o seguinte comando para ativar os dados de registo suplementares para toda a base de dados:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
  6. Conceda os privilégios adequados diretamente à conta de utilizador usada para estabelecer ligação à sua base de dados. Tenha em atenção que estas concessões não funcionam quando são atribuídas a uma função, por exemplo. Para o fazer, 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;
    GRANT READ ON DIRECTORY ONLINELOG_DIR TO USER_NAME;
    GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO USER_NAME;

    Substitua USER_NAME pelo nome da conta de utilizador que pretende usar para estabelecer ligação à sua base de dados.

Configure a sua base de dados Oracle autogerida para o LogMiner

  1. Confirme se a base de dados está a ser executada no modo ARCHIVELOG.

    Para o fazer, inicie sessão na sua base de dados Oracle e execute o seguinte comando no pedido de SQL:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Se o resultado for ARCHIVELOG, avance para o passo 2.
    2. Se o resultado for NOARCHIVELOG, tem de ativar o modo ARCHIVELOG para a sua base de dados.
    3. Execute os seguintes comandos quando tiver sessão iniciada como SYSDBA:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. Os ficheiros de registo arquivados consomem espaço em disco, pelo que deve configurar o parâmetro DB_RECOVERY_FILE_DEST_SIZE para a sua base de dados. Use este parâmetro para especificar (em bytes) o limite máximo do espaço total a ser usado pelos ficheiros de recuperação da base de dados de destino. Ao definir este parâmetro, pode gerir a compensação entre proteger a base de dados contra a falta de espaço em disco e a falha da stream devido à perda da posição do registo.

  2. Defina uma política de retenção de dados para a sua base de dados executando estes comandos do Oracle Recovery Manager (RMAN):

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

    Recomendamos que mantenha as cópias de segurança e os registos de arquivo durante, pelo menos, 4 dias, sendo 7 dias o recomendado.

  3. Regresse ao comando SQL da ferramenta de base de dados que está a usar para configurar a política de rotação de ficheiros de registo do Oracle. Recomendamos que defina um tamanho máximo do ficheiro de registo de, no máximo, 512 MB.

  4. Ative os dados de registo suplementares. Para tal, ative primeiro o registo suplementar mínimo ao nível da base de dados executando o seguinte comando:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    Em seguida, escolha se quer ativar o registo para tabelas específicas ou para toda a base de dados.

    Para registar alterações apenas para tabelas específicas, execute o seguinte comando para cada tabela que quer 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 quer registar alterações.

    Para replicar a maioria ou todas as tabelas na sua base de dados, considere ativar o registo para toda a base de dados. Execute o seguinte comando para ativar os dados de registo suplementares para toda a base de dados:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
  5. Conceda os privilégios adequados diretamente à conta de utilizador usada para estabelecer ligação à sua base de dados. Tenha em atenção que estas concessões não funcionam quando são atribuídas a uma função, por exemplo. Para o fazer, 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_$STANDY_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 a sua base de dados usar a encriptação de dados transparente (TDE), conceda as seguintes autorizaçõ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 autorização GRANT SELECT ANY TABLE, use a solução descrita na secção Captura de dados de alterações (CDC) da Oracle da página de Perguntas frequentes do Datastream.

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

    GRANT LOGMINING TO USER_NAME;
  6. Conceda à conta de utilizador SELECT acesso à vista DBA_EXTENTS na sua base de dados. Este privilégio permite-lhe usar o preenchimento baseado em ROWID para a sua origem Oracle:

    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

O que se segue?