正如前面介绍的那样,对于数据库级复制,oracle提供了两种方式:

  • A 、MAINTAIN_GLOBAL
  • B 、PRE_INSTANTIATION_SETUP、POST_INSTANTIATION_SETUP

  Maintain_global适用于中小型数据库创建,而PRE_INSTANTIATION_SETUP+POST_INSTANTIATION_SETUP适用于大型数据库的创建,这里我们演示通过 PRE_INSTANTIATION_SETUP 和POST_INSTANTIATION_SETUP过程创建数据库级streams复制环境。

  设定环境如下:

  • 源数据库 sid : jssweb ,目标库 : jssstr( 目标库暂不存在,我们将通过rman  duplicate 克隆一个)
  • Do_domain 均为jss.cn
  • 源库本地捕获
  • 复制环境为双向复制
  • 同步DDL操作
  • 通过RMAN进行目标库初始化
  • 采用直接配置的方式,不生成脚本

  提示:capture进程不会捕获sys/system/ctxsys几个schema的修改。因此这几个用户下的修改不会在streams环境中维护。

一、准备工作:

1、 设置标识符

  为了醒目区分操作所在的数据库,便于阅读,我们首先通过sql*plus的set sqlprompt命令设置操作符。

  设置源库端显示:

    [oracle@yans1 ~]$ export ORACLE_SID=jssweb

    [oracle@yans1 ~]$ sqlplus "/ as sysdba"

    SQL*Plus: Release 10.2.0.3.0 - Production on  星期二 11月 25 16:4 1 :40 2008

    Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

    Connected to:

    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production

    With the Partitioning, OLAP and Data Mining options

    SQL> set sqlprompt "JSSWEB> "

    JSSWEB> 

  设置目标库显示:

    [oracle@yanttest ~$ export ORACLE_SID=jssstr

    [oracle@yanttest ~]$ sqlplus "/ as sysdba"

    SQL*Plus: Release 10.2.0.3.0 - Production on  星期二 11月 25 16:43:43 2008

    Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

    已连接到空闲例程。

    SQL> set sqlprompt "JSSSTR> "

    JSSSTR> 

2、 创建jssstr辅助实例

  这一步主要是为了后面执行rman duplicate命令打下基础,关于创建辅助实例的相关操作,如果你尚不了解,建议参考《 [ 三思笔记]RMAN高级应用之Duplicate复制数据库 》,由于本步操作稍嫌繁琐,而且非本节介绍之主要内容,为避免本步操作占用过多篇幅影响视线,就不提供详细步骤了。

3、 设置源端及目标端监听和TNSNAMES

  主要修改两机%ORACLE_HOME/network/admin/listener.ora和tnsnames.ora,确保监听已启动,两机互联互通。

  源端和目标端tnsnames.ora增加下列内容:

    JSSWEB_172.25.13.229 =

      (DESCRIPTION =

        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))

        (CONNECT_DATA =

          (SERVER = DEDICATED)

          (SERVICE_NAME = jssweb.jss.cn)

        )

      )

    JSSSTR_172.25.13.231 =

      (DESCRIPTION =

        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.231)(PORT = 1521))

        (CONNECT_DATA =

          (SERVER = DEDICATED)

          (SERVICE_NAME = jssstr.jss.cn)

        )

      )

  源端监听listener.ora增加下列内容:

    SID_LIST_LISTENER =

      (SID_LIST =

        (SID_DESC =

          (SID_NAME = PlsExtProc)

          (ORACLE_HOME = /opt/ora10g/product/10.2.0/db_1)

          (PROGRAM = extproc)

        )

        (SID_DESC =

          (GLOBAL_DBNAME = jssweb.jss.cn)

          (ORACLE_HOME = /opt/ora10g/product/10.2.0/db_1)

          (SID_NAME = jssweb)

        )

      )

  目标端也进行相应修改:

    SID_LIST_LISTENER =

      (SID_LIST =

        (SID_DESC =

          (SID_NAME = PlsExtProc)

          (ORACLE_HOME = /data/oracle/product/10.2)

          (PROGRAM = extproc)

        )

        (SID_DESC =

          (GLOBAL_DBNAME = jssstr.jss.cn)

          (ORACLE_HOME = /data/oracle/product/10.2)

          (SID_NAME = jssstr)

        )

      )

  修改后保存并重启监听。

4、 确认数据库初始化参数设置

  首先查看源端:

    JSSWEB> show parameter global_names

    NAME                                 TYPE        VALUE

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

    global_names                         boolean     TRUE

    JSSWEB> show parameter compatible

    NAME                                 TYPE        VALUE

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

    compatible                           string      10.2.0.3.0

    JSSWEB> show parameter job_queue

    NAME                                 TYPE        VALUE

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

    job_queue_processes                  integer     10

  目标端辅助实例配置完成后,启动到nomount状态:

    JSSSTR> startup nomount

    ORACLE  例程已经启动。

    Total System Global Area  524288000 bytes

    Fixed Size                  2073984 bytes

    Variable Size             213912192 bytes

    Database Buffers          301989888 bytes

    Redo Buffers                6311936 bytes

    JSSSTR> show parameter global_names;

    NAME                                 TYPE        VALUE

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

    global_names                         boolean     TRUE

    JSSSTR> show parameter compatible

    NAME                                 TYPE        VALUE

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

    compatible                           string      10.2.0.3.0

    JSSSTR> show parameter job_queue

    NAME                                 TYPE        VALUE

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

    job_queue_processes                  integer     10

  这里我们设置了必须设置的几个初始化参数,事实上除了上述参数外,还有一些其它可选或相关的初始化参数设置,详见:

5、 确认数据库归档状态

    JSSWEB> archive log list;

    Database log mode              No Archive Mode

    Automatic archival             Disabled

    Archive destination            /opt/ora10g/product/10.2.0/db_1/dbs/arch

    Oldest online log sequence     9

    Current log sequence           11

  如果不是,可按下列方式操作修改数据库为归档模式。

    JSSWEB> startup mount

    ORACLE instance started.

    Total System Global Area  524288000 bytes

    Fixed Size                  2073984 bytes

    Variable Size             163580544 bytes

    Database Buffers          352321536 bytes

    Redo Buffers                6311936 bytes

    Database mounted.

    JSSWEB> alter database archivelog ;

    Database altered.

    JSSWEB> alter system set log_archive_dest_1=¨location=/data/oradata/jssweb/archive/¨;

    System altered.

    JSSWEB> archive log list;

    Database log mode              Archive Mode

    Automatic archival             Enabled

    Archive destination            /data/oradata/jssweb/archive/

    Oldest online log sequence     9

    Next log sequence to archive   11

    Current log sequence           11

    JSSWEB> alter database open;

    Database altered.

  提示:如果不是准备配置成双向的复制环境,目标端可以是非归档模式。