[Data Guard实验]一步一步创建Oracle单机物理Standby

Posted on 2011-11-17 21:42  xublogs  阅读(853)  评论(0编辑  收藏  举报

DG作用: 容灾, 快速恢复, 减少MTTR.

软件环境: Windows 2003 SP2 + Oracle 10g R2

相关说明:
ORACLE_BASE=D:\oracle\product\10.2.0
ORACLE_HOME=D:\oracle\product\10.2.0\db_1
Primary DB <=> chicago
Standby DB <=> boston

详细步骤:

1. 首先通过DBCA创建chicago, DBCA创库过程这里就不多讲了, 自行google吧.

2. chicago创建完成后, 先让它开启强制归档:

3. 检查有没有口令文件: D:\oracle\product\10.2.0\db_1\database\PWDchicago.ora, 没有则通过下面的命令创建一个:

linux下口令文件的路径和文件名和windows略有不同: $ORACLE_HOME\dbs\orapwSID

4. 为chicago创建Standby日志组, 这样做是为了chicago以后能够快速从Primary切换到Standby做准备:

为了不与现有的联机重做日志冲突, 先找出最大的group号:

查下路径, 等下Standby日志也放在这里:

在chicago端创建Standby日志组, Oracle建议Standby日志组至少要比联机日志组多一个, 这里我们创建4个:

(* 删除Standby日志组也很简单, 可以采用这条命令: ALTER DATABASE DROP STANDBY LOGFILE GROUP 4;)
看看刚建的Standby日志组, 还都是UNASSIGNE, 这是应为chicago是Primary, 只有当切换成Standby角色时, Standby日志组才起作用:

5. 接下来开始修改chicago的参数文件, 使其符合Primary角色:

首先, 我们先得到它的文本类型的参数文件:

在这个位置(D:\oracle\product\10.2.0\db_1\database\INITchicago.ORA)可以找到刚生成的文本参数文件, 做如下修改:

(#开头的为注释,实际使用时需删掉)


 

6. 复制刚创建好的primary参数文件,按如下修改后创建standby的参数文件,红色字体表示与primary不同的地方:

(注意创建参数文件里所需的文件路径)

D:\oracle\product\10.2.0\db_1\database\INITboston.ORA

7. 以primary的文本参数文件启动chicago,然后保存为服务器参数文件:

检查修改后的参数是否生效:

(db_file_name_convert和log_file_name_convert参数仅在处于standby角色时起作用, 配置格式: primary路径,standby路径,standby路径,primary路径)

8. 检查primary是否处于归档模式, 没有归档的话需要启用归档模式, 如何启用归档模式自行google一下:

9. 接下来备份chicago到boston, 方法很多, 这里我将采用冷备份:

关闭chicago,然后复制其数据文件和重做日志文件到boston:

复制完成后目录(D:\oracle\product\10.2.0\oradata\boston)应有如下文件:

10. 复制完数据文件后,先不要打开chicago, 而是将其启动到mount状态,准备standby需要的控制文件:

创出一个控制文件后,将该文件拷贝成三分,再重命名为control01.ctl、control02.ctl、control03.ctl。

不要采用类似如下命令直接创建3个控制文件, 会导致3个文件的版本不一致,到时启动不了standby数据库:

11. 创建standby服务(仅Windows):

12. 创建standby的口令文件:

13. 为primary和standby创建监听和服务名, 具体怎么操作google吧, 建议用netca和netmgr:

建好后文件D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora应包含如下内容:

测试服务是否连通:

14. 好了boston的准备工作已经做的差不多了, 接下来启动standby到mount状态:

15. 应用重做日志, DISCONNECT FROM SESSION表示将这个操作切换到后台:

16. 创建boston的standby日志组:

报错了, google后发现是因为在备库添加standby redo log需要先停MRP(受管恢复操作):

在boston端添加完standby 联机日志后,在chicago端切换下日志,就可以boston端查到standby日志了:

chicago端切换日志:

boston端验证:

17. 再验证boston端的归档日志自动传输和应用的情况:

先检查下boston端的归档日志情况:

然后在chicago端做切换日志操作:

最后boston端检查是否自动传输和应用成功:

(第一次查询发现归档日志传输ok了, 但是没有自动应用, 于是我这里又让手动让它应用了一下, 其实是由于延迟的关系, 不用手动也可以自动应用的)


Ref:

Creating a Physical Standby Database

http://download.oracle.com/docs/cd/B19306_01/server.102/b14239/create_ps.htm#SBYDB00200

 

Managing a Physical Standby Database

http://download.oracle.com/docs/cd/B19306_01/server.102/b14239/manage_ps.htm#SBYDB00700