国庆之前就准备做这个实验了。 后来时间不够,就没搞了。 6天的长假一放,都散漫的不成样子了。懒散了很多。 今天7号。 上班也没啥精神,但是该做的实验还得继续。
Oracle 高可用性的三个主要体现是: RAC, Data Guard 和 Stream. 所以熟练掌握这些技术就是评价DBA的标准一个。 RAC + Data Guard 主要用在灾备或者报表服务器上。 比如用RAC+ 逻辑standby 做报表,从而减轻RAC 系统的压力。
关于Data Guard 的一些原理知识可以参考:
Oracle Data Guard 理论知识
http://blog.csdn.net/tianlesoftware/archive/2010/04/22/5514082.aspx
Oracle Data Gurad Physical Standby 相关说明
http://blog.csdn.net/tianlesoftware/archive/2010/05/04/5557410.aspx
RAC 的知识参考:
RAC 的一些概念性和原理性的知识
http://blog.csdn.net/tianlesoftware/archive/2010/02/27/5331067.aspx
Redhat 5.4 + ASM + RAW+ Oracle 10g RAC 安装文档
http://blog.csdn.net/tianlesoftware/archive/2010/09/09/5872593.aspx
RAC 和 Data Guard 的组合有4种情况:
组合 |
Primary |
Standby |
1 |
Single Instance |
Single Instance |
2 |
Single Instance |
RAC |
3 |
RAC |
Single Instance |
4 |
RAC |
RAC |
在RAC + DG 平台下,重用的几个视图:
(1) v$archive_dest_status: 在Standby Database 上可以在这个视图中查看接收的日志编号,恢复的日志编号,从而可以了解Standby Database 和 Primary Database 日志的差别。 如果standby 比Primary 滞后太多,可以考虑增加恢复进程。 该视图中的recovery_mode 列也显示了是否使用了实时恢复(Real-Time Apply).
(2) v$archive_dest: 这个视图中的error 列可以用于辅助诊断。
(3) v$managed_standby: 这个视图可以确认standby RAC中,哪个实例是执行recover 的实例。
下面实验是RAC + Single standby 的模式。
一. 测试环境
1.1 RAC Primary Database 环境
RAC primary |
Rac1 |
Rac2 |
Public IP |
10.85.10.1 |
10.85.10.2 |
Private IP |
192.168.1.200 |
192.168.1.201 |
Virtual IP |
10.85.10.3 |
10.85.10.4 |
Instance |
Orcl1 |
Orcl2 |
DB_NAME |
Orcl |
|
Data,Control File, Redo File |
ASM |
1.2 Standby Database 环境
Single Instance Standby |
说明 |
IP |
10.85.10.5 |
Oracle |
非RAC 版本 |
Instance |
Orcl |
Data,Control File,Redo File |
/u01 |
二.配置说明
1.3 switchover 之前,这时RAC是Primary Database
(1) RAC的每个实例都要配置日志发送,目的地指向Standby。
(2) 确认日志发送的方法。如:LGWR
(3) Standby 配置日志接收方法,如:standby redo log。
(4) 启动MRP
1.4 switchover 之后,此时,rac 是standby database
如果Standby 是RAC,则日志接收和日志恢复可以是不同的Instance。 因此Oracle 在术语上把这两种实例分别叫作Receive Instance 和 Recover Instance。 在这个实验中,放在一个实例上进行。
(1) Single Instance 的日志只发送到RAC的一个实例。
(2) 确认RAC 的日志接收方法,如: Standby Redo Log。
(3) 在RAC的一个实例上启动MRP.
三. 开始搭建
3.1 主库归档模式设置
Data Guard 用的归档日志来完成同步, 所以在实验之前, 主库必须是归档模式。 这里就RAC 的归档。 关于RAC的归档参考Blog RAC 之 RMAN 备份中的1.2 节。 设置归档就那么几步, 设置好归档目录,然后关闭所以节点,最后在一个节点上将模式设置为归档就ok了。
RAC 之 RMAN 备份
http://blog.csdn.net/tianlesoftware/archive/2010/09/22/5901053.aspx
3.2 准备备库环境
安装Oracle软件,并建立实例的相关目录。Linux 平台上Oracle 的安装参考blog:
linux平台下oracle数据库安装
http://blog.csdn.net/tianlesoftware/archive/2009/10/24/4718218.aspx
在备库创建相关目录
mkdir -p $ORACLE_BASE/oradata/orcl/datafile
mkdir -p $ORACLE_BASE/oradata/orcl/tempfile
mkdir -p $ORACLE_BASE/admin/orcl/adump
mkdir -p $ORACLE_BASE/admin/orcl/bdump
mkdir -p $ORACLE_BASE/admin/orcl/cdump
mkdir -p $ORACLE_BASE/admin/orcl/dpdump
mkdir -p $ORACLE_BASE/admin/orcl/hdump
mkdir -p $ORACLE_BASE/admin/orcl/pfile
mkdir -p $ORACLE_BASE/admin/orcl/udump
这里要注意的地方:
因为RAC 主库是用ASM 来存放的,所以这里设置的目录,与ASM 目录是不一致的, 这种情况下,我们就需要在参数文件里用