1。 预先准备和检查工作
集群中所有计算机上禁用 SELinux(只适用于 RHEL4 U2 以及更高版本),disable follow service:
chkconfig --level 2345 pcmcia off
chkconfig --level 2345 kudzu off
chkconfig --level 2345 isdn off
chkconfig --level 2345 sendmail off
chkconfig --level 2345 rhnsd off
chkconfig --level 2345 cups off
chkconfig --level 2345 cups-config-daemon off
chkconfig --level 2345 cpuspeed off
chkconfig --level 2345 gpm off
chkconfig --level 2345 apmd off
chkconfig --level 2345 lm_sensors off
chkconfig --level 2345 mdmonitor off
集群中所有计算机上configure ntp server and clinet on two server
vi /etc/ntp.conf
service ntpd start
chkconfig --level 35 ntpd on
2.集群中所有计算机上修改vi /etc/hosts文件,如下所示
127.0.0.1 localhost(这里必须这样修改,否则RAC节点名出现在回送地址中,安装RAC期间可能会报错)
10.1.250.17 racl
10.1.250.18 rac2
192.168.100.100 rac1-priv
192.168.100.200 rac2-priv
10.1.250.19 rac1-vip
10.1.250.20 rac2-vip
3.集群中所有计算机上检查必需的 RPM
必须安装以下程序包(或更高版本):
make-3.80-5
glibc-2.3.4-2.9
glibc-devel-2.3.4-2.9
glibc-headers-2.3.4-2.9
glibc-kernheaders-2.4-9.1.87
cpp-3.4.3-22.1
compat-db-4.1.25-9
compat-gcc-32-3.2.3-47.3
compat-gcc-32-c++-3.2.3-47.3
compat-libstdc++-33-3.2.3-47.3
compat-libstdc++-296-2.96-132.7.2
openmotif-2.2.3-9.RHEL4.1
setarch-1.6-1
iscsi-initiator-utils-4.0.3.0-2.i386.rpm (use IP SAN)
4.集群中所有计算机上调整网络设置,设置共享内存和信号参数
vi /etc/sysconfig/network-script/ifcfg-ethX
service network restart
编辑 vi /etc/sysctl.conf文件,添加如下信息,这些信息可以根据自己的机器实际情况来调整
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_max = 262144
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
/etc/sysctl.conf -p 使配置生效
设置oracle对文件的要求:
编辑文件:vi /etc/security/limits.conf 加入以下语句:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
编辑文件:vi /etc/pam.d/login 加入以下语句(可能应该加在最后一条规则之前):
session required /lib/security/pam_limits.so
配置并加载 hangcheck-timer 模块
hangcheck-timer 模块有两个关键的参数:
hangcheck-tick:此参数定义了系统运行状况检查的间隔时间。默认值为 60 秒;Oracle 建议将它设置为 30 秒。
hangcheck-margin:此参数定义了 hangcheck-timer 在重置 RAC 节点前所容许的最大挂起延迟。它定义了以秒为单位的误差幅度。默认值为 180 秒;Oracle 建议将它设置为 180 秒。
注意:这两个 hangcheck-timer 模块参数表示在该模块重置系统前 RAC 节点必须挂起的时长。当以下条件为真时将会重置节点:
系统挂起时间 > (hangcheck_tick + hangcheck_margin)
配置 Hangcheck 内核模块参数
每次加载 hangcheck-timer 内核模块(手动加载或由 Oracle 加载)时,它都需要知道对我们刚刚讨论的两个参数(hangcheck-tick 和 hangcheck-margin) 所使用的值。这些值需要在每次重新启动 Linux 服务器后可用。为此,在 /etc/modprobe.conf 文件中创建一个具有正确值的条目,如下所示:
# su -
# echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" >> /etc/modprobe.conf
每次加载 hangcheck-timer 内核模块时,它将使用在 /etc/modprobe.conf 文件中创建的条目定义的值
要手动加载 hangcheck-timer 内核模块并验证它是否使用在 /etc/modprobe.conf 文件中定义的正确值,运行以下命令:
modprobe hangcheck-timer
grep Hangcheck /var/log/messages | tail -2
Sep 27 23:11:51 linux2 kernel:Hangcheck:starting hangcheck timer 0.5.0 (tick is 30 seconds, margin is 180 seconds)
5. 在集群的一个节点的共享存储设备上创建分区
创建四个分区:一个1G分区用于 Oracle 的集群件共享文件,
余下的三个分区用于 ASM(存储所有 Oracle 数据库文件和闪回恢复区)。
在创建了所有必要分区后,现在应以 root 用户帐户在集群中所有计算机上使用以下语法将分区的更改情况通知给内核:
partprobe
6. 在集群中所有计算机上创建oracle用户和目录 /opt/oracle/app 用于安装oracle 数据库程序文件
/opt/oracle/ocfs2 用于Oracle 集群文件系统 (OCFS2) 的挂载点;/opt/oracle/crs用于安装oracle crs软件.
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
mkdir -p /opt/oracle/app
mkdir -p /opt/oracle/ocfs2
mkdir -p /opt/oracle/crs
chown -R oracle:oinstall /opt/oracle
chmod -R 775 /opt/oracle
passwd oracle
集群中所有计算机上修改oracle用户的.bash_profile文件如下所示
注意:当为每个 RAC 节点设置 Oracle 环境变量时,请确保为每个 RAC 节点分配唯一的 Oracle SID!
su - oracle
vi ~/.bash_profile
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/app
export ORA_CRS_HOME=/opt/oracle/crs
export ORACLE_SID=orcl1
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:ORA_CRS_HOME/bin:$ORACLE_BASE/common/oracle/bin
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
为每个 RAC 节点设置 root 环境变量
su - root
vi ~/.bash_profile
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:
注意,在第二个节点上,修改SID=orcl2
source ~/.bash_profile 使配置生效
7.集群中所有计算机上建立节点之间的互信
sudo vi /etc/ssh/sshd_config
PermitRootLogin yes
PubkeyAuthentication yes
sudo service sshd restart
采用ssh建立oracle用户的互信.
su - oracle
ssh-keygen -t dsa 一路回车结束
vi authorized_keys 加入集群中所有计算机(包括自己)~/.ssh/id_dsa.pub文件中的内容
exec ssh-agent $SHELL
ssh-add
ssh rac1(rac2...,rac1-priv...) date
应该在所有节点上跨集群的所有接口执行这些测试,注意:首次执行这些测试时,操作系统将显示一个密钥并请求用户接受或拒绝。
输入“Yes”将接受并注册此密钥。
8.安装配置ocfs2
使用与自己操作系统版本相符合的ocfs,ocfs console
rpm -Uvh ocfs2-2.6.9-42.EL-1.2.3-1.i686.rpm ocfs2console-1.2.1-1.i386.rpm ocfs2-tools-1.2.1-1.i386.rpm
在集群中所有计算机配置ocfs2
su root
作为根用户,执行以下命令
# ocfs2console &
Cluster
选择“Configure Nodes” 在客户端 1 上添加 2 个节点
rac1 10.1.250.17
rac2 10.1.250.18
单击 apply
Cluster
选择“Propogate Configuration”(发送至客户端 2)
退出 ocfs2console 后,将获得一个类似如下所示的 /etc/ocfs2/cluster.conf。需要在集群中的所有节点上完成该过程,
并且所有节点的 OCFS2 配置文件必须完全相同:
node:
ip_port = 7777
ip_address = 10.1.250.17
number = 0
name = linux1
cluster = ocfs2
node:
ip_port = 7777
ip_address = 10.1.250.18
number = 1
name = linux2
cluster = ocfs2
cluster:
node_count = 2
name = ocfs2
在使用 OCFS2 执行任何操作(如格式化或挂载文件系统)之前,我们需要先运行 OCFS2 的集群堆栈 O2CB
NM:用于跟踪 cluster.conf 中的所有节点的节点管理器
HB:当节点加入或离开集群时向上/向下发出通知的心跳服务
TCP:处理节点之间的通信
DLM:用于跟踪所有锁、这些锁的所有者和状态的分布式锁管理器
CONFIGFS:在 /config 中挂载的用户空间驱动的配置文件系统
DLMFS:用户空间与内核空间 DLM 的接口
已将以上所有集群服务打包到 o2cb 系统服务 (/etc/init.d/o2cb) 中。
调整 O2CB 心跳阈值 (驱动器越慢,心跳阀值设置越大。)
在集群的所有节点上执行以下操作。
/etc/init.d/o2cb unload
/etc/init.d/o2cb configure
Load O2CB driver on boot (y/n) [n]:y
Cluster to start on boot (Enter "none" to clear) [ocfs2]:ocfs2
O2CB_HEARTBEAT_THRESHOLD 设置为 301
确认 O2CB 心跳阈值的设置是否正确
cat /proc/fs/ocfs2_nodemanager/hb_dead_threshold
格式化 OCFS2 文件系统
注意:只能在 RAC 集群中的一个节点上创建 OCFS2 文件系统。为创建文件系统,我们使用 Oracle 可执行文件 mkfs.ocfs2
,以 root 用户帐户仅从 rac1 运行以下命令:
mkfs.ocfs2 -b 4K -C 32K -N 2 -L ocfs2 /dev/sda1
在所有节点上挂载 OCFS2 文件系统:
mount -t ocfs2 -o datavolume,nointr -L "ocfs2" /opt/oracle/ocfs2
将以下行添加到集群中两个 Oracle RAC 节点上的 /etc/fstab 文件中:
LABEL=ocfs2 /opt/oracle/ocfs2 ocfs2 _netdev,datavolume,nointr 0 0
注意用于挂载此文件系统的“_netdev”选项。OCFS2 卷必须使用 _netdev 挂载选项。
该挂载选项指示将在网络启动后挂载该卷,在关闭网络前卸载该卷。
使用 ls 命令检查/opt/oracle/ocfs2的所有权。应把权限设置为 0775,并将所有者设置为“oracle”、将组设置为“oinstall”。
reboot
再次检查以确保这些设置
mount
LABEL=ocfs2 /opt/oracle/ocfs2 ocfs2 type ocfs2 (rw,_netdev,datavolume,nointr,heartbeat=local)
cat /proc/fs/ocfs2_nodemanager/hb_dead_threshold
301
OCFS2 包含一个错误,即不会在每次引导时加载驱动程序,如果在每次引导时收到以下错误:
...
Mounting other filesystems:
mount.ocfs2:Unable to access cluster service
Cannot initialize cluster mount.ocfs2:
Unable to access cluster service Cannot initialize cluster [FAILED]
...
Red Hat 更改了在 chkconfig-1.3.11.2-1 与 chkconfig-1.3.13.2-1 之间注册服务的方式。O2CB 脚本习惯使用前者。
在尝试配置引导属性之前:
删除 /etc/init.d/o2cb 中的以下几行
### BEGIN INIT INFO
# Provides:o2cb
# Required-Start:
# Should-Start:
# Required-Stop:
# Default-Start: 2 3 5
# Default-Stop:
# Description:Load O2CB cluster services at system boot.
### END INIT INFO
重新注册 o2cb 服务。
chkconfig --del o2cb
chkconfig --add o2cb
chkconfig --list o2cb
o2cb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# ll /etc/rc3.d/*o2cb*
lrwxrwxrwx 1 root root 14 Sep 29 11:56 /etc/rc3.d/S24o2cb -> ../init.d/o2cb
该服务应为默认运行级别中的 S24o2cb。
继续设置引导属性,如下所示:
/etc/init.d/o2cb offline ocfs2
/etc/init.d/o2cb unload
/etc/init.d/o2cb configure
9. 安装,配置自动存储管理ASM2.0
在集群的全部节点上安装ASM2.0 rpm
rpm -Uvh oracleasm-2.6.9-42.EL-2.0.3-1.i686.rpm \
oracleasmlib-2.0.2-1.i386.rpm \
oracleasm-support-2.0.3-1.i386.rpm
执行/etc/init.d/oracleasm configure
默认用户输入oracle,默认组输入dba,其他都y,y就可以了
9.1创建ASM磁盘
在一个节点上执行
/etc/init.d/oracleasm createdisk VOL1 /dev/sda2
/etc/init.d/oracleasm createdisk VOL2 /dev/sda3
/etc/init.d/oracleasm createdisk VOL3 /dev/sda4
创建好后,执行/etc/init.d/oracleasm listdisks可以看到
VOL1
VOL2
VOL3
使用oracleasm-discover来探测ASM硬盘:
然后在另外节点上执行 应该可以看到相同的内容
/etc/init.d/oracleasm scandisks
/etc/init.d/oracleasm listdisks
oracleasm-discover
10. 集群的一个节点安装Oracle 10G cluster软件
如果运行的是 Red Hat Linux,则必须安装到集群中的每个 Oracle RAC 节点上。安装 cvuqdisk RPM(仅适用于 RHEL 用户)
如果没有 cvuqdisk,CVU 将无法发现共享磁盘,您在运行 CVU 时会收到错误消息“Package cvuqdisk not installed(程序包 cvuqdisk 未安装)”。
cvuqdisk RPM 可在 rpm 目录中的 Oracle 集群件安装介质中找到.
在 rac1 中找到 cvuqdisk RPM 并将其复制到 rac2,然后在两个 Oracle RAC 节点上执行以下步骤进行安装:
cd /opt/oracle/clusterware/rpm
rpm -iv cvuqdisk-1.0.1-1.rpm
利用 CVU 检查 CRS 的安装前任务
验证远程访问/用户等效性
应该从 rac1(将在该节点运行所有的 Oracle 安装)运行 CVU。运行 CVU 之前,
以 oracle 用户帐户登录并验证已针对集群中的所有节点配置了远程访问.
利用 CVU 检查 CRS 的安装前任务:
/opt/clusterware/cluvfy/runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
查看 CVU 报告。注意,报告中几个可以忽略的错误。
第一个错误有关“oinstall”组 [作为基本组] 中的用户“oracle”的成员资格。考虑到本文的目的,“oracle”用户帐户只能分配给“dba”组,
因此可以忽略该错误,没什么问题。
第二个错误与为 VIP 查找一组适合的接口有关。
最后一组可忽略的错误与处理 RHEL4 Update 4 中不存在的特定 RPM 程序包版本有关。例如:
compat-gcc-7.3-2.96.128
compat-gcc-c++-7.3-2.96.128
compat-libstdc++-7.3-2.96.128
compat-libstdc++-devel-7.3-2.96.128
这些特定的程序包在 CVU 报告中列为缺少,请确保在集群中的两个 Oracle RAC 节点上安装了正确版本的 compat-* 程序包。
例如,在 RHEL4 Update 4 中,这些程序包应为:
compat-gcc-32-3.2.3-47.3
compat-gcc-32-c++-3.2.3-47.3
compat-libstdc++-33-3.2.3-47.3
利用 CVU 检查硬件和操作系统设置
/opt/oracle/clusterware/cluvfy/runcluvfy.sh stage -post hwos -n rac1,rac2 -verbose
查看 CVU 报告。注意,报告中几个可以忽略的错误。
第一个错误有关“oinstall”组 [作为基本组] 中的用户“oracle”的成员资格。考虑到本文的目的,“oracle”用户帐户只能分配给“dba”组,因此可以忽略该错误,没什么问题。
第二个错误与为 VIP 查找一组适合的接口有关。这是 Metalink 说明 338924.1 中的一个错误文件:
Suitable interfaces for the private interconnect on subnet "192.168.2.0":
linux2 eth1:192.168.2.101
linux1 eth1:192.168.2.100
ERROR:
Could not find a suitable set of interfaces for VIPs.
Result: Node connectivity check failed.
如说明中所述,可以忽略该错误,没什么问题。
另请注意,如果检查共享存储可访问性将失败。
Checking shared storage accessibility...
WARNING:
Unable to determine the sharedness of /dev/sde on nodes:
linux2,linux2,linux2,linux2,linux2,linux1,linux1,linux1,linux1,linux1
Shared storage check failed on nodes "linux2,linux1".
该警告也可忽略,没什么问题。虽然我们知道这些磁盘可见并在集群中的两个 Oracle RAC 节点中共享,
但本身将失败。导致该错误的若干原因已得到证明。第一个原因来自 Metalink,
指出 cluvfy 当前没有使用 SCSI 设备之外的其他设备。这将包括设备(如 EMC PowerPath)和卷组(如 Openfiler 中的卷组)。
截至本文撰写之日,除了使用手动方法检测共享设备外没有其他解决方法。
该错误的另一个原因由 Oracle Corporation 的 Bane Radulovic 提出。他的研究表明,
CVU 在 Linux 上调用 smartclt 时,smartclt 不会从 iSCSI 设备返回序列号。
例如,针对 /dev/sde 进行的检查显示:
# /usr/sbin/smartctl -i /dev/sde
smartctl version 5.33 [i686-redhat-linux-gnu] Copyright (C) 2002-4 Bruce Allen
Home page is
Device: Openfile Virtual disk Version: 0
Serial number:
Device type: disk
Local Time is: Wed Oct 25 23:41:20 2006 EDT
Device supports SMART and is Disabled
Temperature Warning Disabled or Not Supported
安装 Oracle 10g 集群件软件
Oracle 集群件共享文件
系统将把由 Oracle 集群件使用的两个共享文件(实际上是文件组)存储到我们在前面创建的 Oracle 集群文件系统第 2 版 (OFCS2) 中。
这两个共享 Oracle 集群件文件组是:
Oracle 集群注册表 (OCR)
文件 1:/opt/oracle/ocfs2/OCRFile
文件 2:/opt/oracle/ocfs2/OCRFile_mirror
大小:(2 * 100MB) = 200M
CRS 表决磁盘
文件 1:/opt/oracle/ocfs2/CSSFile
文件 2:/opt/oracle/ocfs2/CSSFile_mirror1
文件 3:/opt/oracle/ocfs2/CSSFile_mirror2
大小:(3 * 20MB) = 60MB
注意:不能对这两个共享 Oracle 集群件文件使用自动存储管理 (ASM):Oracle 集群注册表 (OCR) 或 CRS 表决磁盘 文件。
问题是只有这两个文件就绪并可以访问后才可以启动 Oracle 实例。要使 ASM 可用,应首先运行 ASM 实例。
另请注意,可以将这两个共享文件存储到 OCFS2、共享的原始设备或其他供应商的集群化文件系统中。
以oracle用户登录X终端,建立集群中所有计算机上节点之间的互信!
exec ssh-agent $SHELL
ssh-add
开始安装cluster软件
clusterware unzip 目录./runInstaller
*确认安装目录是/opt/oracle/crs
*如果愿意可以将clustername由crs修改成其他的名称
*添加两个节点,如下所示
____________________________________________________________________
Public Node Name Private Node Name Virtual Node Name
rac1 rac1-priv rac1-vip
rac2 rac2-priv rac2-vip
____________________________________________________________________
*要修改一下eth0的类型,他默认的是private,修改为public
*指定OCR和mirror的路径
Specify OCR Location: /opt/oracle/crs/OCRFile
Specify OCR Mirror Location:/opt/oracle/crs/OCRFile_mirror
*指定Voting磁盘路径
Voting Disk Location: /opt/oracle/crs/CSSFile
Additional Voting Disk 1 Location:/opt/oracle/crs/CSSFile_mirror1
Additional Voting Disk 2 Location:/opt/oracle/crs/CSSFile_mirror2
*安装快结束时.会要求以root执行orainsRoot.sh和root.sh脚本,以root用户打开一个新的终端,一个一个节点顺序执行,
千万不要抢时间一起执行
*执行最后一个root.sh的时候,可能会报""eth0" is not public.Public interfaces should be used to configure virtual IPs."
这样的错误.最简单的变通方法是从出现错误的上一个节点中以 root 用户的身份手动重新运行 vipca (GUI)。
请记住,vipca 是一个 GUI.
$ORA_CRS_HOME/bin/vipca
出现“VIP Configuration Assistant”时,我按如下所示回应屏幕提示:
Network interfaces: 选择两个接口 — eth0 和 eth1
选择两个节点,配置一下虚拟ip的信息:rac1-vip,rac2-vip.
* 选择"ok","exit".退出vipca.
这时,才能返回CRS安装界面选择"ok",运行三个脚本后,选择"exit" 至此,clusterware安装就ok了.
检查一下集群节点
$ORA_CRS_HOME/bin/olsnodes -n
rac1 1
rac2 2
验证crs安装
/opt/oracle/crs/bin/crs_stat
NAME=ora.rac1.gsd
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac1
NAME=ora.rac1.ons
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac1
NAME=ora.rac1.vip
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac1
NAME=ora.rac2.gsd
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac2
NAME=ora.rac2.ons
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac2
NAME=ora.rac2.vip
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac2
检查 Oracle 集群件自动启动脚本
ls -l /etc/init.d/init.*
如果发现因 CSS 后台程序超时引起的问题。
错误在日志文件 $ORA_CRS_HOME/css/log/ocssd1.log 中记录为:
clssnmDiskPingMonitorThread:voting device access hanging (45010 miliseconds)
驱动器越慢,这种情况就越经常出现。需要将misscount修改为 360
只启动集群中的一个节点!
从一个节点中,以 root 用户帐户的身份登录并键入:
/opt/oracle/crs/bin/crsctl set css misscount 360
重新引导此单个节点 ,启动集群中的所有其他节点。
安装失败删除CRS的方法(先建立集群中所有计算机上节点之间的互信和X WINDWOS 环境!)
su - root
chown oracle.oinstall /opt/oracle/crs
su - oracle(建立集群中所有计算机上节点之间的互信和X WINDWOS 环境!)
./runInstall-->deinstall-->所有Oracle 10g软件-->remove
rm -rf /etc/ora* /opt/oracle/oraInventory/ /opt/oracle/crs /tmp/* /etc/init.d/init* /opt/oracle/ocfs2/*
reboot
11. 安装Oracle 10g软件 (先建立集群中所有计算机上节点之间的互信和X WINDWOS 环境!)
安装 Oracle 数据库软件之前,我们应该使用集群验证实用程序 (CVU) 运行以下数据库安装前检查。
/opt/oracle/clusterware/cluvfy/runcluvfy.sh stage -pre dbinst -n rac1,rac2 -r 10gR2 -verbose
查看 CVU 报表。注意,该报表将包含我们在检查 CRS 安装前任务时收到的错误:找不到一组合适的 VIP 接口,
以及找不到 RHEL4 Update 中不存在的特定 RPM 程序包。可以忽略这两个错误,没什么问题。
Oracle的安装需要注意
Name: OraDb10g_home1 Location:/opt/oracle/app
*节点的选择上,一定要选上所有的节点.
*保留其他默认值
*选择 "Install database software only",先不要建instance,等数据库安装完毕后时候dbca创建
*安装完成后,需要执行root.sh脚本,(从运行数据库安装的节点开始)不要着急,一个节点一个节点执行
安装结束时,退出 OUI
12. 建立TNS侦听 (先建立集群中所有计算机上节点之间的互信和X WINDWOS 环境!)
集群的一个节点以oracle用户执行
$ netca &
*选择所有节点
*选择Listener configuration
*其他的都选择默认即可
结束后可以验证一下侦听是否已经在所有节点上运行
ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'
应该可以看到
LISTENER_RAC1
另外一个节点应该是
LISTENER_RAC2
13. 创建数据库实例 (先建立集群中所有计算机上节点之间的互信和X WINDWOS 环境!)
在执行 DBCA 前,确保为 ORACLE环境正确设置了 $ORACLE_HOME 和 $PATH
以oracle用户在任一节点执行
dbca &
*选择 Create a Database
*选择所有节点
*选择Custom Database
*全局数据库名输入orcl,SID也是orcl
*择 Use the Same Password for All Accounts。输入口令(两次)并确保此口令不是以数字开头。
*存储选项选择 use ASM
*提供要用于新 ASM 实例的 SYS 口令。
此外,从第 2 版开始,ASM 实例服务器参数文件 (SPFILE) 可以位于共享磁盘上。
您将需要修改“Create server parameter file (SPFILE)”的默认条目以驻留在 OCFS2 分区上,
如下所示:/opt/oracle/ocfs2/dbs/spfile+ASM.ora。所有其他选项可以保留其默认值。
然后将有一个对话框询问您是否要创建并启动 ASM 实例。选择 OK 按钮确认此对话框。
OUI 将立即在 RAC 集群的所有节点上创建并启动 ASM 实例。
*在ASM Disk Groups配置界面,选择Create New,会显示之前通过ASMlib创建的3个卷VOL1到VOL3
如果在本文前面部分创建的卷没有显示在“Select Member Disks”窗口中:(ORCL:VOL1、ORCL:VOL2 和 ORCL:VOL3),
则单击“Change Disk Discovery Path”按钮并输入“ORCL:VOL*”。对于第一个“Disk Group Name”,我使用了字符串“DATA”。
在“Select Member Disks”窗口中选择前两个 ASM 卷(ORCL:VOL1 和 ORCL:VOL2)。将“Redundancy”设置为“Normal”。
这两列现在的状态应为“PROVISIONED”。确认此窗口中的所有值均正确后,单击 [OK] 按钮。
这将显示“ASM Disk Group Creation”对话框。完成 ASM 磁盘组创建过程时,将返回到“ASM Disk Groups”窗口。
再次单击 Create New 按钮。对于第二个“Disk Group Name”,使用字符串 FLASH。
在“Select Member Disks”窗口中选择最后一个 ASM 卷 (ORCL:VOL3)。将“Redundancy”选项设置为“External”。
最后一个卷的状态也将更改为“PROVISIONED”。确认此窗口中的所有值均正确后,单击 [OK] 按钮。
这将显示“ASM Disk Group Creation”对话框。完成 ASM 磁盘组创建过程后,您将返回到“ASM Disk Groups”窗口,
其中创建并选择了两个磁盘组。使用新创建的 Disk Group Name ORCL_DATA1 旁边的复选框选择一个磁盘组
(确保未选择 FLASH_RECOVERY_AREA 的磁盘组),然后单击 [Next] 继续。
*Database File Locations 选择DATA
*Recovery Configuration 选择FLASH_RECOVERY_AREA ,DATA Redundancy,选择externel,使用磁盘组名称 +FLASH
如果使用的磁盘组的大小约为 100GB。可以使用 90GB 的 Flash Recovery Area Size
*Database Content所有数据库组件(和目标表空间)设置为它们的默认值
数据库字符集选Simplified Chinese ZHS16GBK
*Service name 可以输入taf,TAF Policy选择Basic
*Database Storage 可以保留其默认值。
完成dbca,Oracle RAC就已经完全安装成功了!
安装失败删除Oracle 10g软件的方法
./runInstall-->deinstall-->所有Oracle 10g软件-->remove
rm -rf /opt/oracle/app/* /opt/oracle/ocfs2/* /usr/local/bin/dbhome /usr/local/bin/oraenv
rm -rf /etc/ora* /opt/oracle/oraInventory/ /opt/oracle/admin /opt/oracle/crs /tmp/* /etc/init.d/init*
delete ASM磁盘
在一个节点上执行
/etc/init.d/oracleasm deletedisk VOL1
/etc/init.d/oracleasm deletedisk VOL2
/etc/init.d/oracleasm deletedisk VOL3
重新创建ASM磁盘
在一个节点上执行
/etc/init.d/oracleasm createdisk VOL1 /dev/sda2
/etc/init.d/oracleasm createdisk VOL2 /dev/sda3
/etc/init.d/oracleasm createdisk VOL3 /dev/sda4
/etc/init.d/oracleasm listdisks
然后在另外节点上执行
/etc/init.d/oracleasm scandisks
/etc/init.d/oracleasm listdisks
重新格式化OCFS2 分区
mkfs.ocfs2 -b 4k -C 32k -N 2 -L ocfs2 /dev/sda1
reboot
14. 验证 RAC 集群和数据库配置
有五个为 SRVCTL 定义的节点级任务:
添加和删除节点级应用程序
设置和取消设置节点级应用程序的环境
管理节点应用程序
管理 ASM 实例
启动和停止一组包含虚拟 IP 地址、监听器、Oracle 通知服务和 Oracle 企业管理器代理的程序(出于维护目的)。
所有实例和服务的状态
$ srvctl status database -d orcl
Instance orcl1 is running on node rac1
Instance orcl2 is running on node rac2
单个实例的状态
$ srvctl status instance -d orcl -i orcl2
Instance orcl2 is running on node rac2
在数据库全局命名服务的状态
$ srvctl status service -d orcl -s taf
Service orcltest is running on instance(s) orcl2, orcl1
特定节点上节点应用程序的状态
$ srvctl status nodeapps -n rac1
VIP is running on node:rac1
GSD is running on node:rac1
Listener is running on node:rac1
ONS daemon is running on node:rac1
ASM 实例的状态
$ srvctl status asm -n rac1
ASM instance +ASM1 is running on node rac1.
列出配置的所有数据库
$ srvctl config database
orcl
显示 RAC 数据库的配置
$ srvctl config database -d orcl
显示指定集群数据库的所有服务
$ srvctl config service -d orcl
orcltest PREF:orcl2 orcl1 AVAIL:
显示节点应用程序的配置 -(VIP、GSD、ONS、监听器)
$ srvctl config nodeapps -n rac1 -a -g -s -l
VIP exists.:/vip-linux1/192.168.1.200/255.255.255.0/eth0:eth1
GSD exists.
ONS daemon exists.
Listener exists.
显示 ASM 实例的配置
$ srvctl config asm -n linux1
+ASM1 /u01/app/oracle/product/10.2.0/db_1
RAC的启动和关闭
如果都遵循了上面的安装步骤,那么每次节点重新启动的时候,所有服务都会自动启动,如果需要关闭或者启动某个节点,如下所示
*停止RAC
emctl stop dbconsole
srvctl stop instance -d orcl -i orcl1
srvctl stop instance -d orcl -i orcl2
srvctl stop asm -n rac1
srvctl stop asm -n rac2
srvctl stop nodeapps -n rac1
srvctl stop nodeapps -n rac2
*启动RAC
和上面的步骤正好相反即
srvctl start nodeapps -n rac1
srvctl start nodeapps -n rac2
srvctl start asm -n rac1
srvctl start asm -n rac2
srvctl start instance -d orcl -i orcl2
srvctl start instance -d orcl -i orcl1
emctl start dbconsole
使用 SRVCTL 启动/停止所有实例
启动/停止所有实例及其启用的服务。
srvctl start database -d orcl
srvctl stop database -d orcl