Chinaunix首页 | 论坛 | 博客
  • 博客访问: 54724
  • 博文数量: 56
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 600
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-15 09:38
文章分类
文章存档

2011年(8)

2010年(48)

我的朋友

分类: Oracle

2010-10-25 10:03:08

大话 ORACLE RAC 
第一部分
集群理论篇


第一章:
RAC 初体验

PC Server + Linux + Oracle 10g RAC 


OS配置,
存储配置,
网络配置,
最后才是ORACLE 自己的配置。


硬件环境:
整个RAC的硬件环境包括主机,共享存储,网络互联设备

1,节点(主机)
每个节点还要有一个HBA卡,通过光纤连接到存储设备,具体的连接方式可以直连或者通过光纤交换机
2,两个网卡
   Private NIC   Private IP
    Public NIC   Public IP
    
    除了Public IP 和Private IP之外,每个节点还会有第三个IP地址,这个地址叫做VIP。
    在所有的节点正常工作是,每个节点的VIP会被分配到Public NIC上;如果一个节点宕机,这个节点
    的VIP会被转移到还在运行的节点上。也就是幸存节点的Public NIC这个网卡上,会有三个IP地址,
    除了一个Public IP之外,会有两个VIP。
    
    
3,两个网络交换机
每个节点的Public NIC会被连接到H6这个交换机上,其他要访问数据库的计算机也连接到H6这台交换机上。
每个节点的Private NIC 连接到H5这个交换机上。注意,这个交换机只用于节点互联,也就是只连接每个
节点的Private NIC,不要再连接其他设备。
这里要强调的是:
在整个RAC的网络环境中,有两个网络存在,(实际上有三个网络,第三个网络就是存储网络)。
其中的Public NIC接入公共网络,为客户机提供查询服务,DBA的日常维护也是通过这个网络。
而节点的Private NIC接入私有网络,这个网络是一个完全隔离的网络,其上传递的数据只是RAC节点
间的心跳数据和Cache Fusion数据。
4,共享存储
在整个RAC环境中,最重要的就是共享存储。数据文件,联机日志,参数文件,控制文件都必须放在
共享存储上,并保证每个节点都能访问到这个存储设备。
EMC是最常用的存储产品。每个节点主机需要安装HBA卡,然后通过光纤和存储设备连接。
这个网络就是RAC环境中的第三个网络(存储网络),只是这个网络不是用网线,而是用光纤线连接;
并且运行的不是TCP/IP协议,而是SCSI协议。
软件环境:
操作系统,集群件,集群文件系统和数据库。
1,操作系统
版本相同,小版本,补丁包必须一样。
2,集群件
集群件是安装在操作系统之上的一个特殊软件,负责管理整个集群环境中的硬件资源,并为上
层的RAC集群提供基础服务。
集群件和OS之间的关系非常类似于单机环境下应用程序和OS的关系:
应用程序不能访问硬件,所有的硬件访问都是通过OS内核完成的。
在单机环境下OS内核能够代理本机应用程序对硬件的访问,但是在集群环境下有多台计算机
这些计算机对硬件的访问仅靠传统的OS是无法进行控制的,因此就有了集群件。
如果我们把整个集群想像成一台虚拟的计算机,那么集群件就是这台计算机上的操作系统,而
RAC是运行在其上的一个应用。
3,集群文件系统
我们已经提到,RAC的数据文件,联机文件,控制文件,参数文件都必须放在共享存储上,保证
所有节点都能访问。这时就需要对节点的访问进行控制,普通的文件系统并不支持集群功能,因
此必须采用特殊的存储策略,比如采用裸设备或者某种集群文件系统。
OCFS && ASM
4,数据库软件
本书环境介绍
===================================================================================
| 硬件
      -----------------------------------------------------------------------------------
      节点主机 1 |Public NIC      Public IP:192.168.123.154
       | VIP:192.168.123.248
       |------------------------------------------------
       |Private NIC     Private IP:10.0.0.154
     ------------------------------------------------------------------------------------
     节点主机 2 |Public NIC      Public IP:192.168.123.155
     | VIP:192.168.123.249
     |-------------------------------------------------
     |Private NIC     Private IP:10.0.0.155
     ------------------------------------------------------------------------------------
     存储 |EMC CX300
     ------------------------------------------------------------------------------------
     
     
     
     -------------------------------------------------------------------------------------
                                        |                  软件
     -------------------------------------------------------------------------------------
     OS |64 bit,Red Hat Enterprise Linux AS 4 Update 4
     -------------------------------------------------------------------------------------
     集群件 |Oracle Clusterware
     -------------------------------------------------------------------------------------
     集群文件系统 |ASM
     -------------------------------------------------------------------------------------
     数据库 |Oracle Database 10.2.0.1
     -------------------------------------------------------------------------------------                        
     
     
     
     
