提示:
本文在写作过程中除脚本配置及执行输出外,全程图文,如果你的操作系统,oracle版本与本例中相同,按照步骤操作一定可以配置成功。如果你在配置过程中出错,注意查看图文下方的提示信息,对于某些常见错误或俺在安装过程中遇到的错误,俺都会在提示信息中注明!
但是~~rac安装非常繁琐也很复杂,影响和制约的因素非常多,有时甚至系统版本稍有差异安装过程就会有不同,因此本文中提到的错误或bug不过沧海一栗罢了,如果你走狗屎大运遇到了本文没有提示到的错误信息,黑黑,别灰心,google吧,我相信你一定能够解决问题,收获成功的喜悦,迈向成长的新高峰
一、准备工作
所谓工欲善必先利其器,要在vmware下做linux系统的oracle rac,我们也需要准备好相关的装备。
头号选手:VMware server,可免费下载,并可免费申请注册码,地址:http://www./download/server/ ,这里不建议使用VMware workstation,因为workstation不支持共享存储,虽然网上也有号称使用workstation装成功的案例,但第一不知他们是如何解决存储共享的问题,第二搜索的到更多都是失败的案例。三思这里用的是vmware server1.06
RHEL5 32bit,如果你确实找不着免费的下载,又不想去街边买盘,三思悄悄告诉你,去下载个Oracle Enterprise Linux5也是一样的:http://edelivery.oracle.com/linux。
用issue看三思用的操作系统是:Red Hat Enterprise Linux Server release 5.1 (Tikanga)
uname看系统版本是:Linux 2.6.18-53.e15xen
Oracle 10gR2 clusterware,可免费下载:http://www.oracle.com/technology ... database/index.html
Oracle 10gR2 database,可免费下载:http://www.oracle.com/technology ... database/index.html 二、设置vmware环境 用vmware主要是创建虚拟机,这个过程比较简单。 新建一个虚拟机 点击File->New->Virtual Machine,或者直接输入Ctrl+n
进行创建的欢迎页面 点击下一步即可
选择配置方式 建议选择Custom,自定义虚拟机的配置。
选择操作系统 选择Linux,Red Hat Linux就可以。
给虚拟机选择一个存储的位置 要注意该目录的剩余磁盘空间,由于我们安装操作系统和数据库至少要有8G空间,如果你准备将两个虚拟机都放在该盘下的话,该磁盘剩余空间至少要有20G。
设置虚拟机访问权限 就是其它用户是否能够访问这个虚拟机,无所谓的设置,不影响我们rac环境的配置~~~
虚拟机的启动和关闭选项设置 默认即可。
选择虚拟机使用的cpu数量
选择虚拟机可使用的内存
选择网卡及网卡的类型 这里选择桥接,注意,安装RAC需要至少两块网卡,因此一会儿我们还需要再添加一个网卡进来
选择I/O适配器的类型 推荐LSI Logic
为虚拟机创建磁盘 由于是新创建的虚拟机,因此此处选择创建一个新的虚拟磁盘。
磁盘类型选择SCSI
设置虚拟磁盘的大小 根据实际情况输个值吧,前面提到安装操作系统和数据库所需空间至少为8G,建议留出富裕。
选择虚拟磁盘的存储路径
点击完成后,进入到虚拟机的主界面
单击 Edit virtual machine settings,我们需要添加和删除一些设备 在这个的界面中remove掉无用设备,这里你根据实现情况自行操作吧,然后点击Add~~
进入硬件添加向导
首先添加几个磁盘,用来做共享存储 由于我们准备采用asm+raw来创建rac,将voting disk和ocr放在raw上,数据文件等放在asm上,因此我们至少需要创建4个虚拟的硬盘,其中voting disk需要至少20M的空间,ocr需要至少60M的空间,数据文件等至少需要1-2G的空间,如果你的磁盘剩余空间充足,建议留有足够的富裕。 添加硬盘的操作与前文中的非常相向,需要注意最后两步
注意:此处一定要选中Allocate all disk space now,即首先分配足额的磁盘空间,避免后期需要使用时再分配,可能会造成虚拟机崩溃。 指定的磁盘文件并不一定要与虚拟机在相同路径下,你完全可以存储在其它磁盘中。 需要注意的是,此处要点击Advanced 在Virtual device node中选择一个新的scsi总线(比如虚拟机默认磁盘SCSI 0:x,则新添加的硬盘可以使用1:x) 注意选中Persistent,即同步写入数据到磁盘。然后点击完成即可~~
循环上述添加磁盘的步骤,按你的实际情况添加几个(注,最少要3个,一个做asm盘,一个用来存储votingdisk,一个用来存储OCR)
再添加一个网卡
选择网络类型 注意:此处建议选择Host-only
三思最终的设置配置是这样的:
虚拟机配置完成。 三、安装linux系统 点击Power ON,即菜单上面绿色的三角图标。 敲 Enter 键以图形模式安装。
测试安装盘 这步是要检查安装盘,如果确保安装盘没有问题,可以直接跳过。
进入安装界面
选择合适的语言(建议English)
键盘设置
选择可用磁盘并分区 对比一下列出的磁盘是否是前面配置的那些,然后选中review and modify partitioning layout(即查看并修改分区),点击下一步
对磁盘分区 三思这里只是简单分了划分了sda(建议swap单独分配一个区,空间不要太小,至少是内存1.5倍),其它磁盘均未做分区,留待随后操作。
启动模块位置 默认即可,一般不需要修改
网络配置 你可以在这里配置,也可以在安装完操作系统之后配置,不过如果你准备完全参考三思这篇文章来安装rac,建议你就在这儿配吧,因为三思这篇文档后面不会再有专门配置网卡的部分了。hostname你可以任起一个,但建议不要太长~~~
时区设置,这里选择亚洲上海
设置管理员的密码
安装程序包 这里很关键,如果漏掉了或少选了包,后面能烦死你,如果不在意磁盘占用的话,建议此处全选好了,反正总共也占不了多少空间。注意哟,全选并不是说选择本界面几个大类就行了哟,需要选中下方的customize now,然后再下一步。 Languages中要选中Chinese Support,Development,Servers,Base System中建议全选,注意小项中还有明细项的哟,要点击Optional packages中确认都选中才好。
马上要正式开始系统的安装了 直接点击下一步
这中间会有很多操作,所有安装步骤中,这可能是费时最久的,但也是最不需要人工干预的,因此,让它想干嘛就去干嘛吧,你呢,也该干嘛干嘛去呗
Congratulations,安装完成。点击重启,准备进行更细致的设置
重启之后会进入到这个界面,准备进行系统设置,比如时间啦,防火墙啦
设置防火墙,从省事角度考虑,disable掉
增强的linux安全设置,这里也disable掉
Kdump,一种防止系统意外crash造成的崩溃,看你的需求吧,这里不启用。
设置时间 如果有互联网访问权限的话,建议打开Network Time Protocol,该选项用于自动同步时间。
更新设置 我就没准备更新啊,因此~~
创建新用户 如果不创建第一次登录时将默认使用root,这里也不创建,留待后续操作中再创建。直接continue就好了
设置声卡 No soundcards were detected,那也就不需要设置喽~~
是否还有其它的安装,没有的话,点finish就好了 安装就算完成了,它会提示你重启系统以让设置生效,按人家说的办吧 四、配置linux环境 以下脚本操作较多,不再频繁截图,仅贴出操作脚本供参考。 另,所有操作如非特别注明,均为root用户(注意看操作符前缀),建议通过ssh远程操作。
修改虚拟机配置 在配置linux系统之前,首先到你的虚拟机工作目录,打开.vmx文件,添加下列内容: disk.locking = "false" diskLib.dataCacheMaxSize = "0" diskLib.dataCacheMaxReadAheadSize = "0" diskLib.DataCacheMinReadAheadSize = "0" diskLib.dataCachePageSize = "4096" diskLib.maxUnsyncedWrites = "0"
scsi1:1.deviceType = "disk" scsi1:2.deviceType = "disk" scsi1:3.deviceType = "disk" scsi1:4.deviceType = "disk"
提示:如果你创建有磁盘有多个,注意要按照你的实际情况修改。
编辑/etc/hosts文件 [root@node1 ~]# vi /etc/hosts 增加如下内容: 192.168.100.101 node1 192.168.100.102 node2
192.168.100.201 node1-vip 192.168.100.202 node2-vip
10.10.17.221 node1-priv 10.10.17.222 node2-priv
提示:192.168.100.201,202为指定的虚IP,供CRS使用,不需要我们配置。
创建组oinstall,dba,用户oracle [root@node1 ~]# groupadd oinstall [root@node1 ~]# groupadd dba [root@node1 ~]# useradd -d /home/oracle -g oinstall -G dba oracle
设置oracle用户密码 [root@node1 ~]# passwd oracle Changing password for user oracle. New UNIX password: BAD PASSWORD: it is based on a dictionary word Retype new UNIX password: passwd: all authentication tokens updated successfully.
提示: [root@node1 ~]# id oracle uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba) 如果是非虚机安装,要注意记录下用户和组ID,在其它机器上创建同名组时,务必确认组ID和用户ID与此相同。
修改oracle用户的初始化参数文件 [root@node1 ~]# vi /home/oracle/.bash_profile 增加如下内容: export TMP=/tmp export TMPDIR=$TMP export ORACLE_BASE=/opt/ora10g export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 export ORACLE_SID=RACDB1 export ORACLE_TERM=xterm export PATH=/usr/sbin:$PATH export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin/ export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib ulimit -u 16384 -n 65536 umask 022 此处注意oracle_sid的名称要与后续创建数据库时指定的sid相同(注意大小写),不然你每次想通过本机登录的方式进入oracle都得重新export ORACLE_SID了。
创建/opt/ora10g目录,要注意该目录所有者或oracle用户的权限 [root@node1 ~]# mkdir /opt/ora10g 由于该目录主要由oracle用户操作,因此我们将其所有者改为oracle [root@node1 ~]# chown oracle.oinstall /opt/ora10g
配置内核参数 [root@node1 ~]# vi /etc/sysctl.conf 增加或修改下列内容 kernel.shmall = 2097152 kernel.shmmax = 536870912 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 = 1048576 net.core.rmem_max = 1048576 net.core.wmem_default = 262144 net.core.wmem_max = 262144
提示,上述参数中通常只有一项需要我们更改,即kernel.shmmax,该参数推荐设定为物理内存的一半,由于安装crs的时候要求内存至少512M,因此我们此处也按照512*1024*1024来设置。
然后: [root@node1 Server]# sysctl -p 让设置生效
提高 Oracle 用户的 shell 限制 设置oracle使用的文件数权限 [root@node1 ~]# vi /etc/security/limits.conf 增加下列内容 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
修改安全限制 [root@node1 ~]# vi /etc/pam.d/login 增加: session required /lib/security/pam_limits.so
配置Hangcheck计时器 [root@node1 ~]# vi /etc/rc.local 增加: modprobe hangcheck-timer hangcheck-tick=30 hangcheck_margin=180
磁盘分区 例如: [root@node1 ~]# fdisk /dev/sdb
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-102, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-102, default 102): Using default value 102
Command (m for help): w The partition table has been altered!
Calling ioctl() to re-read partition table. Syncing disks.
需要你输入的依次是"n/p/1/回车/回车/w"。 就本例而言,需要我们进行分区的有4个:sdb,sdc,sde,sdf
全分完后fdisk -l看一下,应该是这种形式: [root@node1 ~]# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 166 1228972+ 82 Linux swap / Solaris /dev/sda3 167 1044 7052535 83 Linux
Disk /dev/sdb: 107 MB, 107374080 bytes 64 heads, 32 sectors/track, 102 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System /dev/sdb1 1 102 104432 83 Linux
Disk /dev/sdc: 322 MB, 322122240 bytes 64 heads, 32 sectors/track, 307 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System /dev/sdc1 1 307 314352 83 Linux
Disk /dev/sdd: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/sdd1 1 261 2096451 83 Linux
Disk /dev/sde: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/sde1 1 261 2096451 83 Linux
安装 oracleasmlib 程序包 所需的程序包可以到这里下载: http://www.oracle.com/technology ... x/asmlib/rhel5.html http://oss.oracle.com/projects/c ... s/Enterprise_Linux/ 注意一定要与操作系统版本相符。
包还真不少,本着宁可无用,不能无有的原则,能下到的统统装上 俺装的包有下列: [root@node1 rhel5]# ls -l total 225376 -rwxr--r-- 1 oracle oinstall 410476 May 29 15:16 compat-binutils215-2.15.92.0.2-24.i386.rpm -rwxr--r-- 1 oracle oinstall 4256 May 29 15:16 compat-libcwait-2.1-1.i386.rpm -rwxr--r-- 1 oracle oinstall 88787 May 29 15:17 compat-libstdc++-egcs-1.1.2-1.i386.rpm -rwxr--r-- 1 oracle oinstall 3840 May 29 15:17 compat-oracle-el5-1.0-5.i386.rpm -rwxr--r-- 1 oracle oinstall 1079629 May 29 15:17 openmotif21-2.1.30-11.EL5.i386.rpm -rwxr--r-- 1 oracle oinstall 122314 May 29 15:17 openmotif21-debuginfo-2.1.30-11.EL5.i386.rpm -rwxr--r-- 1 oracle oinstall 125313 May 30 15:02 oracleasm-2.6.18-53.el5-2.0.4-1.el5.i686.rpm -rwxr--r-- 1 oracle oinstall 126085 May 30 15:02 oracleasm-2.6.18-53.el5debug-2.0.4-1.el5.i686.rpm -rwxr--r-- 1 oracle oinstall 125927 May 30 15:02 oracleasm-2.6.18-53.el5PAE-2.0.4-1.el5.i686.rpm -rwxr--r-- 1 oracle oinstall 123346 May 30 15:02 oracleasm-2.6.18-53.el5xen-2.0.4-1.el5.i686.rpm -rwxr--r-- 1 oracle oinstall 13658 May 30 15:13 oracleasmlib-2.0.3-1.el5.i386.rpm -rwxr--r-- 1 oracle oinstall 22936 May 30 15:13 oracleasm-support-2.0.4-1.el5.i386.rpm -rwxr--r-- 1 oracle oinstall 10662 May 29 15:17 xorg-x11-libs-compat-6.8.2-1.EL.33.0.1.i386.rpm
安装示例: [root@node1 rhel5]# rpm -ivh compat-binutils215-2.15.92.0.2-24.i386.rpm Preparing... ########################################### [100%] 1:compat-binutils215 ########################################### [100%]
提示,如果在安装过程中提示你缺少其它包,你可以先到操作系统安装光盘中寻找并安装所需系统包,然后再来安装下载到的包。
配置裸设备 由于RHEL5中取消了rawdevices,如果不想将映射命令放到rc.local中的话,我们就需要将其配置到/etc/udev/rules.d/文件夹中 修改文件 [root@node1 ~]# vi /etc/udev/rules.d/60-raw.rules
增加如下内容: ACTION=="add", KERNEL=="/dev/sdb1",RUN+="/bin/raw /dev/raw/raw1 %N" ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="17",RUN+="/bin/raw /dev/raw/raw1 %M %m" ACTION=="add", KERNEL=="/dev/sdc1",RUN+="/bin/raw /dev/raw/raw2 %N" ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="33",RUN+="/bin/raw /dev/raw/raw2 %M %m" ACTION=="add", KERNEL=="/dev/sdd1",RUN+="/bin/raw /dev/raw/raw3 %N" ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="49",RUN+="/bin/raw /dev/raw/raw3 %M %m" ACTION=="add", KERNEL=="/dev/sde1",RUN+="/bin/raw /dev/raw/raw4 %N" ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="65",RUN+="/bin/raw /dev/raw/raw4 %M %m" KERNEL=="raw[1-4]", OWNER="oracle", GROUP="oinstall", MODE="640"
提示:要根据你的实际情况来配置 另外关于此处的配置有一点非常奇怪,我看到red hat官方文档中关于raw.rule的示例中说KERNEL==..或ENV{MAJOR}...只需要任意配置一个就可以,但我在具体配置过程中发现百试不爽,我尝试了各种组合发现都不生效,必须二者同时配置才可以,难道是俺用的linux内核版本太低了?百思不得其解,如有达人已深究其内幕,望助我解惑~~~~
重启下服务: [root@node1 ~]# start_udev Starting udev: [ OK ]
验证一下 [root@node1 ~]# ls /dev/raw/ -l total 0 crw-r----- 1 oracle oinstall 162, 1 Jun 6 17:57 raw1 crw-r----- 1 oracle oinstall 162, 2 Jun 6 17:57 raw2 crw-r----- 1 oracle oinstall 162, 3 Jun 6 17:57 raw3 crw-r----- 1 oracle oinstall 162, 4 Jun 6 17:57 raw4
OK,前期设置完成。En,有点儿麻烦,但运气还算不错,在这些操作上你基本不会遇到什么问题。 五、配置第2台节点-NODE2
关闭节点1,通过vmware复制一个新节点出来,操作非常简单,如果希望界面方式的话,就点击Clone this virtual machine,按照提示下一步即可。如果希望更快捷,直接将rac1目录复制一份到rac2,然后修改.vmx文件中的配置,将路径rac1相关的改成rac2,将RHEL5_NODE1改成RHEL5_NODE2,然后用vmware打开rac2目录中的vmx文件即可,这里三思采用的就是这种方式。
将你启动RHEL5_NODE2的时候,系统会弹出这个提示,一个要选择Create。该选项是说vmware发现配置发生了变化,如果该虚机是复制出来的,需要创建一个唯一的身份标识,让你来选择是否创建,当然要选择Create,如图:
提示:注意下列操作符中提示是node1,这是因为该虚机是由node1复制出来的,千万不要以为下列操作是要在node1上设置哟。
修改hostname 将node1改成node2 [root@node1 ~]# hostname node2 [root@node1 ~]# vi /etc/sysconfig/network 这样重启之后机器名称就会变成node2了。
修改ip地址 先ifconfig看一下: [root@node1 ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:290:48:9D inet addr:172.25.0.59 Bcast:172.25.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fed0:489d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2032 errors:0 dropped:0 overruns:0 frame:0 TX packets:33 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:238791 (233.1 KiB) TX bytes:8111 (7.9 KiB)
eth1 Link encap:Ethernet HWaddr 00:0C:290:48:A7 inet addr:172.25.0.60 Bcast:172.25.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fed0:48a7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1847 errors:0 dropped:0 overruns:0 frame:0 TX packets:46 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:201063 (196.3 KiB) TX bytes:8958 (8.7 KiB) Interrupt:19 Base address:0x1800 ................... ................... 这一步主要是为了记录下两个网卡的mac地址。
[root@node1 ~]# cd /etc/sysconfig/network-scripts/ [root@node1 network-scripts]# mv ifcfg-eth0.bak ifcfg-eth0 -f [root@node1 network-scripts]# mv ifcfg-eth1.bak ifcfg-eth1 -f [root@node1 network-scripts]# vi ifcfg-eth0 修改IP地址,192.168.100.101为192.168.100.102 注意修改HWADDR的值为前面ifconfig中查看到的eth0的HWaddr:00:0C:290:48:9D
[root@node1 network-scripts]# vi ifcfg-eth1 同理做修改,HWADDR的值要修改为eth1中的HWaddr:00:0C:290:48:A7
最后重启一下网络服务 [root@node1 network-scripts]# service network restart Shutting down interface eth0: [ OK ] Shutting down interface eth1: [ OK ] Shutting down loopback interface: [ OK ] Disabling IPv4 packet forwarding: net.ipv4.ip_forward = 0 [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: [ OK ] Bringing up interface eth1: [ OK ]
提示:此时两机使用4个IP或4个别名互ping应该都是通的了,如果不通,建议按照上述的操作步骤,检查一下网络的配置。
修改oracle用户下的环境变量等 [root@node2 network-scripts]# vi /home/oracle/.bash_profile 将ORACLE_SID=RACDB1改为ORACLE_SID=RACDB2
统统设置完成后,建议重启一下第2个节点。 六、配置Clusterware安装环境
设置ssh 在clusterware (CRS) 和 Rac Database安装过程中,Oracle Universal Installer (OUI) 必须能够以 oracle 的身份自动将软件复制到所有 RAC 节点。这里我们通过配置ssh 让oracle用户拥有不输入密码即可访问各节点的能力。 首先两个节点间互ping,要确保都是通的 [root@node1 ~]# ping 192.168.100.102 [root@node1 ~]# ping 10.10.17.222
要建立用户等效性,需要在两个节点上以 oracle 用户身份生成用户的公钥和私钥,首先在node1执行: [root@node1 opt]# su - oracle [oracle@node1 ~]$ mkdir ~/.ssh [oracle@node1 ~]$ chmod 700 ~/.ssh [oracle@node1 ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/oracle/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/oracle/.ssh/id_rsa. Your public key has been saved in /home/oracle/.ssh/id_rsa.pub. The key fingerprint is: d2:69:eb:ac:86:62:27:50:99:ff:e8:1e:a2:e6:5d:7f oracle@node1 [oracle@node1 ~]$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/oracle/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/oracle/.ssh/id_dsa. Your public key has been saved in /home/oracle/.ssh/id_dsa.pub. The key fingerprint is: 0a:9a:20:46:a2:28:ec:72:23:82:f2:9d:f8:62:9b:d1 oracle@node1
然后换node2执行 [root@node2 ~]# ping 192.168.100.102 [root@node2 ~]# ping 10.10.17.222 [root@node2 opt]# su - oracle [oracle@node2 ~]$ mkdir ~/.ssh [oracle@node2 ~]$ chmod 700 ~/.ssh [oracle@node2 ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/oracle/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/oracle/.ssh/id_rsa. Your public key has been saved in /home/oracle/.ssh/id_rsa.pub. The key fingerprint is: dd:be:7a:37:e4:b5:f0:b2:24:95:50:61:ea:a1:61:07 oracle@node2 [oracle@node2 ~]$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/oracle/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/oracle/.ssh/id_dsa. Your public key has been saved in /home/oracle/.ssh/id_dsa.pub. The key fingerprint is: bc:b5:cb:43:c7:19:53:d6:f7:16:69:85:12:7f:aa:be oracle@node2
切换回node1,接着执行: [oracle@node1 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys [oracle@node1 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
提示:下列命令会提示你输入node2的oracle密码,按照提示输入即可,如果失败可重新尝试执行命令。 [oracle@node1 ~]$ ssh node2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys The authenticity of host 'node2 (192.168.100.102)' can't be established. RSA key fingerprint is 92:d1:ce:5b:c8:a1:52:d5:ac:00:5f:48:5d:12:06:e4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'node2,192.168.100.102' (RSA) to the list of known hosts. oracle@node2's password: [oracle@node1 ~]$ ssh node2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys oracle@node2's password: [oracle@node1 ~]$ scp ~/.ssh/authorized_keys node2:~/.ssh/authorized_keys oracle@node2's password: authorized_keys 100% 1992 2.0KB/s 00:00
两机相互执行,看看是否还需要输入密码 [oracle@node1 ~]$ ssh node1 date [oracle@node1 ~]$ ssh node2 date [oracle@node1 ~]$ ssh node1-priv date [oracle@node1 ~]$ ssh node2-priv date
切换至node2执行 [oracle@node2 ~]$ ssh node1 date [oracle@node2 ~]$ ssh node2 date [oracle@node2 ~]$ ssh node1-priv date [oracle@node2 ~]$ ssh node2-priv date
提示: 注意命令的返回信息,由于rac对节点间时间较敏感,因此如果此处显示节点单时间不一至,建议同步(一般相隔超过20秒就需要同步时间了)。
配置asm 注意:必须以root身份进行
首先在node1执行: [root@node1 ~]# /etc/init.d/oracleasm configure Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting <ENTER> without typing an answer will keep that current value. Ctrl-C will abort.
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 ] Loading module "oracleasm": [ OK ] Mounting ASMlib driver filesystem: [ OK ] Scanning system for ASM disks: [ OK ]
提示:如果本步执行出错(可能出错机率最高的是在Scanning system for ASM),不妨将转换一下命令行的执行方式,改成: [root@node1 ~]# sh /etc/init.d/oracleasm configure 有可能解决你的问题!
然后切换至node2执行 [root@node2 ~]# /etc/init.d/oracleasm configure Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting <ENTER> without typing an answer will keep that current value. Ctrl-C will abort.
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 ] Loading module "oracleasm": [ OK ] Mounting ASMlib driver filesystem: [ OK ] Scanning system for ASM disks: [ OK ]
再切换回node1执行 [root@node1 ~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdd1 Marking disk "/dev/sdd1" as an ASM disk: [ OK ] [root@node1 ~]# /etc/init.d/oracleasm createdisk VOL2 /dev/sde1 Marking disk "/dev/sde1" as an ASM disk: [ OK ] [root@node1 linux-patch]# /etc/init.d/oracleasm scandisks Scanning system for ASM disks: [ OK ]
查看一下当前的磁盘组: Scanning system for ASM disks: [ OK ] [root@node1 ~]# /etc/init.d/oracleasm listdisks VOL1 VOL2
Node2上也查看一下当前磁盘组: [root@node2 ~]# /etc/init.d/oracleasm scandisks Scanning system for ASM disks: [ OK ] [root@node2 ~]# /etc/init.d/oracleasm listdisks VOL1 VOL2 七、安装Clusterware 注意,在这项配置中,除非特别说明,所有操作都是基于oracle用户的。
检查安装环境 在安装crs之前,建议先利用CVU(Cluster Verification Utility)检查 CRS 的安装前环境 [oracle@node1 cluvfy]$ /data/rhel5/clusterware/cluvfy/runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose 返回信息太多,这里就不贴俺执行的结果了。 需要注意几点,其返回的信息中有几个错误可忽略~~
.与VIP 查找一组适合的接口有关,错误信息如下: 错误信息如下: ERROR: Could not find a suitable set of interfaces for VIPs.
这是一个bug,Metalink中有详细说明,doc.id:338924.1,如说明中所述,可以忽略该错误,没什么问题。
.有一堆包的验证会出现错误,要么提示找不到,要么是版本不对。例如: Check: Package existence for "compat-gcc-7.3-2.96.128" Node Name Status Comment ------------------------------ ------------------------------ ---------------- node2 missing failed node1 missing failed Result: Package existence check failed for "compat-gcc-7.3-2.96.128".
Check: Package existence for "compat-gcc-c++-7.3-2.96.128" Node Name Status Comment ------------------------------ ------------------------------ ---------------- node2 missing failed node1 missing failed Result: Package existence check failed for "compat-gcc-c++-7.3-2.96.128". ........... ........... 这之类的吧
不用管它们,这也是一个BUG,只要确认节点中都已经安装了正确版本的 compat-* 包即可。
.内存检查失败 可以忽略的错误,内存差一点并不会影响到crs的安装,只是慢一些而已。当然如果人家要求512M,你只提供了64M内存,黑黑,这个差别就太大了。
开始安装crs rac的安装并没有太明显的主从关系,一般我们认为,在哪个上面执行了安装,哪个就是主(实际也不完全是这样,主节点安装的时候,也会自动将文件复制到其它节点的) 这里我们选择node1进行安装~~ 注意,下列操作需要在视窗模式下执行哟。 执行安装命令 注意xhost +先,另外由于我们使用了RHEL5,并不被oracle10g所支持,因此在执行安装时需要指定-ignoreSysPrereqs跳过安装时的操作系统检查。
看到欢迎界面,点击下一步 选择安装临时目录
选择crs安装目录
环境检查 提示,并非所有的警告信息都需要我们处理,比如版本不对啊,内存不足啊之类的,可根据实际情况进行忽略,如果环境检查遇到严重错误,可以先进行修改后,再重新执行安装。
指定节点
设置网卡,这里我们指定eth0为public地址。
注意,通常配置rac只需要两块网卡即可,如果系统识别到多个,建议多余的删除,只保留两个,不然后期在创建database时可能会报错,当然你这里不删也没有关系,后面遇到报错时可以再通过命令的方式删除多余的网卡。
指定OCR的存储位置 测试环境嘛,不选择镜像了,直接放到/dev/raw/raw2去 提示:OCR大概需要至少100M空间
voting disk的存储位置 与上同理,voting大概需要至少20M的空间,这里指定存放到/dev/raw/raw1
综合看一下,没啥问题的话点击Install。
开始安装鸟
同时也在将文件复制到其它节点
要求你用root在几个节点上分别执行所列的两个脚本 建议按下列顺序执行 在 node1 上执行:/opt/ora10g/oraInventory/orainstRoot.sh; 在 node2 上执行:/opt/ora10g/oraInventory/orainstRoot.sh; 在 node1 上执行:/opt/ora10g/product/10.2.0/crs_1/root.sh; 在 node2 上执行:/opt/ora10g/product/10.2.0/crs_1/root.sh; 通常在最后一个节点执行root.sh时会遇到错误,就我们的情况而言当然就是node2~~
提示:一般常见的错误有如下三种: .如果你碰到了这个错误: /opt/ora10g/product/10.2.0/crs_1/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
可以按照如下方式解决: =============================== 修改vipca文件 [root@node2 opt]# vi /opt/ora10g/product/10.2.0/crs_1/bin/vipca 找到如下内容: Remove this workaround when the bug 3937317 is fixed arch=`uname -m` if [ "$arch" = "i686" -o "$arch" = "ia64" ] then LD_ASSUME_KERNEL=2.4.19 export LD_ASSUME_KERNEL fi #End workaround 在fi后新添加一行: unset LD_ASSUME_KERNEL
以及srvctl文件 [root@node2 opt]# vi /opt/ora10g/product/10.2.0/crs_1/bin/srvctl 找到如下内容: LD_ASSUME_KERNEL=2.4.19 export LD_ASSUME_KERNEL 同样在其后新增加一行: unset LD_ASSUME_KERNEL
保存退出,然后在node2重新执行root.sh 当然,既然我们已经知道了有这个问题,建议最好在node2执行root.sh之前,首先修改vipca。
其实同时需要你改的还有$ORACLE_HOME/bin/srvctl文件,不然等装完数据库之后,srvctl命令也是会报这个错误地。要知道srvctl这么常用,如果它执行老报错,那可是相当致命啊。不过呢你现在才安装到crs,离create db还远着呢,大可以等到创建完数据库,待到需要管理时再修改该文件。
.如果你碰到了这个错误: The given interface(s), "eth0" is not public. Public interfaces should be used to configure virtual IPs.
解决方式如下: ============================== 图形界面上运行$CRS_HOME/bin/vipca,手工重新配置rac1-vip和rac2-vip。 [root@node2 opt]# xhost + [root@node2 opt]# /opt/ora10g/product/10.2.0/crs_1/bin/vipca 按照提示点击下一步
点击finish即可 vipca开始自动配置
全部配置完成之后,点击exit退出操作窗口。
.如果你碰到了这个错误: Error 0(Native: listNetInterfaces:[3]) [Error 0(Native: listNetInterfaces:[3])]
解决方式如下: =============================== [root@node2 bin]# ./oifcfg iflist eth1 10.10.17.0 virbr0 192.168.122.0 eth0 192.168.100.0 [root@node2 bin]# ./oifcfg setif -global eth0/192.168.100.0ublic [root@node2 bin]# ./oifcfg setif -global eth1/10.10.10.0:cluster_interconnect [root@node2 bin]# ./oifcfg getif eth0 192.168.100.0 global public eth1 10.10.10.0 global cluster_interconnect
然后在视窗界面重新执行vipca即可,如上b例中所示。
然后返回node1中,执行脚本的窗口,点击ok结束该窗口。
执行最后的环境配置
提示:这一步可能也会出错,没关系,并不影响最终运行,直接点击next即可。
安装完成,点击exit退出安装
如果前面配置环境检查出错 以root身份执行$ORA_CRS_HOME/cfgtoollogs/configToolFailedCommands.sh
然后执行: [root@node1 ~]# /opt/ora10g/product/10.2.0/crs_1/bin/./crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora.node1.gsd application ONLINE ONLINE node1 ora.node1.ons application ONLINE ONLINE node1 ora.node1.vip application ONLINE ONLINE node1 ora.node2.gsd application ONLINE ONLINE node2 ora.node2.ons application ONLINE ONLINE node2 ora.node2.vip application ONLINE ONLINE node2
结果显示正确就可以。 不报错的话当然就不需要执行了,如果没有错误你应该也找不到configToolFailedCommands.sh文件。
八、安装database软件
还是在node1操作 执行安装命令 注意xhost +先,另外由于我们使用了RHEL5,并不被oracle10g所支持,因此在执行安装时需要指定-ignoreSysPrereqs跳过安装时的操作系统检查。
欢迎界面,直接下一步
选择要安装的类型
这里我们选择企业版进行安装
选择安装目录
选择节点安装,并同时全选所有节点
安装环境的检查 注意看一下出错或warning的检查项,根据实际情况或忽略,或修正。
这里只安装软件,数据库留待之后创建
摘要信息 最后确认一下设置,没问题的话就点击install开始安装吧
开始安装 这步可能会耗费点儿时间,因为它还需要同时向其它节点复制文件。
在各个节点分别用root角色执行root.sh脚本
执行完成之后,返回安装界面,点击ok 安装完成,exit退出即可
如果前面的设置都正确,这一步遇到问题的机率非常小,如果遇到了问题,注意看其提示信息,八成都能找到解决方案 九、创建数据库和asm实例
Oracle用户执行dbca
选择数据库类型 这里肯定是选择创建RAC数据库
选择操作--创建数据库
全选所有节点
选择自定义的数据库而不使用模版
指定数据库标识 这里有两项需要你指定,一个是global name,同时还有一个sid的前缀,注意是前缀哟。然后oracle会自动为各节点分配sid,比如这里的sid前缀是racdb,则node1的sid就会是racdb1,node2的将会是racdb2。
选择是否启用EM 不启用
为管理员帐户设置密码
选择存储 这里我们选择ASM
然后就需要你配置asm的一些参数,以创建asm实例 .设置asm实例sys用户的密码,并选择初始化文件的方式
.点击next后开始创建asm实例
.选择asm可用的磁盘组 当前为空,因此我们需要点击Create New来创建一个
.为新建的磁盘组指定冗余度和可用的设备并起个名字 这里不启用冗余,点击ok之后,asm将自动开始创建该磁盘组。
.磁盘组创建完成之后,会返回到这个界面 默认已经选中了刚刚创建的磁盘组,点击next即可。
指定数据库文件位置 咱们也来使一把OMF
选择是否启用闪回区和归档 闪回就不开了,当然我也开不了,因为我就创建了一个磁盘组。归档也不开了,因为本机磁盘太小,实在是没有空间啊。
屏蔽掉了所有可选择的数据库组件 主要也是因为存储原因,你在创建的时候就根据自己的实际情况来吧。
数据库服务,这里先不配置,直接next。
设置sga,pga,block_size等,不一一截图了 这块有两个地方需要注意,一个是要选择正确的数据库字符集(对于中文字符推荐ZHS16GBK)和国家字符集(建议AL16UTF16),另外就是要点击All initiallzation Parameters,屏蔽掉remote_listener初始化参数的值,不然在dbca执行建库第一步的过程中可能会引发下列错误: ORA-00119: invalid specification for system parameter LOCAL_LISTENER ORA-00132: syntax error or unresolved network name ‘LISTENERS_RACDB’
这是由于模板数据库中配置了该初始化参数造成的,解决方式有如下几种: .手工修改模版文件,注视掉该参数 .选择自定义数据库,在执行安装之前修改该初始化参数为空 .创建数据库时选择保存建库脚本而不创建数据库,然后手工修改建库脚本,再通过脚本创建 .提前配置好监听和Net ServiceName 三思这里采用的就是b方式。
设置数据文件,redo logs文件大小
选中Create Database,点击finish开始创建数据库
摘要信息,点击ok即可。
数据库开始创建,这个过程可能不会太快,因为不仅有大量的文件要创建,还需要复制到其它节点。
待到创建完成之后,弹出如下窗口 ok,数据库创建成功,点击exit退出,将会自动启动数据库。
恭喜你,RAC已经成功安装了!整体来看比单机安装要复杂,但这还不算什么,只是环境搭建好还不算完,RAC的管理和部署才是最要命的,比如各节点启动和关闭,备份策略如何调整,添加修改节点如何处理,所谓路漫漫其修远矣,哥们继续努力吧
全文完~~~~ |
|