ITPub博客

首页 > 数据库 > Oracle > ORACLE10g Stream用户级复制配置

ORACLE10g Stream用户级复制配置

Oracle 作者:lively1982 时间:2014-09-04 18:11:59 0 删除 编辑
1.之前做了表级复制的配置,在已经存在复制环境的情况下,再配置其他类型的复制前需要清除已经存在的复制环境,否则复制会导致失败。
使用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/ ,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2013-11-27

  • 博文量
    31
  • 访问量
    59135