Configure uma base de dados Oracle conectável para CDC

A stream de dados suporta a arquitetura multi-inquilino da Oracle, em que uma única base de dados de contentor (CDB) contém uma ou mais bases de dados conectáveis (PDBs). Cada base de dados conectável é uma base de dados autónoma com um ID e um nome exclusivos, e pode ser gerida de forma independente.

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

Pode configurar a sua base de dados Oracle conectável para utilização com os seguintes métodos de CDC:

Para mais informações sobre o leitor de registos binários e a API LogMiner, consulte o artigo 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 conectável para o leitor de registos binários

Para configurar a base de dados Oracle conectável 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 no 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 à conta de utilizador que vai ser usada para estabelecer ligação à sua base de dados conectável. 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 conectável para o LogMiner

Para configurar uma base de dados amovível da Oracle alojada por si para que a possa usar com a API LogMiner, siga estes passos:

  1. Confirme se a base de dados está a ser executada no modo ARCHIVELOG. Para o fazer, execute o seguinte comando a partir do contentor CDB$ROOT:

    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 no 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 o seguinte comando do Oracle Recovery Manager (RMAN) a partir do contentor CDB$ROOT:

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
    

    O comando define a política de retenção de dados para todas as bases de dados conectáveis na sua base de dados de contentores.

    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 o fazer, comece por ativar o registo suplementar na base de dados ao nível do contentor CDB$ROOT 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 conectável.

    Para registar alterações apenas para tabelas específicas, estabeleça ligação ao contentor da base de dados conectável e 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 várias 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. Crie um utilizador comum. Um utilizador comum tem a mesma identidade no contentor CDB$ROOT e nas bases de dados conectáveis. Um utilizador comum pode estabelecer ligação e realizar operações no contentor CDB$ROOT e em qualquer base de dados conectável na qual tenha privilégios. O nome de utilizador comum tem de começar com C## ou c##.

  6. Conceda os privilégios adequados ao utilizador comum que vai ser usado para estabelecer ligação à sua base de dados. São necessárias autorizações diferentes ao nível do contentor CDB$ROOT e da base de dados conectável.

    • Ligue-se ao contentor do 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;
    
    • Associe à base de dados conectável 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 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 DBA_SUPPLEMENTAL_LOGGING TO USER_NAME;
    GRANT SELECT ON SYS.V_$PARAMETER TO USER_NAME;
    
  7. Conceda ao utilizador comum 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;
  8. 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;

O que se segue?