Oracle11gR2 RAC实时应用集群(2)在Windows2003 x86_64下的集群(ASM篇)
(Oracle11gR2 + Grid + Windows2003 x86_64 + ASM)
RAC(Real Application Clusters,实时应用集群),是多台主机组成的集群计算环境,是Oracle数据库支持网格计算环境的核心技术。
普通Oracle数据库,只能在一台主机上运行,数据库的实例和数据库文件都在一台主机上,是单实例单数据库。
RAC实时应用集群,可以在多台主机上运行,每台节点主机上运行一个数据库实例,通过共享存储磁盘访问相同的数据库文件,是多实例单数据库,单一节点故障
不影响数据库的使用,负载能力也会随节点主机的增加而加强。
Oracle 11g引入Grid infrastructure,Oracle集成了自动存储管理功能,数据库基础设施就完全不再需要任何第三方的文件系统卷管理器.
RAC集群的关键点:
1.共享存储
2.节点间需要内部通讯,以协调集群正常运行,所以每个节点需要提供外部网络与内部网络.
3.CRS集群软件: 需要集群软件(Clusterware)协调各节点.
4.集群注册文件(OCR): 需要注册集群,保存在共享磁盘上.
5.仲裁磁盘(Voting Disk): 需要协调各节点决定控制权,做为表决器,保存在共享磁盘上.
6.虚拟IP(Virturl IP): 提供客户端连接,IP由集群软件接管,当集群就绪时,虚拟IP可以连接.
7.SCAN IP: 11gR2有增加的新特性,用于客户端连接,不需要再在客户端tnsname.ora中添加各节点状态,SCAN IP可以调节负载平衡.
共享存储访问方式(存储系统):
1.集群文件系统(CFS:Cluster File System)
2.自动存储管理(ASM:Automatic Storage Management)
3.网络文件系统(NFS)
单机文件系统FAT32,NTFS,ext3不能作为共享存储
Oracle 11gR2不再支持使用裸设备作为共享存储
特点
集群名称
SCAN名称(Single Client Access Name)
GNS(网格命名服务)
由于自动存储管理Oracle只支持Linux平台,所以在Windows下选择以下储存方案来建立集群系统:
项目 存储系统 存储位置
Clusterware软件 NTFS 本地磁盘
voting disk ASM 共享磁盘
OCR ASM 共享磁盘
数据库软件 NTFS 共享磁盘
数据库 ASM 共享磁盘
下面说说Oracle RAC在Windows2003 x64下的安装过程。
一.配置多主机节点环境
主要为学习测试之用,可以使用虚拟机模拟来实现多台主机,比较好的选择是VMware Workstation8.0.4.
1.使用VMware Virtual Network Editor添加网络适配器(VMnet1,VMnet2),生成两个网段,VMnet1的网段用于节点外部通讯(PublicNet),VMnet2网段用于节点间通讯(PrivateNet).
2.使用VMware创建两台主机,在每台主机上安装Windows2003系统,每台需要虚拟两张网卡,IP分配如下:
节点主机 主机公网IP 虚拟IP 私网IP(内部网络)
RAC01 192.168.89.166 192.168.89.66 192.168.234.166
RAC02 192.168.89.167 192.168.89.67 192.168.234.167
公网与私网IP设置在网卡上,虚拟IP不用设置.
设置网络访问顺序,公网在前,私网在后(网络连接/高级/高级设置)
3.设置DNS解析,修改2台虚拟机上的C:\WINDOWS\system32\drivers\etc\hosts文件,添加以下内容:
192.168.89.166 rac01
192.168.89.167 rac02
192.168.89.66 rac01v
192.168.89.67 rac02v
192.168.234.166 rac01p
192.168.234.167 rac02p
192.168.89.91 rac-scan
4.创建共享磁盘
Disk Mode 选择Independent Persistent,不用缓存,以便多机访问共享.
磁盘总线选择SCSI 1:1或1:x,与本地磁盘(SCSI 0:0)分开
另外需要修改各虚拟机目录中的vmx文件,解除锁并取消缓存,以便多机访问,添加
disk.locking="false"
diskLib.dataCacheMaxSize = "0"
创建后另一台主机也挂载同一个磁盘.
5.磁盘设置
在两台虚拟机上启动磁盘的自动挂载功能,在命令行中输入
diskpart
automount enable
exit
禁用共享磁盘的写入缓存(真实硬件环境才有,虚拟环境没有缓存选项)
6.磁盘分区
共享磁盘创建后指定为扩展分区,分成三个逻辑分区,不要格式化,不要指定盘符
三个分区一个用于存放集群注册文件OCR和表决磁盘,一个用于安装Oracle数据库,一个用于快速恢复区
另一台主机应该也同步看到有分区,需要把盘符删除。
注意,在虚拟机上创建的共享磁盘,需要立即分配磁盘空间,不然后面安装grid时,存放ocr会有问题,其它节点集群不能启动,可能出现以下错误,创建磁盘时分配空间就不再有这个错误:
[INS-20802]网格基础结构配置失败
原因?-?插件的执行方法失败 操作?-?参阅日志或与 Oracle 技术支持服务联系。
7.标识ASM磁盘
可以使用安装包中的ASM磁盘图形界面工具asmtoolg来配置ASM磁盘,标记ASM的特有标识,也可以在安装grid时配置.
二.安装RAC.
1.安装网格计算软件Gird infrastructure.
将软件包win64_11gR2_grid.zip解压缩,在节点rac01上运行Grid文件夹下的setup.exe文件,安装位置为本地磁盘,安装程序会自动将Grid安装到其它节点主机上,所以各节点主机的管理员用户需设置相同密码,并能访问共享。
1>设置网格基础结构
安装选项: 安装和配置集群的网格基础结构.
安装类型: 高级安装
语言: 简体中文
网格即插即用: 集群名称: rac-cluster
SCAN名称: rac-scan
SCAN端口: 1521
如果需要自动生成虚拟IP,需配置GNS
GNS子域: racgrid
GNS VIP地址: 192.168.89.91
集群节点信息: 编辑和添加主机和虚拟IP名称
主机名 虚拟IP名
rac01 rac01v
rac02 rac02v
网络接口使用情况: 接口名称 子网 接口类型
PublicNet 192.168.89.0 公共
PrivateNet 192.168.234.0 专用
存储选项: 自动存储管理(ASM)
创建ASM磁盘组: 当选择存储选项:自动存储管理(ASM)后,需要创建ASM磁盘,这一步自动启动了ASMCA配置界面.
点标记磁盘,将启动asmtoolg磁盘工具配置新磁盘(此程序在Grid的安装包中),标记ASM的特有标识.
设置磁盘组名VOTE,勾选出现的磁盘,磁盘将用于存放OCR与表决磁盘.
ASM口令: 设置SYS和ASMSNMP
故障隔离: 不使用智能平台管理接口(IPMI).
安装位置: 设置安装位置默认:Oracle基目录C:\app\Administrator,软件位置C:\app\11.2.0\grid
先决条件检查: 自动检查先决条件
安装
完成安装后检查集群的状态
C:\>olsnodes
rac01
rac02
C:\>crsctl check crs
CRS-4638: Oracle High Availability Services 联机
CRS-4537: 集群就绪服务联机
CRS-4529: 集群同步服务联机
CRS-4533: 事件管理器联机
C:\>crs_stat -t -v
名称 类型 R/RA F/FT 目标 状态 主机
----------------------------------------------------------------------
ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE rac01
ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE rac01
ora.VOTE.dg ora....up.type 0/5 0/ ONLINE ONLINE rac01
ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE rac01
ora.eons ora.eons.type 0/3 0/ ONLINE ONLINE rac01
ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
ora....network ora....rk.type 0/5 0/ ONLINE ONLINE rac01
ora.oc4j ora.oc4j.type 0/5 0/0 OFFLINE OFFLINE
ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE rac01
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE rac01
ora....01.lsnr application 0/5 0/0 ONLINE ONLINE rac01
ora.rac01.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.rac01.ons application 0/3 0/0 ONLINE ONLINE rac01
ora.rac01.vip ora....t1.type 0/0 0/0 ONLINE ONLINE rac01
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE rac02
ora....02.lsnr application 0/5 0/0 ONLINE ONLINE rac02
ora.rac02.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.rac02.ons application 0/3 0/0 ONLINE ONLINE rac02
ora.rac02.vip ora....t1.type 0/0 0/0 ONLINE ONLINE rac02
ora....ry.acfs ora....fs.type 0/5 0/ ONLINE ONLINE rac01
ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE rac01
C:\>srvctl status listener
监听程序 LISTENER 已启用
监听程序 LISTENER 正在节点上运行: rac01,rac02
重新启动节点后,如果集群服务不能启动.
C:\>crsctl check crs
Failure 1 contacting CSS daemon
Cannot communicate with CRS
Cannot communicate with EVM
需要检查设备权限的问题,如果没有使用udev的rules文件配置设备文件权限,重启后磁盘设备owner会被修改为root.
或者没有设置crs随系统启动.
C:\>crsctl stop crs # 停止CRS服务
C:\>crsctl start crs # 启动CRS服务
C:\>crsctl disable crs # 禁止随系统启动
C:\>crsctl enable crs # 允许随系统启动
C:\>crsctl stop cluster -all # 停止所有节点上运行的全部集群资源
C:\>crsctl start cluster -all # 启动所有节点上运行的全部集群资源
2.安装Oracle数据库软件.
将软件包win64_11gR2_database_1of2.zip与win64_11gR2_database_2of2.zip解压缩,在节点rac01运行database下的setup.exe。
配置安全更新 不需要接收更新
安装选项 选择仅安装数据库软件,后续再通过dbca创建数据库.
网格选项 Real Application Clusters数据库安装
节点全选
产品语言 根据需要选择:英语、简体中文
数据库版本 企业版
安装位置 默认位置
Oracle基目录: D:\app\Administrator
软件位置: D:\app\Administrator\product\11.2.0\dbhome_1
先决条件检查
安装
按提示在rac02上执行D:\app\Administrator\product\11.2.0\dbhome_1\bin\selecthome.bat,以激活以下产品:
Oracle Data Provider for .NET
Oracle Provider for OLE DB
Oracle Objects for OLE
Oracle Counters for Windows Performance Monitor
Oracle Administration Assistant
安装完成,关闭安装程序.
3.配置ASM磁盘添加磁盘组
运行asmca命令,挑选之前用asmtoolg标识的asm磁盘.
设置磁盘组名,勾选出现的磁盘
装载磁盘到各节点.
4.创建数据库.
在开始菜单Oracle菜单中打开dbca(Database Configuration Assistant)来创建数据库.
数据库类型 Oracle Real Application Clusters数据库
操作 创建数据库
数据库模板 一般用途
数据库标识 设置全局数据库名和SID前缀,节点全选
管理选项 默认
数据库身份 设置密码
数据库文件位置 存储类型:自动存储管理,使用Oracle-Managed files,数据库区:设置之前创建的磁盘组+DATA
恢复区:+FLASH_AREA
字符集
安装
5.测试数据库
运行sqlplus,以dba权限登录Oracle系统后执行以下语句查询集群节点状态:
C:\>sqlplus /nolog
SQL>connect / as sysdba;
SQL>select instance_name,host_name,status from gv$instance;
SQL>select instance_name,host_name,status from v$instance;
SQL>select * from tab;