Pular para o conteúdo
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #94167
    Evloki
    Participante

      * Versão do Oracle:10g
      * Sistema Operacional: win server 2003

      Estou 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;
      /

      #94234
      Evloki
      Participante

        Consegui 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.

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.