Upload
kimduho
View
79
Download
15
Embed Size (px)
Citation preview
Installing oracle 10g rac on solaris 10
Installing Oracle 10g RAC on Solaris 10 + ASM + IPMP
-------
Installing oracle 10g rac on solaris 10
目录
环境说明:................................................3安装 oracle rac对环境的要求:................................3网络及存储的要求:......................................3
对 ip的要求:.......................................4对存储的要求.......................................5创建用户...........................................6对网络环境的检查....................................7
基本软件环境检查.......................................91.RAM:...........................................92.SWAP...........................................93./tmp...........................................94.查看系统架构.....................................95.操作系统版本.....................................96.系统补丁包......................................97.系统内核........................................98.oracle用户参数.................................119目录创建........................................1210.存储准备......................................13
开始安装.............................................14安装 oracle clusterware...........................15安装 oracle db....................................17升级到 10.2.0.3...................................18网络配置..........................................18创建 ASM实例......................................19建库.............................................22连接测试..........................................24
附录................................................25卸载 ASM实例......................................25卸载 CRS..........................................27IPMP 与 RAC 的结合................................30
-------
Installing oracle 10g rac on solaris 10
环境说明:
机器型号:SUN 6900
节点个数:2
操作系统版本: Sun Solaris 10
数据库运行环境:RAC
数据库版本:10.2.0.3
存储方式:ASM
集群软件:使用 oracle 的 clusterware,没有使用其它集群软件,如 Sun
cluster
说明:本文档的截图是从几次安装中截取的,因此各图片的主机名可能会出现
不一致的现象
安装oracle rac对环境的要求:
网络及存储的要求:
下图为双节点的网络架构:
-------
Installing oracle 10g rac on solaris 10
RAC 至少需要有两个节点,连接到一个能够并发访问的存储,每个节点有两个
网卡,一个网卡节点间的心跳连接,一个网卡用于和外网进行连接
对 ip的要求:
1. 每个节点至少要有两个网卡,一个用于公网,一个用于私网
1) 用于心跳的网卡最好使用交换机来进行连接,如果没有交换机,则可以
使用光纤线来进行直接连接,如果没有光纤线,才使用普通网线。选择
顺序为:交换机 -> 光纤线 -> 普通网线
2) 如果心跳的网卡和用于外网的网卡都用交换机来进行连接,则建议使用
不同的交换机,如果使用同一交换机,则要求在逻辑上进行分离。
2. 每个节点都有一个 private ip,用于内部连接,
1) 需要与外网隔开
-------
Installing oracle 10g rac on solaris 10
2) 每个节点都能够互相 ping 通
3)private ip 需要绑定到用于私网的网卡上,并且 private ip 对应的网
卡名称在每个节点要一样的。如上图:在 Node1 上,private ip 绑定在
eth1 上,在 node2,private ip 也是绑定在 eth1 上。
4) 需要把 private ip 的信息记录在/etc/hosts 文件上
3. 每个节点都有一个 public ip:
1)Public ip 要在同一网段
2)public ip 也要手动绑定在网卡上,并且在每个节点对应的网卡名是一
样的
3) 建议用于公网的网卡在用于心跳的网卡前面,如公网的网卡使用 en0,
用于私网的网卡使用 en1
4. 每个节点都有一个 virtual ip, 实际上也是一个 public ip
1) 但 是 这 个 ip 是 不 需 要 我 们 手 动 在 网 卡 上 绑 定 的 , oracle 的
clusterware 会自动管理这个 ip,在我们运行 vipca(后面会介绍)会自
动把这个 virtual ip 绑定在跟 pubic ip 相同的那个网卡上。
2) 如 果 有 DNS(domain name server), 需 要 把 public ip 和 public
virtual ip 在 DNS 里注册,如果没有 DNS,则要把 public ip 和 public
virtual ip 记录在/etc/hosts,并且记录在需要连接到数据库的客户端的
hosts 文件里
-------
Installing oracle 10g rac on solaris 10
对存储的要求
当使用 lv 时,需要至少有一个可供两个节点并发访问的 vg,每个节点都能够
对它进行并发访问,用来存放数据文件,
由于本次安装没有使用操作系统的集群软件,因此没办法创建并发的 lv,因此
ocr 和 voting disk 采用裸盘,而数据文件的存储则采用 ASM 的方式,也是使
用裸盘。在 sun solaris 上裸盘是在/dev/rdsk 目录下,命名为 cxtydzsa, 其中
x,y,z,a 为数字,a 为 0-7 的数字。
使用 format 命令查看时,要求该名称在两边是一致的。
如果存储的工程师没有把大小指定到那个片,则默认情况下,是把所有的大小
都分配给 s6,如上图,当我们指定 voting1 使用的裸盘时,是指定/dev/rdsk/
c2t50d0s6
经验
-------
Installing oracle 10g rac on solaris 10
当使用裸盘时,创建一个裸盘后,还需要对它进行 lable, 上次安装碰到存储工
程师没有对裸盘进行 lable,在指定 voting disk 后,报没有相应的权限的错误
当时确定是更改过权限的。原来是没有 lable,确认有没有 lable 可以使用以下
方法:
在输入 format 后,提示 specify disk(enter its number): 输入相应的 disk
号,如上图的 rac-voting1 指定号码 2,如果没有 lable,回车后会提示让你进
行 label.,这时只需要输入 y 就可以了(当然这一步让他们做啦,我们只是确
认就可以了),如果想查看大小是分配到那个片上,可以按以下的顺序:
# format <enter>
Specify disk (enter its number): 输入相应的 number, 如 2 <enter>
Format> p <enter>Partition> p <enter>
在 size 那一栏可以看到那个大小是接近你想要的。就可以使用那一个片,如 6,
则使用 s6
另外,据存储的工程师说,当裸盘的大小小于 2g 时,进行 label 是会报错的,
不过还是有解决办法的(没有拿到相关的文档)
如无特殊说明,以下操作均在两个节点进行
创建用户
创建 oracle 用户, dba 组
1. 先在每个节点查询一个两个节点均没有使用的 uid,gid
# more /etc/group 查看已经使用过的 gid
-------
Installing oracle 10g rac on solaris 10
# more /etc/passwd 查看已经使用的 uid 和 gid
本例以 uid 500, gid 500 为没有使用过的
2. 创建用户,组
# groupadd –g 500 dba // 创建组 dba
# useradd –u 500 –g dba –d /export/home/oracle oracle // 创 建
oracle 用户
# passwd oracle //修改 oracle 用户的密码
其中:在 groupadd 命令中-g代表对应的 gid
在 useradd 命令中,-g 代表 oracle 用户的主组
-u 代表 uid, -d 代表 oracle 的 HOME 目录
3. 检查用户是否成功创建
# su – oracle$ pwd
/export/home/oracle //这个结果应该与 useradd 命令中-d 的后的参数相
同
4.在另一个节点也执行同样的操作
注意:在每个节点的用户所对应的 uid必须是一样的,组 gid 也必须是一样的
检查两个节点中 oracle 用户的 uid,对应组的 gid 是否都一致
# id –a oracleUid=500(oracle) gid=500(dba)
注:
-------
Installing oracle 10g rac on solaris 10
如果想修改用户,组的属性,比如修改 gid, uid,HOME 目录
修改组的属性,可以用# groupmod 命令修改
修改用户的属性,可以用# usermod 命令修改
对网络环境的检查
1.检查 hosts 文件是否有记录相关 ip 的信息
Eg: root@e6900-2 # more /etc/hosts127.0.0.1 Localhost10.200.60.1 e6900-210.200.60.4 e6900-410.200.60.8 e6900-2-vip10.200.60.9 e6900-4-vip192.168.0.3 e6900-2-priv192.168.0.4 e6900-4-priv
2.检查网卡相关信息
# ifconfig –a 查询,对比两个节点的情况
(建议 ce0 用于公网,ce2 用于私网,也就是用于公网的网卡在前面)
-------
Installing oracle 10g rac on solaris 10
注意:因为 public virtual ip 是有 oracle 自动管理的,我们不需要手工把
virtual ip 绑定到网卡上,在运行 vipca 后,oracle 会自动把虚拟 ip 绑定到
public 网卡上,在本例中就是 ce2
可以查看相应的文件
root@e6900-2 # more /etc/hostname.ce0 //显示的是 ce0 对应的 ip 对
应的名称
E6900-2-priv
root@e6900-2 # more /etc/hostname.ce2 //显示的是 ce2 对应的 ip 对
应的名称
E6900-2
检查各个节点是否能相互 ping 通
root@e6900-2 # su – oracle$ ping 192.168.0.3$ ping 192.168.0.4$ ping 10.200.60.1$ ping 10.200.60.4$ ping e6900-2$ ping e6900-4$ ping e6900-2-priv$ ping e6900-4-priv
在节点 e6900-4执行同样的操作
3.配置节点间的对等性:
root@e6900-2 # su – oracle$ vi .rhostse6900-2 oraclee6900-4 oraclee6900-2-priv oraclee6900-4-priv oracle
-------
Installing oracle 10g rac on solaris 10
在另一个节点 e6900-4 也执行同样的操作
4.检查对等性是否成功
root@e6900-2 # su – oracle$ rlogin e6900-2$ rlogin e6900-4root@e6900-4 # su – oracle$ rlogin e6900-2$ rlogin e6900-4
如果每次输入 rlogin 命令,都没有提示输入密码就登陆到另一个节点,那么说
明对等性配置是成功的
*****************************************************************
注:如果配置.rhosts 文件后,对等性还是没有配置成功,则在.rhosts 文件里
加上+, 不过这样会带来一定的安全隐患,不建议这么做
******************************************************************
基本软件环境检查
1.RAM: 至 少 为 1Gb # /usr/sbin/prtconf | grep "Memory
size"
2.SWAP : # /usr/sbin/swap –sRAM<2G SWAP=1.5*RAM2<RAM<8G SWAP=RAMRAM>8G SWAP=0.75*RAM
3./tmp # df -k /tmp > 400M
4.查看系统架构
# /bin/isainfo -kv
结果应为:64-bit sparcv9 kernel modules
根据相应的结果选择软件,如果结果 64-bit sparcv9 kernel modules,
-------
Installing oracle 10g rac on solaris 10
则选择的软件为:for solaris system(sparc)(64-bit)
5.操作系统版本# uname -rsolaris 8 update 7 or latersolaris 9 update 6 or latersolaris 10
6.系统补丁包
(如果系统打上最新的补丁包,一般都能够满足要求)
# pkginfo –i SUNWarc SUNWbtool SUNWhea SUNWlibm SUNWlibms SUNWtoo
# pkginfo –I SUNWmfrun SUNWsprot SUNWxwfnt SUNWi1cs SUNWi15cs
# pkginfo –i SUNWi1of SUNWxcu4 SUNWuiu8 SUNWu1cf
7.系统内核
在 oracle 9之前,系统内核参数的修改是通过/etc/system 文件来进行修
改的,但是从 oracle10开始,对 sem,shm的配置无法通过/etc/system文
件来进行修改
配置参数 max-shm-memory
#projadd -U oracle –K "project.max-shm-memory=(priv,4096MB,deny)" user.oracle
设置 max-shm-memory的值为 4GB
# cat /etc/project
在 project文件的末尾能够看到新增加的一行user.oracle:100::oracle::project.max-shm-memory=(priv, 4294967296,deny)
修改参数 max-sem-ids
# projmod -s -K "project.max-sem-ids=(priv,256,deny)" user.oracle
-------
Installing oracle 10g rac on solaris 10
检查修改是是否生效
// projadd是新增加的命令,projmod是更改的命令,如果 max-shm-
memory设置错误,可以使用 projmod命令进行修改,格式同修改 max-sem-
ids是一样的,名称更改即可# su - oracle$ prctl –I project user.oracleproject: 100: user.oracleNAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
。。。。。。project.max-shm-memory privileged 6.00GB - deny - system 16.0EB max deny -project.max-shm-ids privileged 128 - deny - system 16.8M max deny -project.max-msg-ids privileged 128 - deny - system 16.8M max deny -project.max-sem-ids privileged 256 - deny - system 16.8M max deny -
。。。。。。
除了设置 sem,shm参数外,还需要在/etc/system中增加
noexec_user_stack参数# cp /etc/system /etc/system.origVi /etc/systemset noexec_user_stack=1
经验:
在 solaris 10上安装 10g rac时,曾经碰到当 SGA设置过大时,导致重其
后,有一些资源需要手工启动,因此,oracle官方建议把 shmmax的参数也
-------
Installing oracle 10g rac on solaris 10
加到/etc/system文件下(可见 Doc id : 399895.1 from metalink)set noexec_user_stack=1set shmsys:shminfo_shmmax=4294967295
8. 检查 UDP参数设置
# ndd /dev/udp udp_xmit_hiwat //两个值均应该为大于65536# ndd /dev/udp udp_recv_hiwat65536
由于在 solaris 10中,这两个参数的值接近 65536,因此,可以不用修改
8.oracle用户参数
vi .profile------------------------- umask 022ORACLE_TERM=xterm
ORACLE_BASE=/oracle/app/oracle (根据实际目录修改)
ORACLE_HOME=$ORACLE_BASE/product/10.2.0ORA_CRS_HOME=$ORACLE_BASE/crsNLS_LANG=AMERICAN_AMERICA.ZHS16GBKORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
ORACLE_SID=ora10g (根据实际实例名修改,两个节点的 oracle_sid
应该配置不同的,节点 1为 ora10g1 , 节点 2为 ora10g2)
PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:$PATHexport ORACLE_TERMexport ORACLE_BASEexport ORACLE_HOMEexport NLS_LANGexport ORA_NLS33export ORACLE_SIDexport PATH---------------------------------------------------------
在.profile中增加环境变量后,退出 oracle用户$ exit
-------
Installing oracle 10g rac on solaris 10
# su – oracle$ env | more $ echo $ORACLE_SID
$ echo $ORACLE_HOME //查看变量是否生效
经验:
虽然在本次安装中设置了 PATH=$PATH:$ORACLE_HOME/bin, 但是在本次安
装中,在 oracle用户下的 PATH变量并没有包括系统的 PATH路径,只是包含
$ORACLE_HOME/bin,导致在安装 clusterware时,在检查了操作系统环境,
到配置集群这两个步骤之间到 83%的时候停止了很久,并且在进入配置集群这
一界面时,在运行 runInstaller的窗口报错:Cautht cluster Exception PRKC-1044: Failed to check remote command execution setup for node e6900-2 using shells /usr/local/bin/ssh and /usr/bin/rsh File “/usr/local/bin/ssh” does not exist on node “e6900-2
后来发现在 root用户下查询 echo $PATH,并把返回的内容加到 oralce用户
下 PATH参数里,就没有出现这个错误提示
9目录创建
# mkdir /oracle/app/oracle //用于
oracle软件安装目录
# mkdir /oracle/app/oracle/crs //用于 oracle clusterware
软件安装目录# chown –R oracle:dba /oracle# chmod –R 775 /oracle
10.存储准备
-------
Installing oracle 10g rac on solaris 10
如果没有安装第三方集群软件,或者没有第三方软件来实现两个节点对存储的
并发访问,就不能使用 lv,需要使用裸盘,有两种实现方法:
1.Ocr, voting disk用裸盘,每个数据文件对应一个裸盘
2.Orc, voting disk用裸盘,数据文件的存储方式为 ASM,磁盘组是通过
指定几个大裸盘来实现的
由于对于裸盘来说,越大性能越好,如果采取每个数据文件对应一个裸盘的方
式,因为每个数据文件为几 GB,或者几百 MB,除了划分起来比较麻烦之外,
对性能可能也会有影响,并且在如果要增加表空间的大小,还需要再划分裸盘。
而如果采取 ASM,因为一次划分一个到几个裸盘,用来存放数据文件,并且由
ASM自动管理,省了很多麻烦,因此本次采取 ASM的存储方式。
每个节点加载的裸设备名称必须相同
裸盘是放在/dev/rdsk目录下,明确了哪些裸盘是给 oracle使用之后设置相
应的属性.由于存储工程师在对裸盘进行 lable时,太小的裸盘 lable时报错,
在本次安装中,用做 voting disk的裸盘为 128M,分别为 c2t50d0s6,
cet51d0s6, c2t52d0s6
用做 ocr的裸盘为 320M,分别为 c2t53d0s6, c2t54d0s6
# cd /dev/rdsk# bash# Chown –R oracle:dba c2t50d0s*Chown –R oracle:dba c2t51d0s*Chown –R oracle:dba c2t52d0s*Chown –R oracle:dba c2t53d0s*Chown –R oracle:dba c2t54d0s*Chown –R oracle:dba c2t55d0s*
// 这个裸盘是用于存放 asm的 spfile的Chown –R oracle:dba c2t56d0s*
-------
Installing oracle 10g rac on solaris 10
// t56,57是用于存放数据文件的大裸盘Chown –R oracle:dba c2t57d0s*Chmod –R 660 c2t50d0s*
//voting disk的权限为 660
Chmod –R 660 c2t51d0s*Chmod –R 660 c2t52d0s*Chmod –R 660 c2t53d0s* Chmod –R 660 c2t54d0s*Chmod –R 660 c2t55d0s*Chmod –R 660 c2t56d0s*Chmod –R 660 c2t57d0s*
在/dev/dsk目录下执行同样的 chown, chmod操作
另外,因为/dev/rdsk下的裸盘有一个链接执行另一个目录,如下图所示
的/devices/iscsi目录下,我们可以使用# cd /devices/iscsi
# ls *rac* 查看是否显示的都是我们需要的那几个,如果是,则用通配符*
来进行设置# chown –R oracle :dba *rac*# chmod –R 660 *rac*
注:实际上,我们在执行 chown, chmod后,/dev/rdsk, /dev/dsk下对
应的裸盘的属性还是 root,root, 但是我们改了/devices/iscsi目录下的
文件后,权限是有改成 oracle:dba
-------
Installing oracle 10g rac on solaris 10
开始安装
在安装 clusterware, db,打补丁建库等操作,都是只在一个节点上运行
(为同一个节点),然后 oracle会自动把相关的东西拷贝到另一个节点,本
例子在 e6900-6上运行
1. 解压软件# gunzip 10gr2_cluster_sol.cpio.gz# cpio –idcmv < 10gr2_cluster_sol.cpio
2.# su – oracle$ DISPLAY=<ip> :0.0
// 如果是通过 xmanager连到服务器,则 ip为运行 xmanager的那台机器
的 Ip
安装 oracle clusterware
$ cd 相应的目录$ .runInstaller
1) 在启动图形界面后,在输入 inventory路径和组信息时,一般都按默认的/oracle/app/oracle/oraInventory, dba
2) 在选择安装目录时,默认的是 ORACLE_HOME的目录,我们需要修改成
crs安装的目录,本例子为/oracle/app/oracle/crs
3) 在检查系统条件是否满足这一步,确认所有条件都满足,如果不满足,则
按修改相应的内容。
4) 进入 cluster的配置,默认的 cluster name 是 crs,也可以修改这个
-------
Installing oracle 10g rac on solaris 10
名称,如果有安装第三方集群软件,那么这里会自动列出各个节点的信息,如
果没有,则只显示安装节点的信息,我们就需要手动把另一个节点的信息加进
去选择 add, 然后增加:e6900-8, e6900-8-priv,e6900-8-vip
查看/etc/hosts文件,确认名称是否一样
5)选择下一步后会出来有关网卡的信息,由于 oracle自动把 172.25和 10.
开头的 ip地址当成 private ip,因此,我们需要把 10.200.60.0对应的网
卡修改成 public,如果主机有多个网卡,则没有使用到的网卡,通过 edit按
钮把相应 interface type改成 do not use, 设置完后,设置时,可以使
用 ifconfig –a在两个节点进行确认
本例:Interface name subnet interface typeEn0 192.168.0.0 privateEn2 10.200.60.0 public
其它网卡的 interface type为 do not use
6)接下来指定 ocr的路径,如果磁盘本身有冗余,则可以选择 external
redundancy, 指定一个 ocr路径,如果选择 normal redundancy, 这是
默认的,则指定两个 ocr路径/dev/rdsk/c2t53d0s6/dev/rdsk/c2t54d0s6
下一步指定 voting disk的路径,external redundancy时指定一个
voting disk路径,normal redundancy时指定三个 voting disk路径/dev/rdsk/c2t50d06/dev/rdsk/ct51d0s6/dev/rdsk/c2t52d0s6
然后系统开始安装,在安装完本节点后,oracle会自动把相关的东西拷贝到
另一个节点,在结束之前,会有一个窗口提示分别在两个节点以 root用户运
-------
Installing oracle 10g rac on solaris 10
行 root.sh
如果是使用 10开头或者 172开头的 Ip,oracle会把它当作私有 ip,
因此当在第二个节点运行 root.sh时,最后面会显示: the given
interfaces(s), “en2” is public, public interfaces should
be used to configure vitual IPS,这时,我们就必须手工在第一个节
点运行 vipca
# cd /oracle/app/oracle/crs/bin# ./vipca
我们只需要输入第一个节点的 vip alias name,如 e6900-2-vip,然后按
tab键就能够出来其它的。点击下一步,则会出现下图:检查改图列出来的信息
是否跟/etc/hosts文件中列出来的一致
-------
Installing oracle 10g rac on solaris 10
然后一直下一步,就可以结束安装了。
在安装完 crs后,检查相关的信息是否正确
使用 crs_stat –t 来查看两个节点的 gsd, ons, vip资源是否状态为online
使用 olsnodes –n 查看节点信息,正常情况下是主机名后跟的是 1,2 有时
候可能会是 0,1,都是正常的
-------
Installing oracle 10g rac on solaris 10
安装 oracle db
1. 到存放 db软件的目录下,解压缩,然后运行 $ ./runInstaller
1)检查$ORACLE_HOME路径是否正确,这里的配置应该是:/oracle/app/
oracle/product/10.2.0
2) 选择 Cluster Installation,并将节点二选上。
3) Oracle执行完检测后,进入配置选项。由于不打算使用 ASM,这里选择了Install database software only
4) 安装结束后会提示要求运行脚本,按要求运行即可
升级到 10.2.0.3
首先应该打集群软件 clusterware的补丁,然后再打 db软件的补丁----------------------------
为 clusterware打补丁:----------------------------
1). cd 到存放 patch的目录下,解压,然后运行$ ./runInstaller
2). 在 specify Home details这一步:
Name:OUIHomecrs
Path: /oracle/app/oracle/crs
3). 安装结束后,分别在两个节点运行脚本
-------
Installing oracle 10g rac on solaris 10
------------------
为 db打补丁------------------
1). 同样运行 patch软件的./runInstaller
2). 在 specify Home details这一步:Name: OUIHome1Path: /oracle/app/oracle/product/10.2.0
3). 安装结束后,分别在两个节点运行脚本
网络配置
运行 net configuration assistant
$ netca
1) 选择 cluster configuration
2) 选择所有的节点
3) 配置监听
4) 命名方法选择 local naming
5)保存配置
创建 ASM实例
1. $ dbca
-------
Installing oracle 10g rac on solaris 10
2. 输入 ASM 实例 sys 和 system 的密码。
参数文件有两个选项,如果有共享的裸盘,则可以选择 creater server
parameter file (spfile),由于我们之前创建了裸盘 c2t55d0s6,因
此我们输入/dev/rdsk/c2t55d0s6
如果没有共享的裸盘或者 lv,我们在每个节点生成每个 ASM实例自己的参数文
件
-------
Installing oracle 10g rac on solaris 10
3. 点击 next后会创建 ASM实例,在两个节点创建+ASM1, +ASM2实例
4.在第三步会出来一个创建 DISK GROUPS的页面
选择:create new, 点击下一步
-------
Installing oracle 10g rac on solaris 10
5.如下图所示,这个界面会把所有可用的盘的路径都列出来,我们只需要选择
我们需要的哪些裸盘就可以来。在本例中,给磁盘组取名:DATA,选择冗余方式
为 Normal.
6. 选择 ok 后,会列出现在创建的磁盘组名称,大小,以及冗余方式。注意:
state应该为 mounted (2/2)
-------
Installing oracle 10g rac on solaris 10
7. 点击 finish,创建完成后,我们使用以下方式查看是否创建成功
第一个节点:# su – oracle$ ORACLE_SID=+ASM1$ export ORACLE_SID$ sqlplus /nolog$ conn / as sysdba
在另一个节点设置 ORACLE_SID=+ASM2,然后查询磁盘组的状态是否为mounted
-------
Installing oracle 10g rac on solaris 10
建库
$ dbca
存储方式选择 Automatic Stoage Management (ASM)
指定数据文件的目录时选择:use oracle-managed files
路径指定刚才创建的磁盘组 +DATA
选择 Mutiplex Redo log and control files, 输入位置也为 +DATA,
我们也可以创建两个磁盘组,一个用于存放数据文件,一个用于存放 redo
logs和 controlfiles
-------
Installing oracle 10g rac on solaris 10
其它的和单机安装没什么区别
查看资源状态:
连接测试
1. 连接测试
在安装完成后,我们使用网络服务名进行连接数据库,假设数据库名为 orcl,
分别连接服务名 orcl,两个实例 orcl1, orcl2
-------
Installing oracle 10g rac on solaris 10
$ sqlplus /nologSQL> connect system/<password>@orclconnect.
该结果显示测试通过。
Sql> conn system/<password>@orcl1Sql> conn system/<password>@orcl2
RAC 负载均衡测试
验证 RAC 的客户端连接,在客户端 A(在服务器本机运行也可)用 sqlplus 连接
数据库:
connect system/<password>@orclSQL> select instance_name from v$instance;INSTANCE_NAME----------------
<sidn> -- 此处 sid末位为 1位数字
注意:客户端 A 不退出
根据以上查询返回结果,在数据库服务器 oracle 用户系统提示符下运行:
$ srvctl stop instance –d <databasename> -i <sidn>
如: srvctl stop instance –d orcl –I orcl<1/2>
在上述客户端 A 上再次运行:
SQL> select instance_name from v$instance;INSTANCE_NAME----------------
<sidn> -- 此处 n 与上述不一样
所有过程运行完毕,说明测试通过。
连接注意事项:
-------
Installing oracle 10g rac on solaris 10
如果没有 DNS(域名服务器),则需要把服务器的 hosts文件拷贝到客户端的
hosts文件
即:10.200.60.1 e6900-210.200.60.2 e6900-410.200.60.8 e6900-2-vip10.200.60.9 e6900-4-vip
如果客户端是 WINDOWS,则路径为: c:\windows\system32\drivers\etc\hosts
如果客户端是 UNIX, 则路径为 /etc/hosts
如果既没有 DNS又没有把 ip地址写到客户端的 hosts文件,则会出现有时连
不到数据库的现象。
附录
卸载 ASM实例
在使用 ASM实例建库失败,需要卸载 ASM实例,或者要重新安装,则需要先卸
载 ASM实例。
1) 通过检查 oratab文件来检查实例的 oracle home目录
2)利用 DBCA卸载相应的数据库
3) 如果是使用 ASM为存储方式,则执行以下步骤:a.# su – oracle $ ORACLE_SID=+ASM1 $ export ORACLE_SID $ sqlplus /nolog
-------
Installing oracle 10g rac on solaris 10
SQL> conn / as sysdba
SQL> select name from v$asm_diskgroup; //查看 ASM使
用的磁盘组 SQL> drop diskgroup <diskgroup_name> including contents;
<diskgroup_name>是这个 ASM实例使用的磁盘组,需要先 drop掉,
如果有多个磁盘组,则执行多次这个命令。在运行该命令时,可能会提示该
磁盘组正被使用,那么在另一个节点连接到+ASM2实例,然后关闭-------------------------------------------------# su – oracle$ ORACLE_SID=+ASM2$ export ORACLE_SID$ sqlplus /nologSQL>conn / as sysdbaSQL> shutdown immediate---------------------------------------------------
4) 关闭所有节点的 ASM实例
节点 1:
# su – oracle
$ ORACLE_SID=+ASM1 $ export ORACLE_SID $ sqlplus /nolog SQL> conn / as sysdba SQL> shutdown immediate
节点 2: # su – oracle $ ORACLE_SID=+ASM2 $ export ORACLE_SID $ sqlplus /nolog SQL> conn / as sysdba SQL> shutdown immediate
5) 卸载 ASM,可以使用 DBCA的 silent模式,也可以手工执行,如果是采取
-------
Installing oracle 10g rac on solaris 10
手工删除的方式,执行第 6步骤
使用 DBCA的 silent模式
Dbca –silent –deleteASM –nodelist node1,node2 【其中,
node1,node2为两个节点的主机名】
6. 此步骤为手工卸载 ASM的步骤:
1)Srvctl remove –n nodename // 这条命令的作用是把 ASM的信
息从 ocr文件中删除
2)手工删除文件Rm –rf $ORACLE_HOME/dbs/*ASM*Rm –rf $ORACLE_BASE/admin/+ASM
3). 把/var/opt/oratab文件中记录的有关 ASM的那一行去掉
卸载 CRS
主题: 10g RAC: How to Clean Up After a Failed CRS Install
文档 ID : 注释:239998.1 类型: BULLETIN
上次修订日期: 24-AUG-2006 状态: PUBLISHED
PURPOSE-------
The purpose of this document is to help DBA's and support analysts understand how to clean up a failed CRS (Cluster Ready Services) install for 10g RAC.
SCOPE & APPLICATION-------------------
-------
Installing oracle 10g rac on solaris 10
DBA's and Support Analysts
10g RAC: How to Clean Up After a Failed CRS Install---------------------------------------------------Not cleaning up a failed CRS install can cause problems like node reboots.Follow these steps to clean up a failed CRS install:
1. Run the rootdelete.sh script then the rootdeinstall.sh script from the $ORA_CRS_HOME/install directory. Running these scripts should be sufficient to clean up your CRS install. If you have any problems with these scripts please open a service request.
If for some reason you have to manually remove the install due to problems with the scripts, continue to step 2:
2. Stop the Nodeapps on all nodes:
srvctl stop nodeapps -n <node name>
3. Prevent CRS from starting when the node boots. To do this issue the following as root:
Sun:rm /etc/init.d/init.cssd rm /etc/init.d/init.crs rm /etc/init.d/init.crsd rm /etc/init.d/init.evmd rm /etc/rc3.d/K96init.crsrm /etc/rc3.d/S96init.crs
rm -Rf /var/opt/oracle/scls_scr rm -Rf /var/opt/oracle/oprocd
rm /etc/inittab.crs cp /etc/inittab.orig /etc/inittab
Linux:rm -f /etc/init.d/init.cssd rm -f /etc/init.d/init.crs rm -f /etc/init.d/init.crsd rm -f /etc/init.d/init.evmd rm -f /etc/rc2.d/K96init.crsrm -f /etc/rc2.d/S96init.crs
-------
Installing oracle 10g rac on solaris 10
rm -f /etc/rc3.d/K96init.crsrm -f /etc/rc3.d/S96init.crsrm -f /etc/rc5.d/K96init.crsrm -f /etc/rc5.d/S96init.crs
rm -Rf /etc/oracle/scls_scrrm -f /etc/inittab.crs cp /etc/inittab.orig /etc/inittab
HP-UX:rm /sbin/init.d/init.cssd rm /sbin/init.d/init.crs rm /sbin/init.d/init.crsd rm /sbin/init.d/init.evmd
rm /sbin/rc2.d/K960init.crs rm /sbin/rc2.d/K001init.crs
rm /sbin/rc3.d/K960init.crsrm /sbin/rc3.d/S960init.crs
rm -Rf /var/opt/oracle/scls_scr rm -Rf /var/opt/oracle/oprocd
rm /etc/inittab.crs cp /etc/inittab.orig /etc/inittab
HP Tru64:
rm /sbin/init.d/init.cssd rm /sbin/init.d/init.crs rm /sbin/init.d/init.crsd rm /sbin/init.d/init.evmd rm /sbin/rc3.d/K96init.crsrm /sbin/rc3.d/S96init.crs
rm -Rf /var/opt/oracle/scls_scr rm -Rf /var/opt/oracle/oprocd
rm /etc/inittab.crs cp /etc/inittab.orig /etc/inittab
IBM AIX:
rm /etc/init.cssd rm /etc/init.crs rm /etc/init.crsd rm /etc/init.evmd rm /etc/rc.d/rc2.d/K96init.crsrm /etc/rc.d/rc2.d/S96init.crs
rm -Rf /etc/oracle/scls_scr
-------
Installing oracle 10g rac on solaris 10
rm -Rf /etc/oracle/oprocdrm /etc/inittab.crs cp /etc/inittab.orig /etc/inittab
4. If they are not already down, kill off EVM, CRS, and CSS processes or reboot the node:
ps -ef | grep crskill <crs pid>ps -ef | grep evmkill <evm pid>ps -ef | grep csskill <css pid>
Do not kill any OS processes, for example icssvr_daemon process !
5. If there is no other Oracle software running (like listeners, DB's, etc...),you can remove the files in /var/tmp/.oracle or /tmp/.oracle. Example: rm -f /var/tmp/.oracle or rm -f /tmp/.oracle
6. Remove the ocr.loc Usually the ocr.loc can be found at /etc/oracle
7. De-install the CRS home in the Oracle Universal Installer8. Remove the CRS install location: rm -Rf <CRS Install Location>/*
9. Clean out the OCR and Voting Files with dd commands. Example: dd if=/dev/zero of=/dev/rdsk/V1064_vote_01_20m.dbf bs=8192 count=2560 dd if=/dev/zero of=/dev/rdsk/ocrV1064_100m.ora bs=8192 count=12800
If you placed the OCR and voting disk on a shared filesystem, remove them.
If you are removing the RDBMS installation, also clean out any ASM disks if
-------
Installing oracle 10g rac on solaris 10
they have already been used.
10.If you would like to re-install CRS, follow the steps in the RAC Installation manual.
IPMP 与 RAC 的结合
1. IPMP ( IP Multipathing), 是 Sun的一项技术,主要是为了防止单
个网卡的失败,可以使用 solaris的 ipmp技术来配置冗余的网卡,来防止网
卡的单点故障
IPMP和 VIP的区别:---------------------------------------
IPMP能够把 ip切换到同一个节点的另一个网卡
VIP能够把 IP切换到另一个节点的同一网卡名的网卡上
Oracle推荐把 Oracle的 VIP和 Sun 的 IPMP结合起来使用
2. 硬件配置----------------------------------------
每个节点至少有两个网卡用于配置 public network的 ipmp
一个 primary NIC, 用于正常情况下的主要通讯
一个 standby NIC, 在主网卡出现问题时,会自动地把物理 ip和 oracle地
vip切换到 standby NIC
+----------------+ +----------------+ | Server | | Server | +--+----------+--+ +--
-------
Installing oracle 10g rac on solaris 10
+----------+--+ ce0 ce1 ce0 ce1 |(primary) |(standby) ==========> |(failed) |(primary) | | | | (vip) | | (vip) | | | |
在本例中,网卡名为 ce0和 ce1
注意:为了避免 MAC地址冲突,应该为每个 NIC配置独一无二地 MAC地址(可
以通过设置"local-mac-address"为 true)
3. 网络配置
每个节点至少需要 4个 ip
# 一个物理 ip绑定在主网卡上(ce0)
# 一个 ip用于 oracle的 vip
# 一个 test ip绑定在 primary网卡上(ce0:1)上,用于 ipmp的失败检测
【这个 ip地址是进行漂移的,也就是那个网卡有效,这个 IP就会绑定在哪个
网卡上】
# 一个 test ip绑定在 standby网卡上,用于 ipmp的失败检测
如:physical ip: 146.56.77.30 (ce0)
test ip for ce0: 146.56.77.31 (ce0:1) 【漂移的 IP】test ip for ce1: 146.56.77.32 (ce1)
oracle vip: 146.56.78.1 (ce0:2 配置了 orcle的 vip后添
-------
Installing oracle 10g rac on solaris 10
加上去的,不用手工添加)
注意:所有的 ip都必须属于同一个 IPMP group
============================
查看 ip是否是属于同一个 IPMP group,可以查看Eg:
/etc/hostname.ce0 // 其中 ce0为对应的网卡名E6900-4 group dbswitch3 deprecated – failover network + broadcast + up addif e6900-4vip netmask + broadcast + up
/etc/hostname.ce2 E6900-4db group dbswitch3 deprecated –failover network + broadcast + standby up
Group后的 dbswitch3就是 IPMP group name, 这个名字是有系统管理员
定义的。两个节点的组名可以一样,也可以不一样,但是同一个节点的两个网卡
的组名必须是一样的
=============================
如果我们在安装 RAC前,就已经配置了 IPMP,那么我们只需要在安装
Clusterware时,把两块网卡都选择作为 PUBLIC,并且在运行 VIPCA时,把
两块网卡都选上即可。
但是,如果我们是在安装 RAC后才添加了 IPMP,我们可以执行以下的步骤,把
另一块网卡添加上去。
对于已经存在的 10g RAC 安装:
对于节点 node1
1. 关闭数据库,ASM实例
-------
Installing oracle 10g rac on solaris 10
方法 1.
$ srvctl stop instance -orcl grid -i orcl1 // 用
srvctl 关闭实例
$ srvctl stop asm -n node1 // 用 srvctl 关闭 ASM
方法 2:$ export ORACLE_SID=orcl1$ sqlplus /nologSQL> conn / as sysdba SQL> shutdown immediate
$ export ORACLE_SID=+ASM1$ sqlplus /nologSQL> conn / as sysdbaSQL> shutdown immediate
2. 关闭节点的各个资源# srvctl stop nodeapps -n node1---------------------------------------
该命令的作用是关闭指定节点的 vip, gsd, ons, listener资源
运行后用 ifconfig -a查看 vip是否已经没有在网卡上
或者使用 crs_stat查看各个资源有成功关闭---------------------------------------
3. 修改 nodeapps,并且增加 ip的网卡信息
这个命令要求以 root用户运行# srvctl modify nodeapps -n node1 -o /u01/app/oracle/product/10gdb -A 146.56.78.1/255.255.252.0/ce0\|ce1
-n 后面跟的是节点名称
-o 后面跟的是 oracle_home
-------
Installing oracle 10g rac on solaris 10
-A 后面跟的是 oracle vip (<name|ip>/netmask[/if1[|if2...])
4.启动资源 nodeapps
# srvctl start nodeapps –n node1
使用 crs_stat -t查看各个资源的状况,并且使用 ifconfig -a来查看网
卡的信息是否正确
5.启动 ASM实例和数据库实例$ export ORACLE_SID=+ASM1$ sqlplus /nologSQL> conn / as sysdbaSQL> startup
$ export ORACLE_SID=orcl1$ sqlplus /nologSQL> conn / as sysdbaSQL> startup
6. 针对另一个节点做同样的操作,结点名,实例名,ip等地址改成另一个节
点的信息即可
经验:
在结合使用 IPMP后,发现客户端连接到数据库,有时会出现连接超时的现象
解决办法:
为每个实例添加本地监听,并且把 host的名称设为 VIP对应的名称
Orcl1.local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = e6900-6-vip)(PORT = 1521)(IP = FIRST))'Orcl2.local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = e6900-8-vip)(PORT = 1521)(IP = FIRST))'
-------