[solaris 10][oracle 10g with rac and asm][ver1[1].0]

49
Installing oracle 10g rac on solaris 10 Installing Oracle 10g RAC on Solaris 10 + ASM + IPMP -------

Upload: kimduho

Post on 03-Apr-2015

79 views

Category:

Documents


15 download

TRANSCRIPT

Page 1: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

Installing oracle 10g rac on solaris 10

Installing Oracle 10g RAC on Solaris 10 + ASM + IPMP

-------

Page 2: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

-------

Page 3: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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对环境的要求:

网络及存储的要求:

下图为双节点的网络架构:

-------

Page 4: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

Installing oracle 10g rac on solaris 10

RAC 至少需要有两个节点,连接到一个能够并发访问的存储,每个节点有两个

网卡,一个网卡节点间的心跳连接,一个网卡用于和外网进行连接

对 ip的要求:

1. 每个节点至少要有两个网卡,一个用于公网,一个用于私网

1) 用于心跳的网卡最好使用交换机来进行连接,如果没有交换机,则可以

使用光纤线来进行直接连接,如果没有光纤线,才使用普通网线。选择

顺序为:交换机 -> 光纤线 -> 普通网线

2) 如果心跳的网卡和用于外网的网卡都用交换机来进行连接,则建议使用

不同的交换机,如果使用同一交换机,则要求在逻辑上进行分离。

2. 每个节点都有一个 private ip,用于内部连接,

1) 需要与外网隔开

-------

Page 5: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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 文件里

-------

Page 6: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

经验

-------

Page 7: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

-------

Page 8: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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)

注:

-------

Page 9: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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 用于私网,也就是用于公网的网卡在前面)

-------

Page 10: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

-------

Page 11: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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,

-------

Page 12: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

-------

Page 13: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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的参数也

-------

Page 14: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

-------

Page 15: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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.存储准备

-------

Page 16: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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*

-------

Page 17: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

-------

Page 18: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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,也可以修改这个

-------

Page 19: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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用户运

-------

Page 20: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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文件中列出来的一致

-------

Page 21: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

Installing oracle 10g rac on solaris 10

然后一直下一步,就可以结束安装了。

在安装完 crs后,检查相关的信息是否正确

使用 crs_stat –t 来查看两个节点的 gsd, ons, vip资源是否状态为online

使用 olsnodes –n 查看节点信息,正常情况下是主机名后跟的是 1,2 有时

候可能会是 0,1,都是正常的

-------

Page 22: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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). 安装结束后,分别在两个节点运行脚本

-------

Page 23: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

-------

Page 24: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

Installing oracle 10g rac on solaris 10

2. 输入 ASM 实例 sys 和 system 的密码。

参数文件有两个选项,如果有共享的裸盘,则可以选择 creater server

parameter file (spfile),由于我们之前创建了裸盘 c2t55d0s6,因

此我们输入/dev/rdsk/c2t55d0s6

如果没有共享的裸盘或者 lv,我们在每个节点生成每个 ASM实例自己的参数文

-------

Page 25: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

Installing oracle 10g rac on solaris 10

3. 点击 next后会创建 ASM实例,在两个节点创建+ASM1, +ASM2实例

4.在第三步会出来一个创建 DISK GROUPS的页面

选择:create new, 点击下一步

-------

Page 26: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

Installing oracle 10g rac on solaris 10

5.如下图所示,这个界面会把所有可用的盘的路径都列出来,我们只需要选择

我们需要的哪些裸盘就可以来。在本例中,给磁盘组取名:DATA,选择冗余方式

为 Normal.

6. 选择 ok 后,会列出现在创建的磁盘组名称,大小,以及冗余方式。注意:

state应该为 mounted (2/2)

-------

Page 27: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

-------

Page 28: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

-------

Page 29: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

Installing oracle 10g rac on solaris 10

其它的和单机安装没什么区别

查看资源状态:

连接测试

1. 连接测试

在安装完成后,我们使用网络服务名进行连接数据库,假设数据库名为 orcl,

分别连接服务名 orcl,两个实例 orcl1, orcl2

-------

Page 30: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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 与上述不一样

所有过程运行完毕,说明测试通过。

连接注意事项:

-------

Page 31: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

-------

Page 32: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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模式,也可以手工执行,如果是采取

-------

Page 33: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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-------------------

-------

Page 34: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

-------

Page 35: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

-------

Page 36: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

-------

Page 37: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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 | +--+----------+--+ +--

-------

Page 38: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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后添

-------

Page 39: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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实例

-------

Page 40: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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

-------

Page 41: [solaris 10][oracle 10g with rac and asm][ver1[1].0]

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))'

-------