查看: 307312|回复: 462

[精华] [三思笔记]-手把手教你用vmware安装oracle10g RAC

[复制链接]
论坛徽章:
281
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-01-04 11:51:22蛋疼蛋
日期:2011-12-29 07:37:22迷宫蛋
日期:2011-12-26 14:19:41茶鸡蛋
日期:2011-11-17 09:20:52茶鸡蛋
日期:2011-11-10 22:42:38ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15茶鸡蛋
日期:2011-10-24 09:48:48ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47
跳转到指定楼层
1#
发表于 2008-6-20 12:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示:
本文在写作过程中除脚本配置及执行输出外,全程图文,如果你的操作系统,oracle版本与本例中相同,按照步骤操作一定可以配置成功。如果你在配置过程中出错,注意查看图文下方的提示信息,对于某些常见错误或俺在安装过程中遇到的错误,俺都会在提示信息中注明!
但是~~rac安装非常繁琐也很复杂,影响和制约的因素非常多,有时甚至系统版本稍有差异安装过程就会有不同,因此本文中提到的错误或bug不过沧海一栗罢了,如果你走狗屎大运遇到了本文没有提示到的错误信息,黑黑,别灰心,google吧,我相信你一定能够解决问题,收获成功的喜悦,迈向成长的新高峰

一、准备工作
所谓工欲善必先利其器,要在vmware下做linux系统的oracle rac,我们也需要准备好相关的装备。
头号选手:VMware server,可免费下载,并可免费申请注册码,地址:http://www.vmware.com/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
论坛徽章:
281
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-01-04 11:51:22蛋疼蛋
日期:2011-12-29 07:37:22迷宫蛋
日期:2011-12-26 14:19:41茶鸡蛋
日期:2011-11-17 09:20:52茶鸡蛋
日期:2011-11-10 22:42:38ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15茶鸡蛋
日期:2011-10-24 09:48:48ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47
2#
 楼主| 发表于 2008-6-20 12:56 | 只看该作者
二、设置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

三思最终的设置配置是这样的:


虚拟机配置完成。

使用道具 举报

回复
论坛徽章:
281
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-01-04 11:51:22蛋疼蛋
日期:2011-12-29 07:37:22迷宫蛋
日期:2011-12-26 14:19:41茶鸡蛋
日期:2011-11-17 09:20:52茶鸡蛋
日期:2011-11-10 22:42:38ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15茶鸡蛋
日期:2011-10-24 09:48:48ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47
3#
 楼主| 发表于 2008-6-20 12:56 | 只看该作者
三、安装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就好了

安装就算完成了,它会提示你重启系统以让设置生效,按人家说的办吧

Redhat Enterprise Linux5的安装算是到此结束。

[ 本帖最后由 junsansi 于 2008-6-20 13:02 编辑 ]

使用道具 举报

回复
论坛徽章:
55
马上加薪
日期:2014-02-19 11:55:142010广州亚运会纪念徽章:排球
日期:2011-04-27 13:27:19SQL大赛参与纪念
日期:2011-04-13 12:08:172011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:01生肖徽章2007版:兔
日期:2011-01-20 12:58:49
4#
发表于 2008-6-20 12:56 | 只看该作者
勤劳的三思,辛苦了!!我去看看!!

使用道具 举报

回复
论坛徽章:
281
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-01-04 11:51:22蛋疼蛋
日期:2011-12-29 07:37:22迷宫蛋
日期:2011-12-26 14:19:41茶鸡蛋
日期:2011-11-17 09:20:52茶鸡蛋
日期:2011-11-10 22:42:38ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15茶鸡蛋
日期:2011-10-24 09:48:48ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47
5#
 楼主| 发表于 2008-6-20 12:56 | 只看该作者
四、配置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,有点儿麻烦,但运气还算不错,在这些操作上你基本不会遇到什么问题。

[ 本帖最后由 junsansi 于 2008-6-20 13:04 编辑 ]

使用道具 举报

回复
论坛徽章:
281
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-01-04 11:51:22蛋疼蛋
日期:2011-12-29 07:37:22迷宫蛋
日期:2011-12-26 14:19:41茶鸡蛋
日期:2011-11-17 09:20:52茶鸡蛋
日期:2011-11-10 22:42:38ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15茶鸡蛋
日期:2011-10-24 09:48:48ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47
6#
 楼主| 发表于 2008-6-20 12:57 | 只看该作者
五、配置第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个节点。

[ 本帖最后由 junsansi 于 2008-6-20 13:04 编辑 ]

使用道具 举报

回复
论坛徽章:
281
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-01-04 11:51:22蛋疼蛋
日期:2011-12-29 07:37:22迷宫蛋
日期:2011-12-26 14:19:41茶鸡蛋
日期:2011-11-17 09:20:52茶鸡蛋
日期:2011-11-10 22:42:38ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15茶鸡蛋
日期:2011-10-24 09:48:48ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47
7#
 楼主| 发表于 2008-6-20 12:57 | 只看该作者
六、配置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

Ok,配置完成,准备进入到crs的安装阶段

[ 本帖最后由 junsansi 于 2008-6-20 13:05 编辑 ]

使用道具 举报

回复
论坛徽章:
281
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-01-04 11:51:22蛋疼蛋
日期:2011-12-29 07:37:22迷宫蛋
日期:2011-12-26 14:19:41茶鸡蛋
日期:2011-11-17 09:20:52茶鸡蛋
日期:2011-11-10 22:42:38ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15茶鸡蛋
日期:2011-10-24 09:48:48ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47
8#
 楼主| 发表于 2008-6-20 13:11 | 只看该作者
七、安装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文件。

使用道具 举报

回复
论坛徽章:
4
2009日食纪念
日期:2009-07-22 09:30:00ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11
9#
发表于 2008-6-20 13:12 | 只看该作者
好东西,如果有完整电子档就好了。

使用道具 举报

回复
论坛徽章:
281
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-01-04 11:51:22蛋疼蛋
日期:2011-12-29 07:37:22迷宫蛋
日期:2011-12-26 14:19:41茶鸡蛋
日期:2011-11-17 09:20:52茶鸡蛋
日期:2011-11-10 22:42:38ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15茶鸡蛋
日期:2011-10-24 09:48:48ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47
10#
 楼主| 发表于 2008-6-20 13:14 | 只看该作者
八、安装database软件

还是在node1操作
执行安装命令

注意xhost +先,另外由于我们使用了RHEL5,并不被oracle10g所支持,因此在执行安装时需要指定-ignoreSysPrereqs跳过安装时的操作系统检查。

欢迎界面,直接下一步


选择要安装的类型


这里我们选择企业版进行安装

选择安装目录


选择节点安装,并同时全选所有节点


安装环境的检查

注意看一下出错或warning的检查项,根据实际情况或忽略,或修正。

这里只安装软件,数据库留待之后创建


摘要信息

最后确认一下设置,没问题的话就点击install开始安装吧

开始安装

这步可能会耗费点儿时间,因为它还需要同时向其它节点复制文件。


在各个节点分别用root角色执行root.sh脚本


执行完成之后,返回安装界面,点击ok

安装完成,exit退出即可

如果前面的设置都正确,这一步遇到问题的机率非常小,如果遇到了问题,注意看其提示信息,八成都能找到解决方案

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表