Documente Academic
Documente Profesional
Documente Cultură
databases (db1, db2) 1. Enable ARCHIVELOG MODE on both database 2. Create Stream administrator User Source Database: DB1 SQL> conn sys@db1 as sysdba Enter password: Connected. SQL> create user strmadmin identified by strmadmin; User created. SQL> grant connect, resource, dba to strmadmin; Grant succeeded. SQL> begin dbms_streams_auth.grant_admin_privilege (grantee => 'strmadmin', grant_privileges => true); end; / PL/SQL procedure successfully completed. SQL> grant select_catalog_role, select any dictionary to strmadmin; Grant succeeded. Target Database: DB2 SQL> conn sys@db2 as sysdba Enter password: Connected. SQL> create user strmadmin identified by strmadmin; User created.
SQL> grant connect, resource, dba to strmadmin; Grant succeeded. SQL> begin dbms_streams_auth.grant_admin_privilege (grantee => 'strmadmin', grant_privileges => true); end; / PL/SQL procedure successfully completed. SQL> grant select_catalog_role, select any dictionary to strmadmin; Grant succeeded. 3. Setup INIT parameters Source Database: DB1 SQL> conn sys@db1 as sysdba Enter password: Connected. SQL> alter system set global_names=true; System altered. SQL> alter system set streams_pool_size = 100m; System altered. Target Database: DB2 SQL> conn sys@db2 as sysdba Enter password: Connected. SQL> alter system set global_names=true; System altered. SQL> alter system set streams_pool_size = 100m; System altered. 4. Create Database Link Target Database: DB1 SQL> conn strmadmin/strmadmin@db1 Connected.
SQL> create database link db2 connect to strmadmin identified by strmadmin using 'DB2'; Database link created. Source Database: DB2 SQL> conn strmadmin/strmadmin@db2 Connected. SQL> create database link db1 connect to strmadmin identified by strmadmin using 'DB1'; Database link created. 5. Setup Source and Destination queues Source Database: DB1 SQL> conn strmadmin/strmadmin@db1 Connected. SQL> EXEC DBMS_STREAMS_ADM.SET_UP_QUEUE(); PL/SQL procedure successfully completed. Target Database: DB2 SQL> conn strmadmin/strmadmin@db2 Connected. SQL> EXEC DBMS_STREAMS_ADM.SET_UP_QUEUE(); PL/SQL procedure successfully completed. 6. Setup Schema for streams Schema: SCOTT Table: Taj NOTE: Unlock scott schema because in 10g scott schema is locked by default Source Database: DB1 SQL> conn sys@db1 as sysdba Enter password: Connected. SQL> alter user scott account unlock identified by tiger; User altered. Target Database: DB2 SQL> conn sys@db2 as sysdba
Enter password: Connected. SQL> alter user scott account unlock identified by tiger; User altered. 7. Setup Supplemental logging at the source database Source Database: DB1 SQL> conn sys@db1 as sysdba
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
8. Configure capture process at the source database Source Database: DB1 SQL> conn strmadmin/strmadmin@db1 Connected. SQL> begin dbms_streams_adm.add_schema_rules ( schema_name => 'scott', streams_type => 'capture', streams_name => 'capture_stream', queue_name=> 'strmadmin.streams_queue', include_dml => true, include_ddl => true ); end; / PL/SQL procedure successfully completed. 9. Configure the propagation process Source Database: DB1 SQL> conn strmadmin/strmadmin@db1 Connected. SQL> begin dbms_streams_adm.add_SCHEMA_propagation_rules ( schema_name => 'scott', 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' ); end; /
PL/SQL procedure successfully completed. 10. Set the instantiation 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_schema_instantiation_scn@DB2 ( source_schema_name => 'scott', source_database_name => 'DB1', instantiation_scn => source_scn); end; /
PL/SQL procedure successfully completed. 11. Configure the apply process at the destination database Target Database: DB2 SQL> conn strmadmin/strmadmin@db2 Connected. SQL> begin dbms_streams_adm.add_SCHEMA_rules ( schema_name => 'scott', streams_type => 'apply', streams_name => 'apply_stream', queue_name => 'strmadmin.streams_queue', include_dml => true, include_ddl => true, source_database => 'DB1' ); end; / PL/SQL procedure successfully completed. 12. 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; / PL/SQL procedure successfully completed. NOTE: Stream replication environment is ready, just needed to test it. SQL> conn scott/tiger@db1 Connected. SQL> create table test (sno number(5)); Table created. SQL> --DML operation SQL> begin SQL> insert into test values(2000); 1 row created. commit;
SNO ---------2000