Deploy Oracle 10.2.0.5 x64 RAC on Linux 5.8 x64 by Oracle Vbox

本文详细介绍了在Oracle 10g环境下搭建RAC集群的过程,包括环境准备、节点配置、时间同步、软件安装及补丁升级等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       新笔记本内存比较大(新款T420),硬盘也比较充裕,还没好好压榨过,最近打算用RAC折腾一下,在本地创建了环境,顺便将过程记录下来

PS: 回想起当年用E41一共2g内存,双核cpu(且不支持虚拟化)用vmware跑rac时的情景,稍有不慎 机器就会卡死,或者虚拟机崩溃,真是折腾至极啊~~~


OS: OLE 5.8x64

Cluster Software :10.2.0.1 x64

Database Software: 10.2.0.1 x64

Patch: 10.2.0.5 x64


一.安装必要rpm包,配置内核参数,环境变量

[root@rac1 ~]# mkdir /media/disk
[root@rac1 ~]# mount /dev/cdrom /media/disk
mount: block device /dev/cdrom is write-protected, mounting read-only

touch /etc/yum.repos.d/public-yum-el5.repo,并加入以下内容

[redhat5]
name = Enterprise Linux 5.8 DVD
baseurl=file:///media/disk/Server/
gpgcheck=0
enabled=1

yum install oracle-validated

二.节点1配置hosts文件,再拷贝至节点2

[root@rac1 ~] vi /etc/hosts  

10.0.0.63 rac1
10.0.0.64 rac2

10.0.0.84 rac1-vip
10.0.0.98 rac2-vip

11.0.0.63 rac1-priv
11.0.0.64 rac2-priv

[root@rac1 ~]# scp /etc/hosts root@rac2:/etc/hosts
hosts                                                                     100%  306     0.3KB/s   00:00    



~     


三.配置SSH  用户等价,可全部在第一个节点操作完成

--root用户 等价
# /usr/bin/ssh-keygen -t rsa
# /usr/bin/ssh-keygen -t dsa

# ssh rac2 /usr/bin/ssh-keygen -t rsa
# ssh rac2 /usr/bin/ssh-keygen -t dsa

# touch ~/.ssh/authorized_keys
# cd ~/.ssh
# ls

ssh rac1 cat /root/.ssh/id_rsa.pub >> authorized_keys
ssh rac1 cat /root/.ssh/id_dsa.pub >> authorized_keys
ssh rac2 cat /root/.ssh/id_rsa.pub >> authorized_keys
ssh rac2 cat /root/.ssh/id_dsa.pub >> authorized_keys

scp authorized_keys rac2:/root/.ssh/


--oracle用户等价
$ /usr/bin/ssh-keygen -t rsa
$ /usr/bin/ssh-keygen -t dsa
$ ssh rac2 /usr/bin/ssh-keygen -t rsa
$ ssh rac2 /usr/bin/ssh-keygen -t dsa

$ touch ~/.ssh/authorized_keys
$ cd ~/.ssh
$ ls

ssh rac1 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
ssh rac1 cat /home/oracle/.ssh/id_dsa.pub >> authorized_keys
ssh rac2 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
ssh rac2 cat /home/oracle/.ssh/id_dsa.pub >> authorized_keys

scp authorized_keys rac2:/home/oracle/.ssh/

注:此时authorized_keys权限应为611.   注意在其他场景例如hadoop场景中,可能要调整为600.

分别测试ssh rac1, ssh rac1-priv, ssh rac2, ssh rac2-priv  ,确保已经不需要密码。



四.在每个节点创建cluster software 与database software根目录,并更改owner与group。

[root@rac1 ~]# mkdir -p /u01/crs_1
[root@rac1 ~]# mkdir -p /u01/db_1
[root@rac1 ~]# chown -R oracle:oinstall /u01


[root@rac2 ~]# mkdir -p /u01/crs_1
[root@rac2 ~]# mkdir -p /u01/db_1
[root@rac2 ~]# chown -R oracle:oinstall /u01


五.预先配置好oracle用户环境变量

[root@rac1 ~]# vi .bash_profile

ORACLE_BASE=/u01
ORACLE_HOME=$ORACLE_BASE/db_1
CRS_HOME=$ORACLE_BASE/crs_1
PATH=$CRS_HOME/bin:$ORACLE_HOME/bin:$PATH
export ORACLE_BASE ORACLE_HOME CRS_HOME PATH

 

然后直接拷贝至其他节点

[oracle@rac1 ~]scp .bash_profile oracle@rac2:/home/oracle/.bash_profile

六.使用udev绑定raw 设备

10g的ocr votingdisk 不能放在asm,只能放在裸设备上。

