Oracle Stream配置详细步骤.docx

上传人:b****8 文档编号:10461060 上传时间:2023-02-13 格式:DOCX 页数:18 大小:20.23KB
下载 相关 举报
Oracle Stream配置详细步骤.docx_第1页
第1页 / 共18页
Oracle Stream配置详细步骤.docx_第2页
第2页 / 共18页
Oracle Stream配置详细步骤.docx_第3页
第3页 / 共18页
Oracle Stream配置详细步骤.docx_第4页
第4页 / 共18页
Oracle Stream配置详细步骤.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

Oracle Stream配置详细步骤.docx

《Oracle Stream配置详细步骤.docx》由会员分享,可在线阅读,更多相关《Oracle Stream配置详细步骤.docx(18页珍藏版)》请在冰豆网上搜索。

Oracle Stream配置详细步骤.docx

OracleStream配置详细步骤

OracleStream配置详细步骤

1引言

  OracleStream功能是为提高数据库的高可用性而设计的,在Oracle9i及之前的版本这个功能被称为AdvanceReplication。

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

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

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

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

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

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

  2概述

  主数据库:

  操作系统:

Solaris9

  IP地址:

192.168.10.35

  数据库:

Oracle10.2.0.2

  ORACLE_SID:

prod

  Global_name:

prod

  从数据库:

  操作系统:

AIX5.2

  IP地址:

192.168.10.43

  数据库:

Oracle10.2.0.3

  ORACLE_SID:

h10g

  Global_name:

h10g

  3环境准备

  3.1设定初始化参数

  使用pfile的修改init.ora文件,使用spfile的通过altersystem命令修改spile文件。

主、从数据库分别执行如下的语句:

以下是引用片段:

  Sqlplus‘/assysdba’

  altersystemsetaq_tm_processes=2scope=both;

  altersystemsetglobal_names=truescope=both;

  altersystemsetjob_queue_processes=10scope=both;

  altersystemsetparallel_max_servers=20scope=both;

  altersystemsetundo_retention=3600scope=both;

  altersystemsetnls_date_format='YYYY-MM-DDHH24:

MI:

SS'scope=spfile;

  altersystemsetstreams_pool_size=25Mscope=spfile;

  altersystemsetutl_file_dir='*'scope=spfile;

  altersystemsetopen_links=4scope=spfile;

  执行完毕后重启数据库。

 3.2将数据库置为归档模式

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

  举例:

以下是引用片段:

  sqlplus‘/assysdba’

  altersystemsetlog_archive_dest_1=’location=/yang/arch’scope=spfile;

  altersystemsetlog_archive_start=TRUEscope=spfile;

  altersystemsetlog_archive_format=’arch%t_%s_%r.arc’scope=spfile;

  shutdownimmediate;

  startupmount;

  alterdatabasearchivelog;

  alterdatabaseopen;

  数据库置为归档模式后,可以按如下方式检验一下:

以下是引用片段:

  SQL>archiveloglist

  DatabaselogmodeArchiveMode

  AutomaticarchivalEnabled

  Archivedestination/yang/arch

  Oldestonlinelogsequence534

  Nextlogsequencetoarchive536

  Currentlogsequence536

  3.3创建stream管理用户

  3.3.1创建主环境stream管理用户

以下是引用片段:

  #以sysdba身份登录

  connect/assysdba

  #创建主环境的Stream专用表空间

  createtablespacetbs_streamdatafile'/yang/oradata/prod/tbs_stream01.dbf'

  size100mautoextendonmaxsizeunlimitedsegmentspacemanagementauto;

  #将logminer的数据字典从system表空间转移到新建的表空间,防止撑满system表空间

  executedbms_logmnr_d.set_tablespace('tbs_stream');

  #创建Stream管理用户

  createuserstrmadminidentifiedbystrmadmin

  defaulttablespacetbs_streamtemporarytablespacetemp;

  #授权Stream管理用户

  grantconnect,resource,dba,aq_administrator_roletostrmadmin;

  begin

  dbms_streams_auth.grant_admin_privilege(

  grantee=>'strmadmin',

  grant_privileges=>true);

  end;

  /

