首页 > 数据库 > Oracle > ORACLE10g Stream用户级复制配置
SQL> conn streamadmin/oracle@primary
Connected.
SQL> begin
2 for cur_pro in (select propagation_name from dba_propagation) loop
3 dbms_propagation_adm.drop_propagation(cur_pro.propagation_name);
4 end loop;
5 dbms_streams_adm.REMOVE_STREAMS_CONFIGURATION;
6 end;
7 /
PL/SQL procedure successfully completed.
查看日志文件信息,部分如下:
Thu Apr 3 16:52:25 2014
Streams CAPTURE C001 with pid=24, OS id=2291 stopped
Thu Apr 3 16:52:33 2014
ARC1: STARTING ARCH PROCESSES
ARC2: Archival started
ARC1: STARTING ARCH PROCESSES COMPLETE
ARC2 started with pid=24, OS id=3305
Streams Apply Server P001 pid=27 OS id=2297 stopped
Streams Apply Reader P000 pid=26 OS id=2295 stopped
Streams Apply Server P000 pid=26 OS id=2295 stopped
Streams Apply Server P001 pid=27 OS id=2297 stopped
Thu Apr 3 16:52:37 2014
Streams APPLY A001 with pid=25, OS id=2293 stopped
Thu Apr 3 16:53:31 2014
Shutting down archive processes
Thu Apr 3 16:53:36 2014
ARCH shutting down
ARC2: Archival stopped
查看stream相关的表的队列信息,如下:
SQL> select apply_name,queue_name,queue_owner,status from dba_apply;
no rows selected
SQL> select CAPTURE_NAME,QUEUE_OWNER,STATUS,CAPTURE_USER from dba_capture;
no rows selected
使用stream管理员,目标库操作如下:
SQL> conn streamadmin/oracle@standby;
Connected.
SQL> begin
2 for cur_pro in (select propagation_name from dba_propagation) loop
3 dbms_propagation_adm.drop_propagation(cur_pro.propagation_name);
4 end loop;
5 dbms_streams_adm.REMOVE_STREAMS_CONFIGURATION;
6 end;
7 /
PL/SQL procedure successfully completed.
查看日志文件信息,部分如下:
Thu Apr 3 17:08:46 2014
Streams CAPTURE C001 with pid=25, OS id=2454 stopped
Thu Apr 3 17:08:53 2014
ARC1: STARTING ARCH PROCESSES
ARC2: Archival started
ARC1: STARTING ARCH PROCESSES COMPLETE
ARC2 started with pid=25, OS id=3342
Streams Apply Server P001 pid=28 OS id=2460 stopped
Streams Apply Reader P000 pid=27 OS id=2458 stopped
Streams Apply Server P001 pid=28 OS id=2460 stopped
Streams Apply Server P000 pid=27 OS id=2458 stopped
Thu Apr 3 17:08:57 2014
Streams APPLY A001 with pid=26, OS id=2456 stopped
Thu Apr 3 17:09:36 2014
Shutting down archive processes
Thu Apr 3 17:09:41 2014
ARCH shutting down
ARC2: Archival stopped
2.源库和目标库初始化参数设置
在源库:
alter system set aq_tm_processes=1 scope=spfile;
alter system set job_queue_processes=2 scope=spfile;
alter system set global_names=true scope=spfile;
alter database rename global_name to myorcl.net;
alter system set streams_pool_size=52m scope=spfile;
在目标数据库:
alter system set aq_tm_processes=1 scope=spfile;
alter system set job_queue_processes=2 scope=spfile;
alter system set global_names=true scope=spfile;
alter database rename global_name to orcl.net;
alter system set streams_pool_size=50m scope=spfile;
由于之前做了表级复制,现在只需验证配置信息是否正确。
3.在源库和目标库配置tnsnames.ora,如下:
primary =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.41.6.118)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = myorcl)
)
)
standby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.41.6.119)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
4.源库和目标库复制管理员的创建
不能使用sys和system作为流管理员,流管理员不能使用system表空间作为默认表空间;
在源库验证操作如下:
SQL> select username from dba_users where username like '%STREAM%'; --之前做表级复制时创建的stream管理员
USERNAME
------------------------------
STREAMADMIN
SQL> select TABLESPACE_NAME,STATUS from dba_tablespaces where TABLESPACE_NAME like '%STREAM%';
TABLESPACE_NAME STATUS
------------------------------ ---------
STREAMTBS ONLINE
在目标库验证操作如下:
SQL> select username from dba_users where username like '%STREAM%';
USERNAME
------------------------------
STREAMADMIN
SQL> select TABLESPACE_NAME,STATUS from dba_tablespaces where TABLESPACE_NAME like '%STREAM%';
TABLESPACE_NAME STATUS
------------------------------ ---------
STREAMTBS ONLINE
5.源库和目标库创建互连的数据库连接
在源库验证操作如下:
SQL> conn streamadmin/oracle@primary
Connected.
SQL> col owner for a15;
SQL> col db_link for a15;
SQL> col username for a15;
SQL> col host for a15;
SQL> select owner,db_link,username,host from dba_db_links;
OWNER DB_LINK USERNAME HOST
--------------- --------------- --------------- ---------------
STREAMADMIN ORCL.NET STREAMADMIN standby
SQL> select * from dual@orcl.net;
D
-
X
在目标库验证操作如下:
SQL> conn streamadmin/oracle@standby;
Connected.
SQL> col owner for a15;
SQL> col db_link for a15;
SQL> col username for a15;
SQL> col host for a15;
SQL> select owner,db_link,username,host from dba_db_links;
OWNER DB_LINK USERNAME HOST
--------------- --------------- --------------- ---------------
STREAMADMIN MYORCL.NET STREAMADMIN primary
SQL> select * from dual@myorcl.net;
D
-
X
6.查看源库和目标库是否处于归档模式
SQL> conn / as sysdba
Connected.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/my_arch
Oldest online log sequence 6
Next log sequence to archive 8
Current log sequence 8
7.源库和目标库创建directory
在源库操作如下:
SQL> conn streamadmin/oracle@primary;
Connected.
SQL> create directory dir_myorcl as ' /u01/app/oradata/myorclstr_dir';
Directory created.
在目标库操作如下:
SQL> conn streamadmin/oracle@standby
Connected.
SQL> create directory dir_orcl as ' /u01/app/oradata/orclstr_dir ';
Directory created.
查看创建的directory的语句如下:
源库:
SQL> select * from dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
--------------- ------------------------------ --------------------------------------------------------------------------------
SYS DIR_MYORCL /u01/app/oradata/myorclstr_dir
SYS DATA_PUMP_DIR /u01/app/oracle/rdbms/log/
SYS XMLDIR /u01/app/oracle/demo/schema/order_entry/
SYS MEDIA_DIR /u01/app/oracle/demo/schema/product_media/
SYS LOG_FILE_DIR /u01/app/oracle/demo/schema/log/
SYS WORK_DIR /ade/aime_ship_10gR2_050630.0022/oracle/work
SYS DATA_FILE_DIR /u01/app/oracle/demo/schema/sales_history/
SYS SUBDIR /u01/app/oracle/demo/schema/order_entry//2002/Sep
SYS ADMIN_DIR /ade/aime_ship_10gR2_050630.0022/oracle/md/admin
9 rows selected.
目标库:
SQL> select * from dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
--------------- --------------- --------------------------------------------------
SYS ADMIN_DIR /ade/aime_ship_10gR2_050630.0022/oracle/md/admin
SYS DATA_PUMP_DIR /u01/app/oracle/rdbms/log/
SYS WORK_DIR /ade/aime_ship_10gR2_050630.0022/oracle/work
SYS DIR_ORCL /u01/app/oradata/orclstr_dir
8.在源库中创建测试用的表空间及用户
SQL> create user huyong identified by huyong default tablespace streamtbs quota unlimited on streamtbs;
SQL> grant connect,resource to huyong;
SQL> conn huyong/huyong;
SQL> create table test01(id int,name varchar2(20));
9.在源库执行MAINTAIN_schemas过程
SQL> connect streamadmin/oracle@primary;
Connected.
SQL> begin
2 dbms_streams_adm.maintain_schemas(
3 schema_names => 'huyong',
4 source_directory_object =>' myorclstr_dir ' ,
5 destination_directory_object => ' orclstr_dir ',
6 source_database => 'myorcl.net',
7 destination_database => 'orcl.net',
8 perform_actions => true,
9 bi_directional => true,
10 include_ddl => true,
11 instantiation => dbms_streams_adm.instantiation_schema_network);
12 end;
13 /
PL/SQL procedure successfully completed.
注:bi_directional:为false是单向复制,为true时是双向复制; 在源库执行maintain_schemas时,目标库几乎什么都不用做,stream环境已经配置好了如果想复制其它的表只用再执行maintain_tables过程即可。
批注:在此操作过程中注意查看日志文件:
tail -f /u01/app/admin/myorcl/bdump/tail -f alert_myorcl.log 和 tail -f /u01/app/admin/orcl/bdump/alert_orcl.log
10.验证
1)目标库查看是否存在huyong用户,如下:
SQL> select username from dba_users where username like '%HUYONG%';
USERNAME
---------------
HUYONG
2)查看目标库huyong用户下是否存在test01表,如下:
SQL> conn huyong/huyong;
Connected.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TEST01 TABLE
3)在源库的huyong用户下的test01表中插入数据,查看目标库是否同步,如下:
源库操作如下:
SQL> conn huyong/huyong
Connected.
SQL> insert into test01 values (1,'huyong');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from test01;
ID NAME
---------- --------------------
1 huyong
目标库操作如下:
SQL> select * from test01;
ID NAME
---------- --------------------
1 huyong
4)在目标库对表test01进行更新操作,如下:
目标库操作如下:
SQL> update test01 set name='xiaoru' where id=1;
1 row updated.
SQL> commit;
Commit complete.
源库查询是否更新,操作如下:
SQL> select * from test01;
ID NAME
---------- --------------------
1 xiaoru
5)源库huyong用户下添加新表,查看目标库huyong用户是否有更新,操作如下:
源库huyong用户操作如下:
SQL> create table test02 as select * from test01;
Table created.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TEST01 TABLE
TEST02 TABLE
目标库huyong用户查询是否有新表添加,如下:
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TEST01 TABLE
TEST02 TABLE
6)目标库huyong用户下删除表test
目标库huyong用户下操作如下:
SQL> drop table test02 purge;
Table dropped.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TEST01 TABLE
源库huyong用户查看test02表是否存在,操作如下:
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TEST01 TABLE
总结:由以上验证结果可知,已经成功配置了stream用户级之间的同步操作。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14288937/viewspace-1264056/ ,如需转载,请注明出处,否则将追究法律责任。