- Este tópico contém 1 resposta, 1 voz e foi atualizado pela última vez 15 anos, 10 meses atrás por
Evloki.
-
AutorPosts
-
24 de maio de 2010 às 6:32 pm #94167
Evloki
Participante* Versão do Oracle:10g
* Sistema Operacional: win server 2003Estou usando Stream para replicar um banco e está funcionando bem, mas quando eu crio a stream em vez de colocar uma table rule para cada tabela que eu quero replicar é possivel colocar o esquema todo sem especificar as tabelas?
Segue um exemplo de como faço a replicação…
Nesse exemplo para adicionar outras tabelas eu tenho que repetir o passo de 1 a 4 para cada tabela que eu quero adicionar na replica e acho que deve ter um jeito menos trabalhoso de se fazer isso…. Rolling Eyes
OBS.: o nome da tabela é STR e o esquema é igor01.1. Configura a captura de processo no Banco de Dados fonte
Source Database: DB1
Source Database: DB1
SQL> conn strmadmin/strmadmin@db1
Connected.
SQL> begin dbms_streams_adm.add_table_rules
( table_name => ‘igor01.str’,
streams_type => ‘capture’,
streams_name => ‘capture_stream’,
queue_name=> ‘strmadmin.streams_queue’,
include_dml => true,
include_ddl => true,
inclusion_rule => true);
end;
/
2. Configura o “propagation process” (propagação de processo)
Source Database: DB1
SQL> conn strmadmin/strmadmin@db1
Connected.
SQL> begin dbms_streams_adm.add_table_propagation_rules
( table_name => ‘igor01.str’,
streams_name => ‘DB1_TO_DB2’,
source_queue_name => ‘strmadmin.streams_queue’,
destination_queue_name => ‘strmadmin.streams_queue@DB2’,
include_dml => true,
include_ddl => true,
source_database => ‘DB1’,
inclusion_rule => true);
end;
/PL/SQL procedure successfully completed.
3. Define a instanciação system change number (SCN)
Source Database: DB1
SQL> CONN STRMADMIN/STRMADMIN@DB1
Connected.
SQL> declare
source_scn number;
begin
source_scn := dbms_flashback.get_system_change_number();
dbms_apply_adm.set_table_instantiation_scn@DB2
( source_object_name => ‘igor01.str’,
source_database_name => ‘DB1’,
instantiation_scn => source_scn);
end;
/PL/SQL procedure successfully completed.
4. Configure the apply process at the destination database
Target Database: DB2
SQL> conn strmadmin/strmadmin@db2
Connected.
SQL> begin dbms_streams_adm.add_table_rules
( table_name => ‘igor01.str’,
streams_type => ‘apply’,
streams_name => ‘apply_stream’,
queue_name => ‘strmadmin.streams_queue’,
include_dml => true,
include_ddl => true,
source_database => ‘DB1’,
inclusion_rule => true);
end;
/
PL/SQL procedure successfully completed.5. Start the capture and apply processes
Source Database: DB1
SQL> conn strmadmin/strmadmin@db1
Connected.
SQL> begin dbms_capture_adm.start_capture
( capture_name => ‘capture_stream’);
end;
/
PL/SQL procedure successfully completed.
Target Database: DB2
SQL> conn strmadmin/strmadmin@db2
Connected.
SQL> begin dbms_apply_adm.set_parameter
( apply_name => ‘apply_stream’,
parameter => ‘disable_on_error’,
value => ‘n’);
end;
/PL/SQL procedure successfully completed.
SQL> begin
dbms_apply_adm.start_apply
( apply_name => ‘apply_stream’);
end;
/26 de maio de 2010 às 3:33 pm #94234Evloki
ParticipanteConsegui descobrir como fazer para adicionar o esquema inteiro na Stream
DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
schema_name IN VARCHAR2,
streams_type IN VARCHAR2,
streams_name IN VARCHAR2 DEFAULT NULL,
queue_name IN VARCHAR2 DEFAULT 'streams_queue',
include_dml IN BOOLEAN DEFAULT TRUE,
include_ddl IN BOOLEAN DEFAULT FALSE,
include_tagged_lcr IN BOOLEAN DEFAULT FALSE,
source_database IN VARCHAR2 DEFAULT NULL,
dml_rule_name OUT VARCHAR2,
ddl_rule_name OUT VARCHAR2,
inclusion_rule IN BOOLEAN DEFAULT TRUE,
and_condition IN VARCHAR2 DEFAULT NULL);Mas não consegui implemetar para quando pagar os dados no Banco principal não apagar no banco de replicado…
Nesse caso tenho que criar uma dml rule?Se alguem tiver um exemplo agradeço.
-
AutorPosts
- Você deve fazer login para responder a este tópico.