Configurar um banco de dados plugável do Oracle

O Datastream é compatível com a arquitetura multilocatária da 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 conectável é independente, tem um ID e um nome exclusivos e pode ser gerenciado de forma independente.

É possível configurar seu banco de dados Oracle conectável para uso com os seguintes métodos de CDC:

Para mais informações sobre o leitor de registros binários e a API LogMiner, consulte Trabalhar com arquivos de registro "redo" 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 conectável para o leitor de registros binários

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

  1. 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 seu perfil de conexão.
    • 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 de registro de refazer e os 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 de registro de refazer on-line.
    • DIRECTORY_NAME_2: o nome do diretório para os arquivos de registro de refazer arquivados.
    • ONLINE_REDO_LOGS_PATH: o caminho para o diretório em que os arquivos de registro de refazer on-line serão armazenados.
    • ARCHIVED_REDO_LOGS_PATH: o caminho para o diretório em que os arquivos de registro arquivados serão armazenados.
    • USER_NAME: o nome do usuário do banco de dados a quem você quer conceder acesso ao READ.

    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 registros de refazer e arquivados ao criar o stream.

  2. Verifique se seu 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 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 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 fluxo devido à perda de 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. Recomendamos sete dias.

  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 à conta de usuário que será usada para se conectar ao seu banco de dados conectável. 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;
    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 usuário que você pretende usar para se conectar ao banco de dados.

Configurar o banco de dados Oracle conectável para o LogMiner

Para configurar um banco de dados conectável do Oracle auto-hospedado para uso com a API LogMiner, siga estas etapas:

  1. Verifique se seu banco de dados está sendo executado no modo ARCHIVELOG. Para isso, execute o seguinte comando 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 registros 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 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 fluxo devido à perda de posição do registro.

  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;
    

    O comando define a política de retenção de dados para todos os bancos de dados conectáveis no banco de dados do contêiner.

    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 o registro complementar no banco de dados no nível do contêiner 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 conectável.

    Para registrar mudanças apenas em tabelas específicas, conecte-se ao contêiner de banco de dados conectável 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 em que você quer registrar as mudanças.

    Para replicar várias 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 conectáveis. Um usuário comum pode se conectar e realizar operações no contêiner CDB$ROOT e em qualquer banco de dados conectável em que tenha privilégios. O nome de usuário comum precisa começar com C## ou c##.

  6. Conceda os privilégios necessários ao usuário comum que será usado para se conectar ao seu banco de dados. Permissões diferentes são necessárias nos níveis do contêiner CDB$ROOT e do banco de dados conectável.

    • 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 plugá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 usuário comum SELECT acesso à visualização DBA_EXTENTS no seu banco de dados. Com esse privilégio, você pode usar o backfill baseado em ROWID para sua origem do Oracle:

    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
  8. Se o banco de dados usa a criptografia transparente de dados (TDE), conceda as seguintes permissões:

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

A seguir