单机Linux平台Oracle 10g DataGuard Logical Standby 搭建实例

操作系统:linux redhat 5

Oracle: 10.2.0.1

主库:orcl

备库:stby

 

一.  逻辑Standby创建过程

创建物理Standby

单机Linux平台Oracle 10g DataGuard Physical Standby 搭建实例(1)http://space.itpub.net/81227/viewspace-701181

单机Linux平台Oracle 10g DataGuard Physical Standby 搭建实例(2)http://space.itpub.net/81227/viewspace-701198

单机Linux平台Oracle 10g DataGuard Physical Standby 搭建实例(3)http://space.itpub.net/81227/viewspace-701231

单机Linux平台Oracle 10g DataGuard Physical Standby 搭建实例(4)http://space.itpub.net/81227/viewspace-701293

单机Linux平台Oracle 10g DataGuard Physical Standby 搭建实例(5)http://space.itpub.net/81227/viewspace-702254

单机Linux平台Oracle 10g DataGuard Physical Standby 搭建实例(6)http://space.itpub.net/81227/viewspace-702263

单机Linux平台Oracle 10g DataGuard Physical Standby 搭建实例(7)http://space.itpub.net/81227/viewspace-702264

单机Linux平台Oracle 10g DataGuard Physical Standby 搭建实例(8)http://space.itpub.net/81227/viewspace-702270

单机Linux平台Oracle 10g DataGuard Physical Standby 搭建实例(9)http://space.itpub.net/81227/viewspace-702272

单机Linux平台Oracle 10g DataGuard Physical Standby 搭建实例(10)http://space.itpub.net/81227/viewspace-702273

 

2  Primary数据库生成数据字典

执行下列过程,生成LogMiner字典信息:

SQL> EXECUTE DBMS_LOGSTDBY.BUILD; 

注意:在Primary生成数据字典前,一定要确保待转换的物理Standby数据库已经停止REDO应用。如果已经启用了REDO应用,执行下列语句停止REDO应用:

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

控制文件中记录了日志文件的应用状态,正常情况下一个日志文件只会被应用一次,如果Primary生成的数据字典信息被物理Standby数据库应用了,等该物理Standby转换成逻辑Standby数据库时(不应用数据字典不代表就不能执行转换哟)就不会再应用这些文件,自然也没有Primary数据库对象的元数据,这可能会导致这部分对象的修改不能被逻辑Standby正常应用。

我们操作的根本目的是为了让逻辑Standby能够应用到这部分数据字典信息,只要能够实现这一点,是否暂停REDO应用或什么时间暂停REDO应用就无所谓了。这也我们理解另外一个问题,如果Primary生成LogMiner字典信息时,待转换的物理Standby数据库没有暂停REDO应用怎么办?好办,马上暂停REDO应用,然后Primary数据库重新生成一下LogMiner字典信息就是。

转换物理Standby为逻辑Standby

执行下列语句,转换物理Standby为逻辑Standby

SQL> SHOW PARAMETER DB_NAME

NAME         TYPE        VALUE

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

db_name        string      orcl

SQL> ALTER DATABASE RECOVER TO LOGICAL STANDBY LGDG; 

执行完该语句之后,关闭数据库并重新启动到MOUNT状态:

SQL> SHUTDOWN IMMEDIATE 

ORA-01507: database not mounted 

ORACLE instance shut down. 

SQL>  STARTUP MOUNT;

为什么要重启?因为上述操作涉及逻辑Standby数据库更名,包括DBIDINCARNATION等均已被重新初始化。

再次查看DB_NAME参数和数据库角色:

SQL> SHOW PARAMETER DB_NAME;

NAME               TYPE        VALUE

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

db_name             string      stby

SQL> SELECT DATABASE_ROLE FROM V$DATABASE;

DATABASE_ROLE

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

LOGICAL STANDBY

现在DB_NAME和数据库的角色都已经被修改。

调整逻辑Standby数据库初始化参数

设置重做日志文件路径,将本地生成的归档文件和Primary数据库发送来的归档文件分开,存放到不同目录内,注意归档文件路径不要冲突,修改参数如下:

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/software/app/oracle/oradata/arch VALID_FOR=(ONLINE_LOGFILES, ALL_ROLES) DB_UNIQUE_NAME=stby';

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='LOCATION=/home/oracle/software/app/oracle/oradata/arch/stby VALID_FOR=(STANDBY_LOGFILES, STANDBY_ROLE) DB_UNIQUE_NAME=stby';

打开逻辑Standby

由于逻辑StandbyPrimary数据库事务并不一致,因此第一次打开时必须指定RESETLOGS子句,执行语句如下:

SQL> ALTER DATABASE OPEN RESETLOGS;

然后执行下列SQL命令开始应用REDO数据:

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;

如果要启用实时应用,建议首先创建Standby Redologs,例如,为该逻辑Standby创建几组Standby Redologs

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 '/u01/app/oracle/oradata/orcl/redo04.log' SIZE 50m; 

重新执行启动REDO应用的命令,附加APPLY IMMEDIATE子句,以打开实时应用(由于当前REDO应用已经启动,因此我们首先停止REDO应用):

SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY; 

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;  

验证环境

所有配置完成,接下来尝试在Primary数据库端执行修改操作,看看是否能够分别在逻辑Standby和物理Standby端应用。

首先在Primary数据库端执行下列语句,向表插入一条新记录并提交:

SQL> insert into scott.dept values(1,'dave','dmm');

SQL> commit;

SQL> alter system switch logfile;

接下来看看逻辑Standby的同步情况:

SQL> select * from scott.dept;

    DEPTNO DNAME          LOC

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

        10 ACCOUNTING     NEW YORK

        20 RESEARCH       DALLAS

        30 SALES          CHICAGO

        40 OPERATIONS     BOSTON

         1 dave           dmm

提示: 细心观察重做日志,发现逻辑Standby有一点设计得很好,从Primary数据库接收到的重做日志文件文件,应用过之后就会自动删除,节省了磁盘空间。(10G无此特性,可能是11G的新特性)

OK,至此逻辑Standby创建成功.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/81227/viewspace-706435/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/81227/viewspace-706435/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值