[Data Guard实验]一步一步创建Oracle单机物理Standby
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