O serviço de migração de base de dados tira partido da API Oracle LogMiner, que faz parte da base de dados Oracle, para consultar ficheiros de registo de refazer arquivados. Os ficheiros de registo de repetição contêm informações sobre o histórico de atividade numa base de dados. Para mais informações sobre como o Database Migration Service funciona com estes ficheiros de registo, consulte Acerca do fluxo de dados para migrações do Oracle.
Configure a base de dados Oracle de origem
Antes de poder usar o Database Migration Service para extrair dados da sua base de dados Oracle de origem, tem de configurar a base de dados da seguinte forma:
Configurar o registo de arquivo para acompanhar as alterações na sua base de dados, como as operações
INSERT
,UPDATE
,DELETE
eRENAME
.Conceder os privilégios adequados à conta de utilizador que vai ser usada para se ligar à sua base de dados e aceder a objetos de esquema e de código.
Por predefinição, o serviço de migração de bases de dados tenta aceder a todas as definições de objetos através do
DBA_VIEWS
. O acesso aoDBA_VIEWS
é concedido com o privilégioSELECT ANY DICTIONARY
. Se as vistas DBA não estiverem acessíveis à conta de utilizador da migração, o serviço de migração de bases de dados recorre aALL_VIEWS
. Esta abordagem oferece-lhe o maior grau de flexibilidade no que diz respeito à definição de um modelo de segurança que melhor se adequa aos seus requisitos.Se quiser que o Serviço de migração de bases de dados aceda apenas a um determinado subconjunto das suas definições de objetos, conceda ao utilizador de migração uma função com uma configuração de privilégios mais detalhada em vez de
SELECT ANY DICTIONARY
.Definir uma política de retenção de dados para a sua base de dados para determinar que dados vão ser arquivados, durante quanto tempo vão ser mantidos e se os dados no final do período de retenção devem ser arquivados ou destruídos.
O Database Migration Service funciona com os seguintes tipos de bases de dados Oracle:
Configure uma base de dados Amazon RDS for Oracle
Confirme se a base de dados está a ser executada no modo
ARCHIVELOG
. Para isso, execute o seguinte comando:SELECT LOG_MODE FROM V$DATABASE;
Se o resultado for
ARCHIVELOG
, avance para o passo c.Se o resultado for
NOARCHIVELOG
, tem de ativar o modoARCHIVELOG
para a sua base de dados.Os ficheiros de registo arquivados consomem espaço no disco. Recomendamos que configure 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 a disponibilidade de informações e o espaço em disco.Defina uma política de retenção de dados para a sua base de dados executando este comando:
exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
Recomendamos que mantenha as cópias de segurança e os registos de arquivo durante, pelo menos, 4 dias, sendo 7 dias o recomendado.
Configure 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. Para mais informações sobre a gestão da rotação de registos, consulte o artigo Trabalhe com ficheiros de registo da base de dados Oracle.
Ative os dados de registo suplementares. Para tal, ative primeiro o registo suplementar na base de dados executando o seguinte comando:
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
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.
Na linha de comandos SQL, execute o seguinte comando para ativar os dados de registo suplementares para toda a base de dados:
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
Conceda os privilégios adequados à conta de utilizador que vai ser usada para estabelecer ligação à sua base de dados. Para o fazer, 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 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;
Configure uma base de dados Oracle autoalojada
Confirme se a base de dados está a ser executada no modo
ARCHIVELOG
. Para isso, execute o seguinte comando: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 modoARCHIVELOG
para 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 no disco. Recomendamos que configure 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 a disponibilidade de informações e o espaço em disco.
Defina uma política de retenção de dados para a sua base de dados executando o seguinte comando do Oracle Recovery Manager (RMAN):
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 na 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 à conta de utilizador que vai ser usada para estabelecer ligação à sua base de dados. Para o fazer, 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 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;
Configure uma base de dados conectável Oracle autoalojada
O Serviço de migração de bases 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.
Para configurar uma base de dados Oracle conectável alojada por si para poder usá-la com o serviço de migração de bases de dados, siga estes passos:
Confirme se a base de dados está a ser executada no modo
ARCHIVELOG
. Para o fazer, execute o seguinte comando a partir do contentorCDB$ROOT
: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 modoARCHIVELOG
para 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 no disco. Recomendamos que configure 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 a disponibilidade de informações e o espaço em disco.
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;
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 na base de dados ao nível da
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 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;
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 ligar-se e realizar operações na raiz e em qualquer base de dados conectável na qual tenha privilégios. O nome de utilizador comum tem de começar comC##
ouc##
.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 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;