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;
- Se o resultado for
ARCHIVELOG
, avance para a etapa c. - Se o resultado for
NOARCHIVELOG
, será necessário ativar o modoARCHIVELOG
para seu banco de dados. - Como os arquivos de registro arquivados consomem espaço em disco, 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 o equilíbrio entre proteger o banco de dados contra a falta de espaço em disco e a falha do stream devido à perda de posição do registro.
- Defina uma política de retenção de dados para seu banco de dados executando este comando:
Recomendamos que você retenha backups e registros de arquivamento por no mínimo quatro dias. Recomendamos sete dias.exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
- Configure a política de rotação de arquivos de registros da Oracle. Recomendamos definir o tamanho máximo do arquivo de registro como um valor menor que 1 GB.
- Se o resultado for
Ative os dados de registro complementares. Para isso, primeiro ative a geração de registros complementar mínima no nível do banco de dados executando o seguinte comando:
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
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 para a qual você quer registrar as alterações.
Para replicar a maioria ou todas as tabelas do banco de dados, ative o registro para todo o banco de dados.
No prompt SQL, execute o seguinte comando para habilitar dados de registro complementares para todo o banco de dados:
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
Conceda os privilégios necessários à conta de usuário que será usada para se conectar ao seu banco de dados. Para isso, execute os seguintes comandos:
GRANT EXECUTE_CATALOG_ROLE TO USER_NAME; GRANT CONNECT TO USER_NAME; GRANT CREATE SESSION TO USER_NAME; exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','USER_NAME','EXECUTE'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR_D','USER_NAME','EXECUTE'); GRANT SELECT ANY TRANSACTION TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME;
Caso sua organização não permita que você conceda a permissão
GRANT SELECT ANY TABLE
, use a solução descrita na seção Captura de dados de alteração (CDC) da Oracle da página de perguntas frequentes sobre o 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;
Conceda à conta de usuário acesso
SELECT
à visualizaçãoDBA_EXTENTS
no seu banco de dados. Esse privilégio permite que você use o preenchimento automático baseado emROWID
para sua origem do Oracle:GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
A seguir
- Saiba mais sobre como o Datastream funciona com as fontes Oracle.