任务列表:
包括对操作系统的配置,对共享存储的配置,对网络的配置,任何一步出错都可能导致失败。
====================================================================================
RAC 部署过程的任务列表
      ------------------------------------------------------------------------------------
      阶段 | 任务列表
      ------------------------------------------------------------------------------------
      前期规划 |确认集群节点数量,每个节点的主机名;
       |区分Public,Private NIC;确认每个主机的三个IP地址
       |数据库存储的技术选型,(ASM/OCFS/RAW/Others);
       |存储空间规划,包括软件的安装位置,数据文件的位置规划
     -------------------------------------------------------------------------------------
     配置节点主机 |配置主机名和三个IP地址;
     |RPM包检查;
     |磁盘分区;
     |配置裸设备;
     |系统需求(OS Kernel参数,空间需求);
     |创建ORACLE用户,要求每个节点UID,GID相同;
     |定义ORACLE用户的环境变量,包括$ORACLE_HOME,$CRS_HOME,资源数量限制;
     |用户等价;
     |节点时间同步;
     |Hangcheck-timer模块配置。
     -------------------------------------------------------------------------------------
     安装部署 |安装Oracle Clusterware,安装后进行检查;
     |安装Oracle Database;
     |创建ASM磁盘;
     |配置Listener;
     |创建ASM;
     |创建RAC数据库;
     |安装后测试,Failover和Loadbalance
    --------------------------------------------------------------------------------------
    
    
    确认节点主机名:
    
     规划阶段任务:定义网络
    ======================================================================================
     | 节点 1 |        节点 2
--------------------------------------------------------------------------------------                      
主机名 |dbp |dbs
--------------------------------------------------------------------------------------
网卡:Public NIC |eth0 |eth0
--------------------------------------------------------------------------------------
网卡:Private NIC |eth1 |eth1
--------------------------------------------------------------------------------------
IP/网络名:Public IP |192.168.123.154/dbp |192.168.123.155/dbs
--------------------------------------------------------------------------------------
IP/网络名:Private IP |10.0.0.154/dbp-priv |10.0.0.155/dbs-priv
--------------------------------------------------------------------------------------
IP/网络名:VIP |192.168.123.130/dbp-vip |192.168.123.131/dbs-vip
--------------------------------------------------------------------------------------
存储选型:
ASM  -->  OCFS  -->  NFS  -->  RAW
Voting disk,OCR 在目前版本还只能创建在裸设备,OCFS上。而数据库的文件,包括数据文件,联机
日志,控制文件,参数文件可以使用任何一种存储方案。
RAC文件存储规划
======================================================================================
文件类别           |本地文件系统 |RAW |ASM
--------------------------------------------------------------------------------------
Oracle Clusterware
--------------------------------------------------------------------------------------
Clusterware Software |$CRS_HOME
--------------------------------------------------------------------------------------
OCR | |/dev/raw/raw1
--------------------------------------------------------------------------------------
Voting Disk | |/dev/raw/raw2
--------------------------------------------------------------------------------------
Oracle Database
    --------------------------------------------------------------------------------------
    Database Software |$ORACLE_HOME
    --------------------------------------------------------------------------------------
    SPFILE | |+DATA
    --------------------------------------------------------------------------------------
    Pfile,password file |$ORACLE_HOME/dbs
    --------------------------------------------------------------------------------------
    Controlfile | |+DATA
    --------------------------------------------------------------------------------------
    Datafile | |+DATA
    --------------------------------------------------------------------------------------
    Logfile | |+DATA
    --------------------------------------------------------------------------------------
    Archived Log |/wxxrdb1_arch
     |/wxxrdb2_arch
    --------------------------------------------------------------------------------------
    Backup | +RECOVERY
    --------------------------------------------------------------------------------------
    
    