本实验中将sdb(3g)划分两个分区,分别做OCR DISK与VOTING DISK,后面安装crs时均使用external redundancy.


[root@rac1 ~]# ls -l /dev/sd*
brw-r----- 1 root disk 8,  0 Sep 25 06:57 /dev/sda
brw-r----- 1 root disk 8,  1 Sep 25 06:58 /dev/sda1
brw-r----- 1 root disk 8,  2 Sep 25 06:57 /dev/sda2
brw-r----- 1 root disk 8,  3 Sep 25 06:58 /dev/sda3
brw-r----- 1 root disk 8, 16 Sep 25 06:57 /dev/sdb         #ocr
brw-r----- 1 root disk 8, 32 Sep 25 06:57 /dev/sdc         #sharedisk1
brw-r----- 1 root disk 8, 48 Sep 25 06:57 /dev/sdd         #sharedisk2
brw-r----- 1 root disk 8, 64 Sep 25 06:57 /dev/sde         #sharedisk3
brw-r----- 1 root disk 8, 80 Sep 25 06:57 /dev/sdf          #sharedisk4


[root@rac1 ~]#fdisk /dev/sdb

....
[root@rac1 ~]#partprobe /dev/sdb
....

[root@rac1 ~]# ls -l /dev/sd*          可以显示主设备号与从设备号
brw-r----- 1 root disk 8,  0 Sep 25 06:57 /dev/sda
brw-r----- 1 root disk 8,  1 Sep 25 06:58 /dev/sda1
brw-r----- 1 root disk 8,  2 Sep 25 06:57 /dev/sda2
brw-r----- 1 root disk 8,  3 Sep 25 06:58 /dev/sda3
brw-r----- 1 root disk 8, 16 Sep 25 09:56 /dev/sdb
brw-r----- 1 root disk 8, 17 Sep 25 09:56 /dev/sdb1
brw-r----- 1 root disk 8, 18 Sep 25 09:56 /dev/sdb2
brw-r----- 1 root disk 8, 32 Sep 25 06:57 /dev/sdc
brw-r----- 1 root disk 8, 48 Sep 25 06:57 /dev/sdd
brw-r----- 1 root disk 8, 64 Sep 25 06:57 /dev/sde
brw-r----- 1 root disk 8, 80 Sep 25 06:57 /dev/sdf


vi /etc/udev/rules.d/vi 60-raw.rules

参照文件内的示例,增加6条udev绑定记录,同时增加一条指定raw设备owner与group的记录:


ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdc", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sdd", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="sde", RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add", KERNEL=="sdf", RUN+="/bin/raw /dev/raw/raw6 %N"

ACTION=="add"  KERNEL=="raw*", OWNER=="oracle" GROUP=="oinstall" MODE=="600"


在节点1启动udev服务:

[root@rac2 ~]# start_udev
Starting udev:                                             [  OK  ]

将rule文件拷贝至其他节点,可直接启动udev服务

[root@rac1 ~]# scp /etc/udev/rules.d/60-raw.rules root@rac2:/etc/udev/rules.d/

60-raw.rules                                                              100%  776     0.8KB/s   00:00


[root@rac2 ~]# start_udev
Starting udev:                                             [  OK  ]


[root@rac1 ~]# ls -l /dev/raw/raw*
crw-r----- 1 root   oinstall 162, 1 Sep 28 08:09 /dev/raw/raw1
crw-r--r-- 1 oracle oinstall 162, 2 Sep 28 09:44 /dev/raw/raw2
crw------- 1 oracle oinstall 162, 3 Sep 28 09:44 /dev/raw/raw3
crw------- 1 oracle oinstall 162, 4 Sep 28 09:44 /dev/raw/raw4
crw------- 1 oracle oinstall 162, 5 Sep 28 09:44 /dev/raw/raw5
crw------- 1 oracle oinstall 162, 6 Sep 28 09:44 /dev/raw/raw6

可以看见有所有raw设备,raw1用来做ocr,raw2做voting disk(通常用奇数个,也可以用偶数个,取决于脑裂规则。生产环境建议有3个或者5个votindisk)



另一种udev绑定裸设备的方式,10g rac部署中,可以不用此方式:

[root@rac1 raw]# ls -l /dev/sd*
brw-r----- 1 root disk 8,  0 Sep 25 06:57 /dev/sda
brw-r----- 1 root disk 8,  1 Sep 25 06:58 /dev/sda1
brw-r----- 1 root disk 8,  2 Sep 25 06:57 /dev/sda2
brw-r----- 1 root disk 8,  3 Sep 25 06:58 /dev/sda3
brw-r----- 1 root disk 8, 16 Sep 25 09:56 /dev/sdb
brw-r----- 1 root disk 8, 17 Sep 25 09:56 /dev/sdb1
brw-r----- 1 root disk 8, 18 Sep 25 09:56 /dev/sdb2
brw-r----- 1 root disk 8, 32 Sep 25 06:57 /dev/sdc
brw-r----- 1 root disk 8, 48 Sep 25 06:57 /dev/sdd
brw-r----- 1 root disk 8, 64 Sep 25 06:57 /dev/sde
brw-r----- 1 root disk 8, 80 Sep 25 06:57 /dev/sdf

