ITPub博客

首页 > 数据库 > Oracle > oracle 10g user stream

oracle 10g user stream

原创 Oracle 作者:imlihj2007 时间:2013-05-03 12:25:37 0 删除 编辑

==准备==
1.归档日志配置:
sql> archive log list;
database log mode archive mode
automatic archival enabled
archive destination /u01/oradata/stream1_arch --i don't modify it

database log mode archive mode
automatic archival enabled
archive destination /u01/oradata/stream2_arch

---以下没有专门说明的都是sys用户---

2.在源stream1上配置supplemental loging:

在源上:
sql> alter database add supplemental log data;

database altered.

3.两台机器上修改global_name:

db1:
sql> alter system set global_names=true scope=both;
sql> alter database rename global_name to db1.com; --i use the defualt

db2:
sql> alter system set global_names=true scope=both;
sql> alter database rename global_name to db2.com; --

4.修改初始化参数:
参考官方文档确定需要来检查和设定参数

5.创建stream管理用户并表空间,配置权限,source和dest:
5.1 为strmadmin用户创建独立表空间

db1:
create tablespace streams_tbs datafile 'streams_tbs.dbf' size 25m reuse autoextend on maxsize unlimited;

db2:
create tablespace streams_tbs datafile 'streams_tbs.dbf' size 25m reuse autoextend on maxsize unlimited;

5.2 source和dest创建相同用户和权限:
create user strmadmin identified by strmadminpw default tablespace streams_tbs quota unlimited on streams_tbs;

grant dba to strmadmin;

begin
dbms_streams_auth.grant_admin_privilege(
grantee => 'strmadmin',
grant_privileges => true);
end;
/


6.配置tnsnames.ora,

db1上:sqlplus system/sys@db2
db2上:sqlplus system/sys@db1
都没有问题就ok

---如果没有说明以下都是strmadmin/strmadminpw 用户---

7.创建db link:
单向复制之需要一个database link即source 到dest:db1--db2

db1上:
sqlplus strmadmin/strmadminpw
create database link db2 connect to strmadmin identified by strmadminpw using 'db2';

==开始stream的配置===
8. source和dest 创建队列:

db1,db2都要创建
exec dbms_streams_adm.set_up_queue();

上面命令会创建一个队列缺省名:streams_queue,队列表缺省是:streams_queue_table 队列存储的object类型是anaydata

可以用查询dba_queues,dba_queue_tables来检查:
select owner,queue_table,name from dba_queues where owner='STRMADMIN';

owner queue_table name
---------------- ---------------------------------- ---------------------------------------------
strmadmin streams_queue_table streams_queue
strmadmin streams_queue_table aq$_streams_queue_table_e

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

owner queue_table object_type
----------------- --------------------------------- -------------------------------
strmadmin streams_queue_table sys.anydata

9. 在source: db1上创建stream propagation:

begin
dbms_streams_adm.add_schema_propagation_rules(
schema_name => 'hr',
streams_name => 'stream1_to_stream2',
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,
queue_to_queue => true);
end;
/


可以通过dba_propagations查看结果:
select propagation_name,source_queue_name,destination_queue_name,destination_dblink,status from dba_propagation;

propagation_name source_queue_name destination_queue_name destination_dbl status
-------------------------------- ------------------------------ --------------------------------- --------------- --------
stream1_to_stream2 streams_queue streams_queue stream2.com enabled

9.在source: db1上创建capture进程:

begin
dbms_streams_adm.add_schema_rules(
schema_name => 'hr',
streams_type => 'capture',
streams_name => 'capture_stream1',
queue_name => 'strmadmin.streams_queue',
include_dml => true,
include_ddl => true,
inclusion_rule => true);
end;
/

可以通过dba_capture查看:
select capture_name,queue_name,start_scn,status,capture_type from dba_capture;

capture_name queue_name start_scn status capture_ty
---------------------------- -------------------------- --------------- ------------ ----------
capture_stream1 streams_queue 504733 disabled local

select * from all_capture_prepared_schemas;

schema_name timestamp suppleme suppleme suppleme suppleme
-------------------- --------------- -------------- -------------- ------------- --------
hr 12-jun-08 implicit implicit implicit no

10.将stream1上的hr schema数据导到stream2上:
db2上:
sqlplus system/system
create public database link stream1.com connect to system identified by system using 'stream1';
select * from global_name@stream1.com;
导数据:
impdp system/sys network_link=stream1.com schemas=hr


11. 在db1上设置db2上hr schema的instantiation scn

sqlplus strmadmin/strmadminpw
declare
iscn number;
begin
iscn := dbms_flashback.get_system_change_number();
dbms_apply_adm.set_schema_instantiation_scn@db2(
source_schema_name => 'hr',
source_database_name => 'db1',
instantiation_scn => iscn,
recursive => true);
end;
/

12.在db2上创建apply进程apply_stream2:

begin
dbms_streams_adm.add_schema_rules(
schema_name => 'hr',
streams_type => 'apply',
streams_name => 'apply_stream2',
queue_name => 'strmadmin.streams_queue',
include_dml => true,
include_ddl => true,
source_database => 'db1',
inclusion_rule => true);
end;
/

pl/sql procedure successfully completed.

可以通过:
dba_apply
v$streams_apply_reader
v$streams_apply_coordinator
v$streams_apply_server
查看状态

select apply_name,queue_name,status from dba_apply;

apply_name queue_name status
--------------------- ------------------------ --------
apply_stream2 streams_queue disabled

==启动==

13.启动capture和apply:

13.1 db2上启动 apply process

connect strmadmin/strmadminpw
begin
dbms_apply_adm.set_parameter(
apply_name => 'apply_stream2',
parameter => 'disable_on_error',
value => 'n');
end;
/

pl/sql procedure successfully completed.

begin
dbms_apply_adm.start_apply(
apply_name => 'apply_stream2');
end;
/

sql> select apply_name,queue_name,status from dba_apply;

apply_name queue_name status
------------------------------ -------------------------- --------
apply_stream2 streams_queue enabled

这时候alert log有:
thu jun 12 18:00:36 2008
streams apply a001 started with pid=25, os id=30819
streams apply reader started p000 with pid=26 os id=30821
streams apply server started p001 with pid=27 os id=30823

如果有问题,没有能启动就查dba_apply的error_messages列

13.2 stream1上启动capture process:

sqlplus strmadmin/strmadminpw
begin
dbms_capture_adm.start_capture(
capture_name => 'capture_stream1');
end;
/

select capture_name,status from dba_capture;

capture_name status
------------------------------ ------------
capture_stream1 enabled

alert 日志有:
thu jun 12 18:04:46 2008
streams capture c001 started with pid=27, os id=11884


===测试===
http://blog.chinaunix.net/uid-20478213-id-1942074.html (参考之)

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9879835/viewspace-1060461/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-05-25

  • 博文量
    109
  • 访问量
    1577024