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:
- 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 READaos 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. 
- 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;- Se o resultado for ARCHIVELOG, avance para o passo seguinte.
- Se o resultado for NOARCHIVELOG, tem de ativar o modoARCHIVELOGpara a sua base de dados.
- Execute os seguintes comandos quando tiver sessão iniciada como - SYSDBA:- SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; 
- 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. 
 
- Se o resultado for 
- 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. 
- 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. 
- 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; 
- 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
- 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;- Se o resultado for ARCHIVELOG, avance para o passo 2.
- Se o resultado for NOARCHIVELOG, tem de ativar o modoARCHIVELOGpara a sua base de dados.
- Execute os seguintes comandos quando tiver sessão iniciada como - SYSDBA:- SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; 
- 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. 
 
- Se o resultado for 
- 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. 
- 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. 
- 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; 
- 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; 
- Conceda à conta de utilizador - SELECTacesso à vista- DBA_EXTENTSna sua base de dados. Este privilégio permite-lhe usar o preenchimento baseado em- ROWIDpara a sua origem Oracle:- GRANT SELECT ON DBA_EXTENTS TO USER_NAME; 
O que se segue?
- Saiba como o Datastream funciona com origens Oracle.