使用脚本完成(仅限linux5,10g),每个设备的scsi_id是唯一的,将其绑定为固定名字的设备:
for i in c d e f;
do
echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id -g -u -s %p\", RESULT==\"`scsi_id -g -u -s /block/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"oracle\", GROUP=\"oinstall\", MODE=\"0660\""
done

输出:
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="SATA_VBOX_HARDDISK_VB23c84fd5-c4321613_", NAME="asm-diskc", OWNER="oracle", GROUP="oinstall", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="SATA_VBOX_HARDDISK_VBcb7f3dcc-44253b14_", NAME="asm-diskd", OWNER="oracle", GROUP="oinstall", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="SATA_VBOX_HARDDISK_VB7ec1ee7a-46773dc5_", NAME="asm-diske", OWNER="oracle", GROUP="oinstall", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="SATA_VBOX_HARDDISK_VB7af95ed6-546ee8c0_", NAME="asm-diskf", OWNER="oracle", GROUP="oinstall", MODE="0660"

cd /etc/udev/rules.d/
touch 99-oracle-asmdevices.rules
将以上输出加入进去,就能创建绑定4个裸设备的盘符,名字分别为asm-diskc,asm-diskd,asm-diske,asm-diskf

[root@rac1 rules.d]# start_udev
Starting udev:                                             [  OK  ]

[root@rac1 rules.d]# ls -l /dev/asm*                 就能看见4个asm开头的磁盘
brw-rw---- 1 oracle oinstall 8, 32 Sep 25 10:30 /dev/asm-diskc
brw-rw---- 1 oracle oinstall 8, 48 Sep 25 10:30 /dev/asm-diskd
brw-rw---- 1 oracle oinstall 8, 64 Sep 25 10:30 /dev/asm-diske
brw-rw---- 1 oracle oinstall 8, 80 Sep 25 10:30 /dev/asm-diskf


至此,4个磁盘,2个裸设备在rac1配置完毕,然后将两个规则文件scp到rac2,在rac2上start_udev.

[root@rac1 rules.d]# scp 60-raw.rules root@rac2:/etc/udev/rules.d/60-raw.rules
[root@rac1 rules.d]# scp 99-oracle-asmdevices.rules root@rac2:/etc/udev/rules.d/99-oracle-asmdevices.rules 

[root@rac2 ~]# start_udev
Starting udev:                                             [  OK  ]

[root@rac2 ~]# ls -l /dev/raw
total 0
crw-rw---- 1 oracle oinstall 162, 1 Sep 25 10:36 raw1
crw-rw---- 1 oracle oinstall 162, 2 Sep 25 10:36 raw2
[root@rac2 ~]# ls -l /dev/asm-disk*
brw-rw---- 1 oracle oinstall 8, 32 Sep 25 10:32 /dev/asm-diskc
brw-rw---- 1 oracle oinstall 8, 48 Sep 25 10:32 /dev/asm-diskd
brw-rw---- 1 oracle oinstall 8, 64 Sep 25 10:32 /dev/asm-diske
brw-rw---- 1 oracle oinstall 8, 80 Sep 25 10:32 /dev/asm-diskf



七 .配置节点间时间同步

先比较两个节点的时间,如果节点之间时间不同步,可以利用配置好的root用户等价,将两台机器设置为相同时间, 这样起码可以保证crs安装成功

[oracle@rac1 ~]$ date;ssh rac2 date
[root@rac1 ~]# date -s 13:21:11;ssh rac2 date -s 13:21:11


当然长远做法是配置ntp:
[root@rac1 ~]# vi /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 11
driftfile /var/lib/ntp/drift
broadcastdelay 0.008

[root@rac1 ~]# /etc/init.d/ntpd start
Starting ntpd:                                             [  OK  ]

