Heim >Datenbank >MySQL-Tutorial >在Oracle 11g Streams单向传输的基础上配置Streams双向传输测试

在Oracle 11g Streams单向传输的基础上配置Streams双向传输测试

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 17:03:501043Durchsuche

原来在两个数据库服务器直接配置了Streams的单向传输,原来的源数据库为两台集群64位HP-UNIX的Oracle11gR2数据库,原来的目标数据

描述:
原来在两个数据库服务器直接配置了Streams的单向传输,
原来的源数据库为两台集群64位HP-UNIX的Oracle11gR2数据库,
原来的目标数据库为1台64位Linux的Oracle11gR2的数据库,
现在上面的基础上,把1台64位Linux的Oracle11gR2的当作源数据库,把两台集群64位HP-UNIX的Oracle11gR2数据库当作目标数据库,,
安装Streams的单向传输步骤进行配置,这样就变成了两个数据库服务器之间的Steams的双向传输。

10.2.2.1:为源数据库     10.1.1.1及10.1.1.2 集群数据库为目标数据库

1、源数据库归档模式
源:
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     420
Next log sequence to archive   422
Current log sequence           422


2、在源数据库启用追加日志
启用辅助日志
SQL> alter database add supplemental log data;

Database altered.

3、需要传输testUser 用户的数据,在源数据库创建source队列

> sqlplus  strmadmin/strmadmin

SQL> BEGIN DBMS_STREAMS_ADM.SET_UP_QUEUE(
  2  queue_table=>'SOURCE_QUEUE_TABLE',
  3  queue_name=>'SOURCE_QUEUE',
  4  queue_user=>'strmadmin');
  5  END;
  6  /

PL/SQL procedure successfully completed.

或者:

SQL> EXEC DBMS_STREAMS_ADM.SET_UP_QUEUE();

PL/SQL procedure successfully completed.
该命令会创建一个队列缺省名:streams_queue,队列表缺省是:STREAMS_QUEUE_TABLE

队列存储的object类型是anaydata

移除队列:
exec dbms_streams_adm.remove_queue(
queue_name => 'streams_queue',
cascade => true,
drop_unused_queue_table => true);

可以用查询dba_queues,dba_queue_tables来检查:

SQL>  select owner,queue_table,name from dba_queues where wner='STRMADMIN';

OWNER               QUEUE_TABLE              NAME

----------------- ------------------------- ------------------

STRMADMIN          SOURCES_QUEUE_TABLE        SOURCES_QUEUE

STRMADMIN          SOURCES_QUEUE_TABLE        AQ$_SOURCES_QUEUE_TABLE_E

 

SQL>select owner,queue_table,object_type from dba_queue_tables where wner='STRMADMIN';

OWNER            QUEUE_TABLE           OBJECT_TYPE

-------------- --------------------- ------------------

STRMADMIN       SOURCES_QUEUE_TABLE     SYS.ANYDATA

4、在目标数据库创建接收队列
$ sqlplus strmadmin/strmadmin

 

SQL> BEGIN DBMS_STREAMS_ADM.SET_UP_QUEUE(
  2  queue_table=>'TARGET_QUEUE_TABLE',
  3  queue_name=>'TARGET_QUEUE',
  4  queue_user=>'strmadmin');
  5  END;
  6  /

PL/SQL procedure successfully completed.


5、在源数据库创建capture进程
CBDBS01-> sqlplusstrmadmin/strmadmin@CBOMS

SQL> BEGIN DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
  2  schema_name=>'testUser',
  3  streams_type=>'capture',
  4  streams_name=>'capture_stream',
  5  queue_name=>'strmadmin.SOURCE_QUEUE',
  6  include_dml=>true,
  7  include_ddl=>true,
  8  SOURCE_DATABASE=>'bhoms',
  9  include_tagged_lcr=>false,
 10  inclusion_rule=>true);
 11  END;
 12  /

PL/SQL procedure successfully completed.

可以通过dba_capture查看:

SQL> select CAPTURE_NAME,QUEUE_NAME,START_SCN,STATUS,CAPTURE_TYPE from dba_capture;

SQL> select * from  ALL_CAPTURE_PREPARED_SCHEMAS;

6、在源数据库继续创建传播进程
CBDBS01-> sqlplus strmadmin/strmadmin

SQL> BEGIN DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(
  2  schema_name=>'testUser',
  3  streams_name=>'source_to_target',
  4  source_queue_name=>'strmadmin.SOURCE_QUEUE',
  5  destination_queue_name=>'strmadmin.TARGET_QUEUE@CBOMS',
  6  include_dml=>true,
  7  include_ddl=>true,
  8  source_database=>'bhoms',
  9  inclusion_rule=>true,
 10  queue_to_queue=>true);
 11  END;
 12  /

PL/SQL procedure successfully completed.

重新启动propagation process
 查看propagation process名称
 select * from all_propagation;

可以通过dba_propagations查看propagation是否启动

SQL> select PROPAGATION_NAME,SOURCE_QUEUE_NAME,DESTINATION_QUEUE_NAME,DESTINATION_DBLINK,STATUS from dba_propagation
如果status不是“ENABLED”,而是“DISABLED”

可以启动
SQL>exec dbms_propagation_adm.start_propagation('source_to_target');   (关闭为exec dbms_propagation_adm.stop_propagation('source_to_target');)


7、在目标数据库创建apply进程
$ sqlplus strmadmin/strmadmin

SQL> BEGIN
  2  DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
  3  schema_name=>'testUser',
  4  streams_type=>'apply',
  5  streams_name=>'target_apply_stream',
  6  queue_name=>'strmadmin.TARGET_QUEUE',
  7  include_dml=>true,
  8  include_ddl=>true,
  9  include_tagged_lcr=>false,
 10  source_database=>'bhoms',
 11  inclusion_rule=>true);
 12  END;
 13  /

PL/SQL procedure successfully completed.

可以通过:

dba_apply

v$streams_apply_reader

v$streams_apply_coordinator

v$streams_apply_server

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn