ORACLE 10.2.0.1 RAC FOR RedHat Linux AS4 update4
安装操作手册
修改历史
计划
本次数据库采用10G RAC集群,由于10G提供了Oracle 集群文件系统(OCFS)、自动存储管理器(ASM)、原始设备这三种共享磁盘方式用于RAC的安装,因此我们准备计划先采用ASM安装RAC并进行建库。下面的计划主要是针对ASM方式的部署RAC
一、硬件环境描述
1、节点1与节点2硬件
2、集群拓扑
二、前期准备
1、准备ORACLE的安装配置文件
.bash_profile
/etc/sysctl.conf
2、准备安装数据库+ASM所需要的ASMLIB
oracleasm-2.6.9-42.ELsmp-2.0.3-1.i686
oracleasmlib-2.0.2-1.i386
oracleasm-support-2.0.3-1.i386
三、RAC系统规划
1、节点1、节点2规划、注册文件规划(ocr)、表决磁盘规划(VOTING DISK)、
2、操作系统安装规划
四、根据规划安装操作系统
1、在节点1安装操作系统
2、在节点2安装操作系统
3、配置时钟同步
五、ORACLE RAC安装环境检查与准备
1、检查安装ORACLE所需要的操作系统RPM包
2、创建ORACLE用户与DBA组
3、修改系统内核参数./etc/sysctl.conf
4、设置ORACLE用户环境变量(修改ORACLE的.bash_profile)
5、配置/etc/hosts文件
6、配置hangcheck_timer内核
7、配置SSH
8、根据规划共享存储系统
9、调整配置错误
六、ASMlib安装与检查
1、安装ASMlib
2、配置ASM磁盘
七、安装Clusterware与ORACLE数据库系统
1、安装CRS软件
2、安装ORACLE数据库
八、DBCA以ASM创建数据库
九、测试RAC
十、数据库部署
十一、参考文献
具体步骤
若无特别说明,“$”提示符均表示在oracle用户下执行,“#”提示符均表示在root用户下执行
一、硬件环境描述
1、
2、RAC体系
二、前期准备
1、准备ORACLE的安装配置文件
.bash_profile
/etc/sysctl.conf
2、准备安装数据库+ASM所需要的ASMLIB,注意这个ASMLIB的版本要跟你操作系
统的内核相匹配
验证内核版本如下命令:
# uname -r
我们这里内核是2.6.9-42.ELsmp、i386(32位)
因此下载以下ASMLIB:
oracleasm-2.6.9-42.ELsmp-2.0.3-1.i686
oracleasmlib-2.0.2-1.i386
oracleasm-support-2.0.3-1.i386
提示:如果是单处理器系统需要下载EL的ASMLIB 三、RAC系统相关规划
2、节点1、节点2上ORACLE安装规划、注册表规划(OCR)、表决磁盘规划(VOTING
四、根据规划安装操作系统,并配置时钟同步
1、在节点1安装操作系统
2、在节点2安装操作系统
提示:选择全部安装包方式,这样就不用给系统打那烦人的补丁包了,不过所需要的磁盘空间7G左右
3、配置时钟同步
在一台节点服务器上启动时钟服务器服务,在另外一台节点服务器上使用时钟同步命令如:rdate –s IP,然后在这台节点服务器,通过做调度,来定时同步两台服务器时钟。
提示:建议RAC可以连接到互联网上,以便互联网上的时钟服务器,如果没有接
入互联网的条件也可以让其余节点向某一个节点做时钟同步,因为RAC不能容
忍节点间时钟不同步,否则RAC会Down掉!
在这里我们如下操作:
A、在125.233.9.101节点上开启时钟服务,“applications(应用程序)”----->“system
settings(系统设置)”----->“server settings(服务设置)”----->“services(服务)”,如图
B、在出来的”service configuration(服务配置)”中,选中“time、time-udp”,然后点击窗
口工具栏中的“save(保存)”按钮,如图
C、在135.233.9.102节点上创建一个shell文件,包含如下内容rdate –s 135.233.9.101
# vi /rdate
在vi 编辑器中按” i”转换为插入模式,然后输入“rdate –s 135.233.9.101”,再按”esc”
键,退出插入模式,最后”shift”+”:”后再输入”wq!”,存盘退出。
给于这个shell于执行权限
# chmod 755 rdate
D、在135.233.9.102节点上,把该shell加入到调度中,让系统每6小时向
135.233.9.101节点同步时钟,这里可以使用命令”crontab”,也可以使用图形界面在
“applications(应用程序)”----->“system tools(系统设置)”----->“task scheduler(任
务计划)”。命令如下
# crontab –e
同样在编辑器里输入如下(我这里是每两个小时同步一次)
0 1,4,8,13,17,20 * * * /rdate
五、ORACLE RAC安装环境检查与准备
1、在每个节点上创建ORACLE用户与DBA组
2、groupadd –g 1001 dba
3、groupadd –g 1002 oinstall
4、useradd –u 1001 –g oinstall –G dba oracle
5、passwd oracle
使用图形界面创建DBA组和ORACLE用户,并手工指定他们的ID,注意在这里,每个节点的oracle用户ID,DBA组ID必须一致,其他使用默认值,同时创建完毕后在每个节点执行如下命令
#chown –R oracle:dba /home/oracle
6、修改每个节点系统内核参数./etc/sysctl.conf,
#vi /etc/sysctl.con f
然后加入如下内容
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
4、设置每个节点ORACLE用户环境变量(修改ORACLE的.bash_profile),该文件见
附件
$vi .bash_profile
然后加入如下内容
umask=022
# User specific environment and startup programs
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db
export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs
# Each RAC node must have a unique ORACLE_SID.(i.e. dbserver1, dbserver2,...)
export ORACLE_SID=oradb1
export PA TH=.:${PA TH}:$HOME/bin:$ORACLE_HOME/bin
export PA TH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PA TH=$ORACLE_HOME/lib
export LD_LIBRARY_PA TH=${LD_LIBRARY_PA TH}:$ORACLE_HOME/oracm/lib export LD_LIBRARY_PA TH=${LD_LIBRARY_PA TH}:/lib:/usr/lib:/usr/local/lib
export CLASSPA TH=$ORACLE_HOME/JRE
export CLASSPA TH=${CLASSPA TH}:$ORACLE_HOME/jlib
export CLASSPA TH=${CLASSPA TH}:$ORACLE_HOME/rdbms/jlib
export CLASSPA TH=${CLASSPA TH}:$ORACLE_HOME/network/jlib
#export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
注意:在节点dbserver2上,ORACLE_SID应该变为oradb2
5、配置每个节点的/etc/hosts文件
#vi /etc/hosts
然后修改里面的内容为如下
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
135.233.9.101 dbserver1
135.233.9.201 db-vip1
135.233.9.102 dbserver2
135.233.9.202 db-vip2
10.10.10.1 db-priv1
10.10.10.2 db-priv2
注意:确保在每个节点上/etc/hosts文件的回送地址中不包含节点名(dbserver1或dbserver2)。如果机器名出现在回送地址条目中,如下所示:
127.0.0.1 JMRAC1 localhost.localdomain localhost
需要将其如下删除:
127.0.0.1 localhost.localdomain localhost
6、配置每个节点的hangcheck_timer内核:
# find /lib/modules -name "hangcheck-timer.ko"
#vi /etc/modprobe.conf
加入如下内容
modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180 设置为自动启动hangcheck-timer
/sbin/modprobe hangcheck_timer
检查是否成功启动
#grep hangcheck /var/log/messages |tail -2
7、配置SSH
SSH方式
以oracle用户身份执行,在所有节点上做如下配置以生成SSH密钥。
$ mkdir ~/.ssh
$ chmod 755 ~/.ssh
$ /usr/bin/ssh-keygen -t rsa
$ /usr/bin/ssh-keygen -t dsa
$ touch ~/.ssh/authorized_keys
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ cp ~/.ssh/authorized_keys ~/.ssh/jmrac1.authorized_keys
将dbserver1.authorized_keys复制到dbserver2上
在dbserver2上,将dbserver1.authorized_keys导入authorized_keys
$ cat ~/.ssh/dbserver1.authorized_keys >> ~/.ssh/authorized_keys
$ chmod 644 ~/.ssh/authorized_keys
将上述步骤在节点2上再执行一次,注意将dbserver 1和dbserver 2互换!
建立SSH信任关系(请注意,用户等效性仅为当前会话建立。如果您切换到其他会话或注销并重新登录,则必须再次运行ssh-agent 和ssh-add 才能重新建立用户等效性)
在每个节点上执行
$ exec /usr/bin/ssh-agent $SHELL
$ /usr/bin/ssh-add
在每个节点上执行如下命令以测试连通性,并建立SSH信任关系
$ ssh dbserver 1 date
$ ssh dbserver 2 date
Sun may 27 19:07:19 CDT 2007
测试每个方向上所有服务器的连通性是非常重要的。这样会确保当OUI 在CRS 和数据库软件安装期间试图复制文件时不会再出现类似以下的消息。该消息只有在远程节点上第一次执行操作时才会出现,因此通过测试连通性,您不仅确保了远程操作的正常运行,还完成了初始的安全密钥交换。
The authenticity of host 'ds2 (192.168.200.52)' can't be established.
RSA key fingerprint is 8f:a3:19:76:ca:4f:71:85:42:c2:7a:da:eb:53:76:85.
Are you sure you want to continue connecting (yes/no)? yes
用下述指令在node1上测试ssh互信任配置是否正确
在再每个节点上执行如下命令,应该直接显示相应的时间,而不会提示输入密码$ ssh dbserver 1 date
$ ssh dbserver 2 date
8、根据规划分区共享存储系统
先查看系统分区
#fdisk –l /dev/sdb
发现阵列柜,被加载在/dev/sdb上,在分区先要确保阵列柜上没有被分区,如有分区,需要删除以前分区,然后在根据前面磁盘分区规划对磁盘阵列柜分区
#fdisk /dev/sdb
最后分区如下
该分区命令只在一个节点上执行,另外一个节点上执行分区同步命令
#partprobe
提示:关于分区命令fdisk的详细说明,参考其他linux命令手册
由于我们把oracle的OCR(oracle集群注册表)、表决磁盘(voting disk)安装在裸设备上,对于裸设备要使用它,需要编辑/etc/sysconfig/rawdevices文件,将裸
设备添加到系统中,然后再为裸设备设定属组信息以及权限信息。
把下面的内容添加到/etc/sysconfig/rawdevices文件中
#OCR
/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdb2
#voting
/dev/raw/raw5 /dev/sdb5
/dev/raw/raw6 /dev/sdb6
/dev/raw/raw7 /dev/sdb7
注意:在2.6内核的Red Hat Linux上,当系统重启后,裸设备的属组信息
将被还原为系统默认值(root:disk)。为了使得裸设备属组信息可以被保留,你要在/etc/rc.d/rc.local中强制更新裸设备的属组信息,即在文件中加入下述内容:
chown root:dba /dev/raw/raw1
chown root:dba /dev/raw/raw2
chmod 660 /dev/raw/raw1
chmod 660 /dev/raw/raw2
chown oracle:dba /dev/raw/raw5
chown oracle:dba /dev/raw/raw6
chown oracle:dba /dev/raw/raw7
chmod 644 /dev/raw/raw5
chmod 644 /dev/raw/raw6
chmod 644 /dev/raw/raw7
配置完毕后,务必重新启动两台服务器
9、调整配置错误
六、ASMlib安装与检查
1、在每个节点安装ASMlib
# rpm -Uvh \
>oracleasm-2.6.9-42.ELsmp-2.0.3-1.i686
>oracleasmlib-2.0.2-1.i386
>oracleasm-support-2.0.3-1.i386
Preparing... ######################################## [100%]
1:oracleasm-support ######################################## [ 33%]
2:oracleasm-2.4.9-e-smp ##################################### [ 66%]
Linking module oracleasm.o into the module path [ OK ]
3:oracleasmlib ###################################### [100%]
2、在每个节点配置ASMLib
使用ASMLib 之前,必须运行配置脚本来准备驱动程序。以root用户身份在每个集群主机上运行以下命令并回应提示,如下例所示。
# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.
这将配置Oracle ASM 库驱动程序的启动时属性。以下问题将确定在启动时是否
加载驱动程序以及它将拥有的权限。当前值将显示在方括号(“[]”)中。按
Default user to own the driver interface []:oracle
Default group to own the driver interface []:dba
Start Oracle ASM library driver on boot (y/n) [n]:y
Fix permissions of Oracle ASM disks on boot (y/n) [y]:y
Writing Oracle ASM library driver configuration [ OK ]
Creating /dev/oracleasm mount point [ OK ]
Loading module "oracleasm" [ OK ]
Mounting ASMlib driver filesystem [ OK ]
Scanning system for ASM disks [ OK ]
现在,如下所示启用ASMLib 驱动程序。
# /etc/init.d/oracleasm enable
Writing Oracle ASM library driver configuration [ OK ]
Scanning system for ASM disks [ OK ]
3、为ASM 配置磁盘
接下来告诉ASMLib 驱动程序要使用哪些磁盘。请注意,这些磁盘是不包含任何
内容的空磁盘。
通过以root 用户身份运行以下命令来标记由ASMLib 使用的磁盘。仅从一个集
群主机上执行此操作。
/etc/init.d/oracleasm createdisk DISK_NAME device_name
提示:以大写字母输入DISK_NAME。当前版本中有一个错误,即如果使用小
写字母,ASM 实例将无法识别磁盘。
# /etc/init.d/oracleasm createdisk VOL1 /dev/sd8
Marking disk "/dev/sdb8" as an ASM disk [ OK ]
# /etc/init.d/oracleasm createdisk VOL2 /dev/sd9
Marking disk "/dev/sdb9" as an ASM disk [ OK ]
.
以下示例演示了如何列出标记为由ASMLib 使用的所有磁盘。
# /etc/init.d/oracleasm listdisks
VOL1
VOL2.
.
注意在所有集群其他节点主机上,只需要以root 用户身份运行以下命令,扫描所
配置的ASMLib 磁盘:
#/etc/init.d/oracleasm scandisks
七、安装Clusterware与ORACLE数据库系统
把CRS与数据库软件拷贝到服务器上,再安装,注意,在安装前先建立用户等效性,如下
#xhost +
#su – oracle
$export DISPLAY=:0.0
$ exec /usr/bin/ssh-agent $SHELL
$ /usr/bin/ssh-add
1、安装CRS软件
$./runInstaller
单击“下一步”
修改安装组为“dba”,然后单击“下一步”
修改crs的安装路径与.bash_profile中crs设置的路径一致。然后单击“下一步”
单击“下一步”
提示:在这里如果环境设置的不正确,或者硬件配置达不到要求,检测不会通过,但是对于硬件配置,我们可以选择通过验证
上图中只显示了一台服务器节点,验证该节点信息是否和/etc/hosts中的内容一致同时把节点dbserver2添加到集群配置中,最后如下
然后单击“下一步”
单击“编辑”按钮,将eth0网卡的网段设为“公共”,然后点击“确定”(默认eth0是“公共”)
以上这步要确定好是哪张网卡提供公共对外服务,哪张网卡提供心跳检测私有服务,千万不能弄错,确定好后点击“下一步”
指定OCR的位置(前面已经设置好的)。然后单击“下一步”
提示:这里可以选择正常冗余或外部冗余,效果一样,正常冗余提供了一个OCR 的镜像位置,而外部冗余没有提供OCR镜像,只需要OCR位置就可以,由于前期我们在规划的时候就规划了OCR镜像,因此我们这里选择正常冗余,下面表决磁盘的配置也是一样
指定表决磁盘的位置,单击“下一步”
单击安装
注意当安装到后面出现如下提示时,先不要点击“确定”
此时安装向导让你在所有节点上分别执行上述两个脚本,先在安装CRS的计算机上执行上述两个脚本,注意这两个脚本在X-WINDOS窗口下执行,以便能够启动VIPCA。
此时,安装向导将给出安装总结,点击退出
在其他节点都执行完毕后,此时,你需要回到节点1,在此界面上单击确定
通过上面的检查后,Oracle Clusterware安装结束!
2、安装ORACLE数据库
$./runInataller
单击“下一步”
选择安装企业版数据库,单击“下一步”