[root@rac1 ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*LOCAL(0)        .LOCL.          11 l   19   64  377    0.000    0.000   0.031


[root@rac2 ~]# vi /etc/ntp.conf
server 10.0.0.31 prefer
driftfile /var/lib/ntp/drift
broadcastdelay 0.008

[root@rac2 ~]# ntpdate 10.0.0.31        #注意这里可能需要等待几分钟,再执行才会成功
 4 Jan 13:33:31 ntpdate[21367]: adjust time server 10.0.0.31 offset -0.005956 sec
 
在Node2 每分钟自动同步时间
[root@rac2 ~]# crontab -e
*/1 * * * * /usr/sbin/ntpdate 10.0.0.31




八.安装10.2.0.1 crs软件

注意不要装到ORACLE_HOME里面去了!且再三确认每个node均创建好了目录,owner与group正确!否则安装途中报错浪费时间。

先检测是否有crs运行,由于新环境,肯定不会有crs相关进程。
[root@rac1 ~]# /media/cdrom/clusterware/rootpre/rootpre.sh
No OraCM running


[oracle@rac1 ~]$ /media/cdrom/clusterware/runInstaller -ignoreSysprereqs

必须安装的(官方文档上没有注明)
libXau-devel-1.0.1-3.1.i386.rpm
libXp-1.0.0-8.1.el5.i386.rpm
libXp-devel-1.0.0-8.1.el5.i386.rpm

两个sh脚本,注意所有脚本在rac1上执行完后,再去rac2执行。
1. 创建目录
2. 格式化voting disk,并启动css服务


在安装10.2.0.1时,特别注意的几个问题:

a. 在第二个节点,执行root.sh的最后阶段,遇到以下错误,先不要点ok关闭“脚本运行提示窗口”,
"Running vipca(silent) for configuring nodeapps
/u01/crs/oracle/product/10.2.0/crs/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory"

解决方法是是: 先在每个节点上,修改$CRS_HOME/bin目录下的srvctl和vipca文件,在srvctl文件的export LD_ASSUME_KERNEL行之后 与 vipca文件ARGUMENTS=""行之前增加 unset LD_ASSUME_KERNEL 。 然后再点击ok关闭“脚本运行提示窗口”。

b. 紧接着下一个验证界面,第三项验证会失败,可以直接ok忽略。如果第一项验证失败。例如“/racgons add_config rac1:6200  rac2:6200”,目前不知道如何修正,只能重新安装CRS。重装过程见第13章

c. 最后再手动执行一次vipca,并确保填入正确的vip别名,再三检查自动填充的ip地址是否正确。因为UI自动填充的值是默认将数值加1,很有可能不正确!

在OCM考试场景中可能会出现以上错误,只能手动解决,并且不能通过打10.2.0.5补丁解决。


九.打10.2.0.5 crs patch

Checking for file-max=101365; found file-max=65536.    Failed <<<<
Checking for ip_local_port_range=9000 - 65500; found ip_local_port_range=1024 - 65000.    Failed
Checking for rmem_default=1048576; found rmem_default=262144.    Failed <<<<

Checking for rmem_max=1048576; found rmem_max=262144.    Failed <<<<

这些内核参数虽然在官方文档中没有提到,但是可以按照它的建议进行修正。没有warning ,妥妥的。


并且,最后是有个脚本必须要跑的!
To complete the installation of this patchset, you must perform the following tasks on each node:
    1.    Log in as the root user.
    2.    As the root user, perform the following tasks:

        a.    Shutdown the CRS daemons by issuing the following command:
                /u01/crs_1/bin/crsctl stop crs
        b.    Run the shell script located at:
                /u01/crs_1/install/root102.sh
            This script will automatically start the CRS daemons on the
            patched node upon completion.

    3.    After completing this procedure, proceed to the next node and repeat.

    
    
查询crs软件版本与生效的版本。注意只有在两个节点跑完上面的脚本后,生效版本才会变为10.2.0.5

$crsctl check crs

$crsctl query crs softwareversion

$crsctl query crs activeversion

root手动执行/u01/app/oracle/product/10.2.0/crs_1/bin/vipca


十.安装数据库软件10.2.0.1 并打上10.2.0.5 patch

database software必须安装在/u01/db_1



十一.创建监听

netca 创建监听



十二.创建数据库

只能用custom模式创建


十三. 重装crs

掌握手动重装crs的方法,还是很有必要,逼近真实环境不会提供虚拟机闪回的功能。

a) 以root执行 /u01/crs_1/install//u01/crs_1/install/rootdeinstall.sh

b) 每个节点使用root用户删除,并重建crs与db跟目录

   mkdir -p /u01/crs_1
   mkdir -p /u01/db_1
   chown -R oracle:oinstall /u01

c) 删除oraInventory 与 /etc/oracle/

d) 使用root用户清空raw设备,主要是ocr disk与voting disk

   dd if=/dev/zero of=/dev/raw/raw1 bs=1M count=256

   dd if=/dev/zero of=/dev/raw/raw1 bs=1M count=256

e) 建议重启机器

f)  再次安装crs .....




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值