当前位置:文档之家› oracle stream同步

oracle stream同步

Oracle Stream配置详细步骤1 引言Oracle Stream功能是为提高数据库的高可用性而设计的,在Oracle 9i及之前的版本这个功能被称为Advance Replication。

Oracle Stream利用高级队列技术,通过解析归档日志,将归档日志解析成DDL及DML语句,从而实现1 引言Oracle Stream功能是为提高数据库的高可用性而设计的,在Oracle 9i及之前的版本这个功能被称为Advance Replication。

Oracle Stream利用高级队列技术,通过解析归档日志,将归档日志解析成DDL及DML语句,从而实现数据库之间的同步。

这种技术可以将整个数据库、数据库中的对象复制到另一数据库中,通过使用Stream的技术,对归档日志的挖掘,可以在对主系统没有任何压力的情况下,实现对数据库对象级甚至整个数据库的同步。

解析归档日志这种技术现在应用的比较广泛,Quest公司的shareplex软件及DSG公司的realsync都是这样的产品,一些公司利用这样的产品做应用级的容灾。

但shareplex或是realsync都是十分昂贵的,因此你可以尝试用Stream这个Oracle提供的不用额外花钱的功能。

Oracle Stream对生产库的影响是非常小的,从库可以是与主库不同的操作系统平台,你可以利用Oracle Stream复制几个从库,从库可用于查询、报表、容灾等不同的功能。

本文不谈技术细节,只是以手把手的方式一步一步的带你把Stream的环境搭建起来,细节内容可以查联机文档。

2 概述主数据库:操作系统:Solaris 9IP地址:192.168.10.35数据库:Oracle 10.2.0.2ORACLE_SID:prodGlobal_name:prod从数据库:操作系统:AIX 5.2IP地址:192.168.10.43数据库:Oracle 10.2.0.3ORACLE_SID:h10gGlobal_name:h10g3 环境准备3.1 设定初始化参数使用pfile的修改init.ora文件,使用spfile的通过alter system命令修改spile文件。

主、从数据库分别执行如下的语句:以下是引用片段:Sqlplus ‘/ as sysdba’alter system set aq_tm_processes=2 scope=both;alter system set global_names=true scope=both;alter system set job_queue_processes=10 scope=both;alter system set parallel_max_servers=20 scope=both;alter system set undo_retention=3600 scope=both;alter system set nls_date_format='YYYY-MM-DD HH24:MI:SS' scope=spfile;alter system set streams_pool_size=25M scope=spfile;alter system set utl_file_dir='*' scope=spfile;alter system set open_links=4 scope=spfile;执行完毕后重启数据库。

3.2 将数据库置为归档模式设置log_archive_dest_1到相应的位置;设定log_archive_start为TRUE,即启用自动归档功能;设定log_archive_format指定归档日志的命令格式。

举例:以下是引用片段:sqlplus ‘/ as sysdba’alter system set log_archive_dest_1=’location=/yang/arch’ scope=spfile;alter system set log_archive_start=TRUE scope=spfile;alter system set log_archive_format=’ arch%t_%s_%r.arc’ scope=spfile;shutdown immediate;startup mount;alter database archivelog;alter database open;数据库置为归档模式后,可以按如下方式检验一下:以下是引用片段:SQL> archive log listDatabase log mode Archive ModeAutomatic archival EnabledArchive destination /yang/archOldest online log sequence 534Next log sequence to archive 536Current log sequence 5363.3 创建stream 管理用户3.3.1 创建主环境stream管理用户以下是引用片段:#以sysdba身份登录connect / as sysdba#创建主环境的Stream专用表空间create tablespace tbs_stream datafile '/yang/oradata/prod/tbs_stream01.dbf'size 100m autoextend on maxsize unlimited segment space management auto;#将logminer的数据字典从system表空间转移到新建的表空间,防止撑满system表空间execute dbms_logmnr_d.set_tablespace('tbs_stream');#创建Stream管理用户create user strmadmin identified by strmadmindefault tablespace tbs_stream temporary tablespace temp;#授权Stream管理用户grant connect,resource,dba,aq_administrator_role to strmadmin;begindbms_streams_auth.grant_admin_privilege(grantee => 'strmadmin',grant_privileges => true);end;/3.3.2 创建从环境stream管理用户以下是引用片段:#以sysdba身份登录connect / as sysdba#创建Stream专用表空间,我的从库用了ASM,这一步也可以参见3.3.1create tablespace tbs_stream datafile '+VGDATA/h10g/datafile/tbs_stream01.dbf'size 100m autoextend on maxsize unlimited segment space management auto;#同样,将logminer的数据字典从system表空间转移到新建的表空间,防止撑满system表空间execute dbms_logmnr_d.set_tablespace('tbs_stream');#创建Stream管理用户create user strmadmin identified by strmadmindefault tablespace tbs_stream temporary tablespace temp;#授权Stream管理用户grant connect,resource,dba,aq_administrator_role to strmadmin;begindbms_streams_auth.grant_admin_privilege(grantee => 'strmadmin',grant_privileges => true);end;/3.4 配置网络连接3.4.1配置主环境tnsnames.ora主数据库(tnsnames.ora)中添加从数据库的配置。

以下是引用片段:H10G =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.43)(PORT = 1521)))(CONNECT_DATA =(SID = h10g)(SERVER = DEDICATED)))3.4.2配置从环境tnsnames.ora以下是引用片段:从数据库(tnsnames.ora)中添加主数据库的配置。

PROD =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.35)(PORT = 1521)))(CONNECT_DATA =(SID = prod)(SERVER = DEDICATED)))3.5 启用追加日志可以基于Database级别或Table级别,启用追加日志(Supplemental Log)。

在建立根据Schema粒度进行复制的Oracle Stream环境中,如果确认Schema下所有Table都有合理的主键(Primary Key),则不再需要启用追加日志。

以下是引用片段:#启用Database 追加日志alter database add supplemental log data;#启用Table追加日志alter table add supplement log group log_group_name(table_column_name) always;3.6 创建DBlink根据Oracle 10gR2 Stream官方文档,针对主数据库建立的数据库链的名字必须和从数据库的global_name相同。

如果需要修改global_name,执行“alter database rename global_name to xxx”。

3.6.1创建主数据库数据库链#以strmadmin身份,登录主数据库。

connect strmadmin/strmadmin#建立数据库链create database link h10g connect to strmadmin identified by strmadmin using 'h10g';3.6.2创建从数据库数据库链#以strmadmin身份,登录从数据库。

相关主题