您好,欢迎访问一九零五行业门户网

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

原来在两个数据库服务器直接配置了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
其它类似信息

推荐信息