O Database Migration Service usa a API Oracle LogMiner, que faz parte do Oracle Database, para consultar arquivos de registro "redo" arquivados. Os arquivos de registros "redo" contêm informações sobre o histórico de atividades em um banco de dados. Para mais informações sobre como o Database Migration Service funciona com esses arquivos de registro, consulte Sobre o fluxo de dados para migrações do Oracle.
Configurar o banco de dados Oracle de origem
Antes de usar o Database Migration Service para extrair dados do banco de dados Oracle de origem, configure seu banco de dados:
Configurar a geração de registros de arquivo para rastrear mudanças no banco de dados, como as operações
INSERT
,UPDATE
,DELETE
eRENAME
.Conceder os privilégios adequados à conta de usuário que será usada para se conectar ao seu banco de dados e acessar objetos de esquema e código.
Por padrão, o Database Migration Service tenta acessar todas as definições de objeto usando
DBA_VIEWS
. O acesso aDBA_VIEWS
é concedido com o privilégioSELECT ANY DICTIONARY
. Se as visualizações do DBA não estiverem acessíveis à conta de usuário de migração, o Database Migration Service vai usar oALL_VIEWS
. Essa abordagem oferece o maior grau de flexibilidade para definir um modelo de segurança que melhor atenda aos seus requisitos.Se você quiser que Database Migration Service acesse apenas um determinado subconjunto das definições de objeto, conceda ao usuário de migração uma função com uma configuração de privilégio mais refinada em vez de
SELECT ANY DICTIONARY
.Definir uma política de retenção de dados para o banco de dados determinando por que dados serão arquivados, por quanto tempo serão mantidos, caso os dados no final do período de armazenamento sejam arquivados ou destruídos.
O Database Migration Service funciona com os seguintes tipos de bancos de dados Oracle:
Configurar um banco de dados do Amazon RDS para Oracle
Verifique se seu banco de dados está sendo executado no modo
ARCHIVELOG
. Para isso, execute o seguinte comando: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.Os arquivos de registros arquivados consomem espaço em disco. Recomendamos que você 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 configurar esse parâmetro, é possível gerenciar a compensação entre disponibilidade de informações e espaço em disco.Defina uma política de retenção de dados para seu banco de dados executando este comando:
exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
Recomendamos que você mantenha backups e arquive registros por no mínimo quatro dias. Recomendamos sete dias.
Configure 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. Para mais informações sobre como gerenciar a rotação de registros, consulte Trabalhar com arquivos de registro do banco de dados Oracle.
Ative os dados de registro complementares. Para fazer isso, ative o registro complementar no 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 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.
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 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; GRANT SELECT ANY DICTIONARY TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
Se o banco de dados de origem for Oracle 12c ou mais recente, conceda o seguinte privilégio adicional:
GRANT LOGMINING TO USER_NAME;
Configurar um banco de dados Oracle auto-hospedado
Verifique se seu banco de dados está sendo executado no modo
ARCHIVELOG
. Para isso, execute o seguinte comando:SELECT LOG_MODE FROM V$DATABASE;
Se o resultado for
ARCHIVELOG
, avance para a etapa 2.Se o resultado for
NOARCHIVELOG
, será necessário ativar o modoARCHIVELOG
para seu banco de dados.Execute os seguintes comandos quando conectado como
SYSDBA
:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
Os arquivos de registros arquivados consomem espaço em disco. Recomendamos que você 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 configurar esse parâmetro, é possível gerenciar a compensação entre disponibilidade de informações e espaço em disco.
Defina uma política de retenção de dados para seu banco de dados executando o seguinte comando do Oracle Recovery Manager (RMAN):
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.
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.
Ative os dados de registro complementares. Para fazer isso, ative o registro complementar no 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;
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 CONNECT TO USER_NAME; GRANT CREATE SESSION TO USER_NAME; GRANT SELECT ON SYS.V_$DATABASE 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_$LOGMNR_LOGS 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; GRANT SELECT ANY DICTIONARY TO USER_NAME; GRANT EXECUTE_CATALOG_ROLE TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
Se o banco de dados de origem for Oracle 12c ou mais recente, conceda o seguinte privilégio adicional:
GRANT LOGMINING TO USER_NAME;
Configurar um banco de dados plugável do Oracle auto-hospedado
O Database Migration Service é 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 plugáveis (PDBs). Cada banco de dados conectável é independente, tem um ID e um nome exclusivos e pode ser gerenciado de forma independente.
Para configurar um banco de dados plugável do Oracle auto-hospedado para uso com o Database Migration Service, siga estas etapas:
Verifique se seu banco de dados está sendo executado no modo
ARCHIVELOG
. Para isso, execute o seguinte comando no contêinerCDB$ROOT
:SELECT LOG_MODE FROM V$DATABASE;
Se o resultado for
ARCHIVELOG
, avance para a etapa 2.Se o resultado for
NOARCHIVELOG
, será necessário ativar o modoARCHIVELOG
para seu banco de dados.Execute os seguintes comandos quando conectado como
SYSDBA
:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
Os arquivos de registros arquivados consomem espaço em disco. Recomendamos que você 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 configurar esse parâmetro, é possível gerenciar a compensação entre disponibilidade de informações e espaço em disco.
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;
Recomendamos que você mantenha backups e arquive registros por no mínimo quatro dias. Recomendamos sete dias.
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.
Ative os dados de registro complementares. Para fazer isso, primeiro ative o registro complementar no banco de dados no nível
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 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;
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 na raiz e em qualquer banco de dados conectável em que tenha privilégios. O nome de usuário comum precisa começar comC##
ouc##
.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 ANY DICTIONARY TO USER_NAME; GRANT SELECT ON SYS.V_$DATABASE 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 DBA_EXTENTS TO USER_NAME;