O Datastream oferece suporte à 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 com plug-in é independente, tem um ID e um nome exclusivos e pode ser gerenciado de forma independente.
É possível configurar o banco de dados plugável do Oracle para uso com os seguintes métodos de CDC:Para mais informações sobre o leitor de registro binário 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 plugável do Oracle para leitor de registro binário
Para configurar o banco de dados plugável do Oracle para uso com o método CDC do leitor de registros binários, siga estas etapas:
Selecione um dos métodos a seguir para acessar seus arquivos de registro:
- Gerenciamento automático de armazenamento (ASM): se você selecionar essa opção, será necessário criar uma conexão ASM dedicada e fornecer os detalhes dela ao criar o perfil de conexão.
- Diretórios de banco de dados: se você selecionar essa opção, será necessário criar objetos de diretório de banco de dados que apontem para os arquivos de registro de repetição e os arquivos de registro arquivados e conceder acesso
READ
aos diretórios ao usuário do banco de dados:
CREATE DIRECTORY
DIRECTORY_NAME_1 as 'ONLINE_REDO_LOGS_PATH '; CREATE DIRECTORYDIRECTORY_NAME_2 as 'ARCHIVED_REDO_LOGS_PATH '; GRANT READ ON DIRECTORYDIRECTORY_NAME_1 toUSER_NAME ; GRANT READ ON DIRECTORYDIRECTORY_NAME_2 toUSER_NAME ;Substitua:
- DIRECTORY_NAME_1: o nome do diretório dos arquivos de registro de repetição on-line.
- DIRECTORY_NAME_2: o nome do diretório dos arquivos de registro de repetição arquivados.
- ONLINE_REDO_LOGS_PATH: o caminho para o diretório em que os arquivos de registro de repetição 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
READ
.
Se você selecionar o método de leitor de registro binário e usar diretórios de banco de dados, será necessário fornecer os nomes de diretório de registro de repetição e de registro arquivado ao criar o fluxo.
Verifique se seu banco de dados está sendo executado no modo
ARCHIVELOG
.Para fazer isso, faça login no seu 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 próxima etapa. - 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 registro 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 para que ele não fique sem espaço em disco e o fluxo falhe devido à perda da posição do registro.
- Se o resultado for
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.
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 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 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. 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 adequados à conta de usuário que será usada para se conectar ao banco de dados com plug-in. Para isso, execute os seguintes comandos:
GRANT SELECT ON GV_$LOG TO
USER_NAME ; GRANT SELECT ON GV_$LOGFILE TOUSER_NAME ; GRANT SELECT ON GV_$ARCHIVED_LOG TOUSER_NAME ; GRANT SELECT ON GV_$INSTANCE TOUSER_NAME ; GRANT SELECT ON GV_$STANDBY_LOG TOUSER_NAME ; GRANT SELECT ON V_$INSTANCE TOUSER_NAME ; GRANT SELECT ON V_$PDBS TOUSER_NAME ; GRANT SELECT ON V_$TRANSPORTABLE_PLATFORM TOUSER_NAME ; GRANT SELECT ON V_$DATABASE TOUSER_NAME ; GRANT SELECT ON COL$ TOUSER_NAME ; GRANT SELECT ON DBA_OBJECTS TOUSER_NAME ; GRANT SELECT ON DBA_TABLESPACES TOUSER_NAME ; GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TOUSER_NAME ; GRANT SELECT ON DBA_EXTENTS TOUSER_NAME ; GRANT CONNECT TOUSER_NAME ; GRANT CREATE SESSION TOUSER_NAME ; GRANT SELECT ANY TABLE TOUSER_NAME ; GRANT READ ON DIRECTORY ONLINELOG_DIR TOUSER_NAME ; GRANT READ ON DIRECTORY ARCHIVELOG_DIR TOUSER_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 plugável do Oracle para o LogMiner
Para configurar um banco de dados plugável do Oracle auto-hospedado para que ele possa ser usado com a API LogMiner, siga estas etapas:
Verifique se seu banco de dados está sendo executado no modo
ARCHIVELOG
. Para fazer isso, execute o comando a seguir 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 registro 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 a falta de espaço em disco e a falha do stream devido à perda da posição do registro.
- Se o resultado for
Defina uma política de retenção de dados para seu banco de dados executando o comando do Oracle Recovery Manager (RMAN) abaixo 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 com plug-ins no banco de dados do contêiner.
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 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.
Para registrar alterações apenas em tabelas específicas, conecte-se ao contêiner de banco de dados com plug-in 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 para a qual você quer registrar as alterações.
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;
Crie um usuário comum. Um usuário comum tem a mesma identidade no contêiner
CDB$ROOT
e nos bancos de dados com plug-in. Um usuário comum pode se conectar e realizar operações no contêinerCDB$ROOT
e em qualquer banco de dados conectável em que ele tenha privilégios. O nome de usuário comum precisa começar comC##
ouc##
.Conceda os privilégios adequados ao usuário comum que será usado para se conectar ao seu banco de dados. São necessárias permissões diferentes nos níveis do contêiner
CDB$ROOT
e do banco de dados com plug-in.- Conecte-se ao contêiner
CDB$ROOT
e execute os seguintes comandos:
GRANT CREATE SESSION TO
USER_NAME ; GRANT SET CONTAINER TOUSER_NAME ; GRANT SELECT ON SYS.V_$DATABASE TOUSER_NAME ; GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TOUSER_NAME ; GRANT EXECUTE ON DBMS_LOGMNR TOUSER_NAME ; GRANT EXECUTE ON DBMS_LOGMNR_D TOUSER_NAME ; GRANT LOGMINING TOUSER_NAME ; GRANT EXECUTE_CATALOG_ROLE TOUSER_NAME ;- Conecte-se ao banco de dados com plug-in e execute os seguintes comandos:
GRANT CREATE SESSION TO
USER_NAME ; GRANT SET CONTAINER TOUSER_NAME ; GRANT SELECT ANY TABLE TOUSER_NAME ; GRANT SELECT ON SYS.V_$DATABASE TOUSER_NAME ; GRANT SELECT ON SYS.V_$ARCHIVED_LOG TOUSER_NAME ; GRANT SELECT ON DBA_SUPPLEMENTAL_LOGGING TOUSER_NAME ;- Conecte-se ao contêiner
Conceda ao usuário comum
SELECT
acesso à 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 como o Datastream funciona com as fontes da Oracle.