[#page_#]

3.3.2创建从环境stream管理用户

以下是引用片段:

  #以sysdba身份登录

  connect/assysdba

  #创建Stream专用表空间,我的从库用了ASM,这一步也可以参见3.3.1

  createtablespacetbs_streamdatafile'+VGDATA/h10g/datafile/tbs_stream01.dbf'

  size100mautoextendonmaxsizeunlimitedsegmentspacemanagementauto;

  #同样,将logminer的数据字典从system表空间转移到新建的表空间,防止撑满system表空间

  executedbms_logmnr_d.set_tablespace('tbs_stream');

  #创建Stream管理用户

  createuserstrmadminidentifiedbystrmadmin

  defaulttablespacetbs_streamtemporarytablespacetemp;

  #授权Stream管理用户

  grantconnect,resource,dba,aq_administrator_roletostrmadmin;

  begin

  dbms_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级别,启用追加日志(SupplementalLog)。

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

以下是引用片段:

  #启用Database追加日志

  alterdatabaseaddsupplementallogdata;

  #启用Table追加日志

  altertableaddsupplementloggrouplog_group_name(table_column_name)always;

  3.6创建DBlink

  根据Oracle10gR2Stream官方文档,针对主数据库建立的数据库链的名字必须和从数据库的global_name相同。

  如果需要修改global_name,执行“alterdatabaserenameglobal_nametoxxx”。

  3.6.1创建主数据库数据库链

  #以strmadmin身份,登录主数据库。

  connectstrmadmin/strmadmin

  #建立数据库链

  createdatabaselinkh10gconnecttostrmadminidentifiedbystrmadminusing'h10g';

  3.6.2创建从数据库数据库链

  #以strmadmin身份,登录从数据库。

  connectstrmadmin/strmadmin

  #建立数据库链

  createdatabaselinkprodconnecttostrmadminidentifiedbystrmadminusing'prod';

[#page_#]

  3.7创建流队列

  3.7.1创建Master流队列

以下是引用片段:

  #以strmadmin身份,登录主数据库。

  connectstrmadmin/strmadmin

  begin

  dbms_streams_adm.set_up_queue(

  queue_table=>'prod_queue_table',

  queue_name=>'prod_queue');

  end;

  /

3.7.2创建Backup流队列

以下是引用片段:

  #以strmadmin身份,登录从数据库。

  connectstrmadmin/strmadmin

  begin

  dbms_streams_adm.set_up_queue(

  queue_table=>'h10g_queue_table',

  queue_name=>'h10g_queue');

  end;

  /

  3.8创建捕获进程

以下是引用片段:

  #以strmadmin身份,登录主数据库。

提醒一下,本文档以hr用户做示例。

  connectstrmadmin/strmadmin

  begin

  dbms_streams_adm.add_schema_rules(

  schema_name=>'hr',

  streams_type=>'capture',

  streams_name=>'capture_prod',

  queue_name=>'strmadmin.prod_queue',

  include_dml=>true,

  include_ddl=>true,

  include_tagged_lcr=>false,

  source_database=>null,

  inclusion_rule=>true);

  end;

  /

  3.9实例化复制数据库

  在主数据库环境中,执行如下Shell语句。

如果从库的hr用户不存在,建立一个hr的空用户。

  expuserid=hr/hr@prodfile='/tmp/hr.dmp'object_consistent=yrows=y

  impuserid=system/manager@h10gfile='/tmp/hr.dmp'ignore=ycommit=ylog='/tmp/hr.log'streams_instantiation=yfromuser=hrtouser=hr

  3.10创建传播进程

以下是引用片段:

  #以strmadmin身份,登录主数据库。

  connectstrmadmin/strmadmin

  begin

  dbms_streams_adm.add_schema_propagation_rules(

  schema_name=>'hr',

  streams_name=>'prod_to_h10g',

  source_queue_name=>'strmadmin.prod_queue',

  destination_queue_name=>'strmadmin.h10g_queue@h10g',

  include_dml=>true,

  include_ddl=>true,

  include_tagged_lcr=>false,

  source_database=>'prod',

  inclusion_rule=>true);

  end;

  /

  #修改propagation休眠时间为0,表示实时传播LCR。

  begin

  dbms_aqadm.alter_propagation_schedule(

  queue_name=>'prod_queue',

  destination=>'h10g',

  latency=>0);

  end;

  /

3.11创建应用进程

以下是引用片段:

  #以strmadmin身份,登录从数据库。

  connectstrmadmin/strmadmin

  begin

  dbms_streams_adm.add_schema_rules(

  schema_name=>'hr',

  streams_type=>'apply',

  streams_name=>'apply_h10g',

  queue_name=>'strmadmin.h10g_queue',

  include_dml=>true,

  include_ddl=>true,

  include_tagged_lcr=>false,

  source_database=>'prod',

  inclusion_rule=>true);

  end;

  /

  3.12启动STREAM

以下是引用片段:

  #以strmadmin身份,登录从数据库。

  connectstrmadmin/strmadmin

  #启动Apply进程

  begin

  dbms_apply_adm.start_apply(

  apply_name=>'apply_h10g');

  end;

  /

  #以strmadmin身份,登录主数据库。

  connectstrmadmin/strmadmin

  #启动Capture进程

  begin

  dbms_capture_adm.start_capture(

  capture_name=>'capture_prod');

  end;

  /

[#page_#]

  3.13停止STREAM

以下是引用片段:

  #以strmadmin身份,登录主数据库。

  connectstrmadmin/strmadmin

  #停止Capture进程

  begin

  dbms_capture_adm.stop_capture(

  capture_name=>'capture_prod');

  end;

  /

  #以strmadmin身份,登录从数据库。

  connectstrmadmin/strmadmin

  #停止Apply进程

  begin

  dbms_apply_adm.stop_apply(

  apply_name=>'apply_h10g');

  end;

  /

3.14清除所有配置信息

  要清楚Stream配置信息,需要先执行3.13,停止Stream进程。

以下是引用片段:

  #以strmadmin身份,登录主数据库。

  connectstrmadmin/strmadmin

  execDBMS_STREAMS_ADM.remove_streams_configuration();

  #以strmadmin身份,登录从数据库。

  connectstrmadmin/strmadmin

  execDBMS_STREAMS_ADM.remove_streams_configuration();

  4测试场景

  本文档建立了针对hr用户的Stream复制环境,如果没有特别声明,以下测试场景均以hr用户身份执行。

  4.1建一张表测试

  主数据库

  SQL>CREATETABLETTT(idNUMBERPRIMARYKEY,

  2nameVARCHAR2(50)

  3)

  4/

  Tablecreated.

  从数据库

  SQL>descTTT

  NameNull?

Type

  -------------------------------

  IDNOTNULLNUMBER

  NAMEVARCHAR2(50)

  4.2表中插入一行数据

  主数据库

  SQL>insertintotttvalues(1,'sdfsdfsdfsdf');

  1rowcreated.

  SQL>commit;

  Commitcomplete.

  SQL>

  从数据库

  SQL>select*fromTTT;

  IDNAME

  ------------------------------

  1sdfsdfsdfsdf

4.3变更一下表的结构,添加一列

  主数据库

  SQL>ALTERTABLETTTADD(ageNUMBER

(2));

  Tablealtered

  从数据库

  SQL>descTTT

  NameNull?

Type

  ---------------------------------

  IDNOTNULLNUMBER

  NAMEVARCHAR2(50)

  AGENUMBER

(2)

[#page_#]

  4.4将表换一个表空间

  主数据库

  SQL>SELECTtable_name,tablespace_nameFROMuser_tables

  2  WHEREtable_name='TTT';

  TABLE_NAMETABLESPACE_NAME

  ------------------------------------------------------------

  TTTUSERS

  SQL>ALTERTABLETTTMOVETABLESPACEtbs_stream;

  Tablealtered

  SQL>SELECTtable_name,tablespace_nameFROMuser_tables

  WHEREtable_name='TTT';

  TABLE_NAMETABLESPACE_NAME

  ------------------------------------------------------------

  TTTTBS_STREAM

  从数据库

  SQL>SELECTtable_name,tablespace_nameFROMuser_tables

  WHEREtable_name='TTT';

  TABLE_NAMETABLESPACE_NAME

  ------------------------------------------------------------

  TTTTBS_STREAM

 4.5表上Name列建一索引

  主数据库

  SQL>CREATEINDEXttt_name_idxONTTT(name);

  Indexcreated

  从数据库

  SQL>SELECTtable_name,index_nameFROMuser_indexesWHEREtable_n

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1