实施阶段:
整个过程可以分为几个模块:主机配置,安装Clusterware,安装Oracle Database,配置Listener,
创建ASM,创建Database/
完成所有磁盘分区后,可以在另一台计算机上执行partprobe命令,扫描分区。最后确认两个节点
识别出的分区一致。    
配置裸设备:
所谓裸设备就是通过字符方式访问的设备,也就是读写设备不需要缓冲区。在LINUX下,对磁盘只提供了块
方式访问,要想通过字符方式访问设备,必须配置裸设备服务,并且ORACLE用户对这些裸设备必须有访问
权限。
(1),裸设备服务的配置文件是/etc/sysconfig/rawdevices
添加如下两行,格式为:裸设备名     块设备名。
/dev/raw/raw1    /dev/sdb1
/dev/raw/raw2    /dev/sdb2
(2),要配置ORACLE用户对裸设备的权限,需要编辑UDEV的权限配置文件。
vi /etc/udev/permissions.d/50-udev.permissions
# raw devices
raw*:oracle:dba:0660
raw/*:oracle:dba:0660
(3),确认裸设备服务自动启动,两个节点都要执行。
#chkconfig --list rawdevices
rawdevices 0:off 1:off 2:on 3:on 4:on 5:on 6:off
(4),启动rawdevices服务,确认裸设备创建成功,权限正确
  #service rawdevices restart
  Assigning devices:
  /dev/raw/raw1   -->  /dev/sdb1
  /dev/raw/raw1: bound to major 8,minor 17
  /dev/raw/raw2  -->  /dev/sdb2
  /dev/raw/raw2: bound to major 8,minor 18
 Done
 确认裸设备权限正确:属主应该是oracle:dba.
 # cd /dev/raw
 # ll
 total 0 
 crw-rw---- 1 oracle dba 162,1 Mar 31 14:52 raw1
 crw-rw---- 1 oracle dba 162,2 Mar 31 14:52 raw2
 
 
 9,创建ASM磁盘(在任何一个节点操作即可,以ROOT用户)
 # /etc/init.d/oracleasm   createdisk VOL1   /dev/sdc1
 Marking disk "/dev/sdc1" as an ASM disk: [OK]
 # /etc/init.d/oracleasm   createdisk VOL2   /dev/sdd1
 Marking disk "/dev/sdd2" as an ASM disk: [OK]
 
 在别的节点上以ROOT用户身份执行
 # /etc/init.d/oracleasm scandisks
 Scaning system for ASM disks: [OK]
 # /etc/init.d/oracleasm listdisks
 VOL1
 VOL2
 
 
 
安装Oracle Clusterware :

# $CRS_HOME/bin/crsctl check  crs
CSS appreas healthy
CRS appreas healthy
EVM appreas healthy
在最后一个节点执行root.sh的输出的最后两行:
{
Running vipca(silent) for configuring nodeapps
The given interface(s),"eth0" is not public.Public interfaces should by 
used to configure virtual IPs.
}
含义是root.sh 试图以silent方式运行VIPCA,但是失败。VIPCA这个脚本的功能是在每个节点上
创建VIP,ONS,GSD三个服务。这个脚本这所以会失败,这是因为eth0配置的IP是192.168.123.*,
这是一个私网地址,而VIPCA默认不会在私网地址上配置VIP,所以还需要手动执行这个脚本。
最后可以通过这样的几个命令来确认Clusterware 安装成功:
# cd $CRS_HOME/bin
# ./olsnodes
dbs
dbp
# ./crsctl check crs
CSS appreas healthy
CRS appreas healthy
EVM appreas healthy
# ./crs_stat -t -V
Name          Type R/RA   F/FT    Target    State   Host
-----------------------------------------------------------------
ora.dbp.gsd application 0/5    0/0      ONLINE ONLINE  dbp
ora.dbp.ons   application 0/3    0/0      ONLINE    ONLINE  dbp
ora.dbp.vip application 0/0    0/0      ONLINE    ONLINE  dbp
ora.dbs.gsd   application 0/5    0/0      ONLINE    ONLINE  dbs
ora.dbs.ons   application 0/3    0/0      ONLINE    ONLINE  dbs
ora.dbs.vip   application 0/0    0/0      ONLINE    ONLINE  dbs
安装ORACLE Database

先配置Listener,然后再配置ASM,最后创建数据库,这样可以减少出错的几率。
配置Listener:
1,确认Listen配置成功
配置成功后,两台计算机上的Listener都会作为Application Resource注册到CRS中,这样
CRS就可以监控Listener的运行状态。
$ crs_stat  -t -V
Name          Type R/RA   F/FT    Target    State   Host
-----------------------------------------------------------------
ora....BP.lsnr application 0/5   0/0      ONLINE    ONLINE  dbp
ora.dbp.gsd application 0/5    0/0      ONLINE ONLINE  dbp
ora.dbp.ons   application 0/3    0/0      ONLINE    ONLINE  dbp
ora.dbp.vip application 0/0    0/0      ONLINE    ONLINE  dbp
ora....BS.lsnr application 0/5   0/0      ONLINE    ONLINE  dbs
ora.dbs.gsd   application 0/5    0/0      ONLINE    ONLINE  dbs
ora.dbs.ons   application 0/3    0/0      ONLINE    ONLINE  dbs
ora.dbs.vip   application 0/0    0/0      ONLINE    ONLINE  dbs
2,检查listener.ora文件
 注意:每个节点都只会监听自己的Public IP和VIP.但是在某个节点宕机时,RAC的Failover机制
 会把这个节点的VIP转移到其他节点。
 
配置ASM:
用DBCA创建ASM。
********????为RAC数据库创建的ASM本身也是一个集群数据库。?????
客户端的测试:
1,客户机的hosts文件
/etc/hosts    
c:\windows\system32\drivers\etc\hosts
添加如下的内容:
192.168.123.154 dbp
192.168.123.155 dbs
192.168.123.130 dbp-vip
192.168.123.131 dbs-vip
2,客户端tnsname.ora
wxxrdb = 
(DESCRIPTION = 
(ADDRESS = (PROTOCOL = TCP )(HOST = dbs-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP )(HOST = dbp-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA = 
(SERVER = DEDICATED)
(SERVICE_NAME = wxxrdb)
(FAILOVER_MODE = 
(TYPE = session)
(METHOD = basic)
(RETRIES = 180)
(DELAY = 5)
)
)
)
测试Loadbalance
test.sh
#!/bin/sh
#Usage: test wxxrdb 4000
count = 0
while [$count -lt $2 ] 
do
 count = 'expr $count + 1'
 sqlplus -s username/password@$1 @test.sql
 sleep 1
 done
 
 
 
test.sql
col "Instance_name format a20
select instance_name from v$instance
/
  
阅读(856) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-25 16:21:28

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com