本文描述了在两个节点组成的RAC中一个节点硬盘损坏,恢复一个节点的过程。
suse 9.0
oracle@ndb1:~> uname -a
Linux ndb1 2.6.5-7.202.7-bigsmp #1 SMP Tue Nov 29 14:32:53 UTC 2005 i686 i686 i386 GNU/Linux
oracle@ndb1:~>
Linux ndb1 2.6.5-7.202.7-bigsmp #1 SMP Tue Nov 29 14:32:53 UTC 2005 i686 i686 i386 GNU/Linux
oracle@ndb1:~>
恢复RAC节点1操作步骤
一、安装oracle软件
一、安装oracle软件
1.准备oracle安装软件
cpio -idmv< ship_9204_linux_disk1.cpio
cpio -idmv< ship_9204_linux_disk1.cpio
cpio -idmv< ship_9204_linux_disk1.cpio
unzip p3948480_9206_LINUX.zip
2. RAC服务器 1 (hostname : ndb1)
设备 IP 地址 子网 用途
Eth0 100.188.32.1 255.255.255.0 连接ndb1与公共网络,接受外部的数据请求
Eth1 192.168.1.1 255.255.255.0 用于RAC中ndb1、ndb2内部通讯
用vi 编辑/etc/hosts文件,增加如下内容:
100.188.32.1 ndb1
#100.188.32.2 ndb2
192.168.1.1 pdb1
#192.168.1.2 pdb2
3.
加载hangcheck-timer模块
#modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
检查hangcheck-timer模块
#lsmod | grep hangcheck_timer
4.
创建 UNIX oracle 用户帐号
#groupadd -g 500 dba
#groupadd -g 501 oinstall
#useradd -u 500 -g dba -G oinstall -m -s /bin/bash oracle
#mkdir /opt/oracle/oradata
#chown oracle.dba /opt/oracle/oradata
#chmod 775 /opt/oracle/oradata
ulimit -n 65536
ulimit -u 16384
5
设置环境变量
用vi修改~/.bash_profile文件,增加如下内容
oracle@ndb1:~> cat .bash_profile
export LC_ALL=en_US
export ORACLE_HOME=/opt/oracle/product/9ir2
export ORACLE_SID=yldb1
export NLS_LANG=american_america.zhs16gbk
export SQLPATH=$ORACLE_HOME/rdbms/admin/
ORACLE_BASE=/opt/oracle
export ORACLE_BASE
ORA_NLS33=/opt/oracle/product/9ir2/ocommon/nls/admin/data
export ORA_NLS33
LD_LIBRARY_PATH=/opt/oracle/product/9ir2/lib
PATH=/opt/oracle/product/9ir2/bin:/usr/bin:/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/java/jre/bin:/opt/oracle/product/9ir2/bin
export PATH LD_LIBRARY_PATH
CLASSPATH=/opt/oracle/product/9ir2/JRE:/opt/oracle/product/9ir2/jlib:/opt/oracle/product/9ir2/rdbms/jlib:/opt/oracle/product/9ir2/network/jlib
export CLASSPATH
TNS_ADMIN=/opt/oracle/product/9ir2/network/admin
LANG=zh_CN.UTF-8
export TNS_ADMIN LANG
6
修改内核参数
#echo 250 32000 100 128 > /proc/sys/kernel/sem --在rac_prepare.sh中设置
#echo 2147483648 > /proc/sys/kernel/shmmax
#echo 65536 > /proc/sys/fs/file-max
#echo 1 > /proc/sys/vm/disable_cap_mlock
#echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range
#echo 262144 > /proc/sys/net/core/wmem_max
#echo 262144 > /proc/sys/net/core/wmem_default
#echo 262144 > /proc/sys/net/core/rmem_max
#echo 262144 > /proc/sys/net/core/rmem_default
7
应用p3006854_9204_LINUX
共享裸设备
需用到CMQuorumFile,SrvConfigFile文件
所有的文件都在/opt/oracle/oradata/yldb/下建立
安装Oracle 9.2.0.4 ORACM (Oracle Cluster Manager)
执行下面命令:
oracle@ndb1> /install/Disk1/runInstaller
8
安装oracle OUI 10.1.0.2
执行下面命令:
oracle@ndb1> /install/p3948480_9206_LINUX/Disk1/runInstaller
9
安装oracle 9.2.0.6 ORACM补丁
运行OUI 10.1.0.2,将oracle 9.2.0.4 ORACM升级到oracle 9.2.0.6 ORACM。执行下面命令:
oracle@ndb1> /install/p3948480_9206_LINUX/Disk1/runInstaller
10
安装Oracle RAC 9.2.0.4
为了避免BUG 3547724,建符号连接
# mkdir /u04/oradata
# chmod 777 /u04/oradata
# ln -s /u04/oradata /oradata
oracle@ndb1> /install/Disk1/runInstaller
选择只安装软件
rm -rf /oradata
11
安装Oracle RAC 9.2.0.6补丁
从oracle 9.2.0.6 补丁安装文件所在的目录运行runInstaller:
oracle@ndb1> /install/p3948480_9206_LINUX/Disk1/runInstaller
二、加入RAC设置
准备:
数据库全备
1.
ndb1>
su - root
用vi 编辑/etc/hosts文件,修改如下内容:
100.188.32.1 ndb1
100.188.32.2 ndb2
192.168.1.1 pdb1
192.168.1.2 pdb2
在两台服务器上依次执行命令:
#ping ndb1
#ping ndb2
#ping pdb1
#ping pdb2
看能否得到正确的IP地址
2.执行脚本
./rac_mount_nfs.sh
oracle@ndb1:~> cat rac_mount_nfs.sh
mount -t nfs 100.188.32.2:/opt/oracle/oradata/yldb/archive02 /opt/oracle/oradata/yldb/archive02/
./rac_prepare.sh
oracle@ndb1:~> cat rac_prepare.sh
echo 250 32000 100 128 > /proc/sys/kernel/sem
echo 2147483648 > /proc/sys/kernel/shmmax
echo 65536 > /proc/sys/fs/file-max
echo 1 > /proc/sys/vm/disable_cap_mlock
modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
lsmod | grep hang
#new added at Dec 14 2011
echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range
echo 262144 > /proc/sys/net/core/wmem_max
echo 262144 > /proc/sys/net/core/wmem_default
echo 262144 > /proc/sys/net/core/rmem_max
echo 262144 > /proc/sys/net/core/rmem_default
#fdisk -l|grep Disk
#/etc/init.d/PowerPath start
for i in `seq 1 10`
do
raw /dev/raw/raw$(( i+0 )) /dev/emcpowera$(( i+4 ))
done
for i in `seq 1 10`
do
raw /dev/raw/raw$(( i+10 )) /dev/emcpowerb$(( i+4))
done
for i in `seq 1 10`
do
raw /dev/raw/raw$(( i+20 )) /dev/emcpowerc$(( i+4))
done
for i in `seq 1 10`
do
raw /dev/raw/raw$(( i+30 )) /dev/emcpowerd$(( i+4))
done
for i in `seq 1 10`
do
raw /dev/raw/raw$(( i+40 )) /dev/emcpowere$(( i+4))
done
for i in `seq 1 10`
do
raw /dev/raw/raw$(( i+50 )) /dev/emcpowerf$(( i+4))
done
for i in `seq 1 60`
do
chmod 664 /dev/raw/raw$i
chown oracle.dba /dev/raw/raw$i
done
#$ORACLE_HOME/oracm/bin/ocmstart.sh
head -1 $ORACLE_HOME/oracm/log/cm.log
cat $ORACLE_HOME/oracm/log/cm.log|grep version
ps -ef | grep oracm
su - oracle
3.
开启RSH和SSH
两个节点重新配置
首先将节点2 oracle主目录下.ssh改名
#mkdir -p .ssh
#chmod 700 .ssh
SSH的配置 :
oracle用户登陆
oracle@ndb1>cd ~/.ssh/
oracle@ndb1>ssh-keygen -t rsa
oracle@ndb1>ssh-keygen -t dsa
oracle@ndb1>ssh ndb1 cat /opt/oracle/.ssh/id_rsa.pub >>authorized_keys
oracle@ndb1>ssh ndb1 cat /opt/oracle/.ssh/id_dsa.pub >>authorized_keys
oracle@ndb1>ssh oracle@ndb2 cat /opt/oracle/.ssh/id_rsa.pub >>authorized_keys
oracle@ndb1>ssh oracle@ndb2 cat /opt/oracle/.ssh/id_dsa.pub >>authorized_keys
oracle@ndb1>scp authorized_keys ndb2:/home/oracle/.ssh/
oracle@ndb1>chmod 644 authorized_keys
oracle@ndb2>cd ~/.ssh/
oracle@ndb2>ssh-keygen -t rsa
oracle@ndb2>ssh-keygen -t dsa
oracle@ndb2>ssh ndb1 cat /opt/oracle/.ssh/id_rsa.pub >>authorized_keys
oracle@ndb2>ssh ndb1 cat /opt/oracle/.ssh/id_dsa.pub >>authorized_keys
oracle@ndb2>ssh oracle@ndb1 cat /opt/oracle/.ssh/id_rsa.pub >>authorized_keys
oracle@ndb2>ssh oracle@ndb1 cat /opt/oracle/.ssh/id_dsa.pub >>authorized_keys
oracle@ndb2>scp authorized_keys ndb1:/home/oracle/.ssh/
oracle@ndb2>chmod 644 authorized_keys
在每个节点执行如下
# ssh ndb1 date
# ssh ndb2 date
添加下面内容
ndb2:/etc # cat hosts.equiv
#
# hosts.equiv This file describes the names of the hosts which are
# to be considered "equivalent", i.e. which are to be
# trusted enough for allowing rsh(1) commands.
#
# hostname
+ndb1 oracle
+pdb1 oracle
+ndb2 oracle
+pdb2 oracle
4.
配置共享设备
su - oracle
/opt/oracle/oradata/yldb
先改名CMQuorumFile等内容,
mv CMQuorumFile CMQuorumFile.old
mv SrvConfigFile SrvConfigFile.old
在/opt/oracle/oradata/yldb下做符号联接。
ln -s /dev/raw/raw1 CMQuorumFile
ln -s /dev/raw/raw20 SrvConfigFile
ln -s /dev/raw/raw21 control01.ctl
ln -s /dev/raw/raw22 control02.ctl
ln -s /dev/raw/raw23 control03.ctl
ln -s /dev/raw/raw57 dape01.dbf
ln -s /dev/raw/raw51 jablog01.dbf
ln -s /dev/raw/raw52 jablog02.dbf
ln -s /dev/raw/raw53 jablog03.dbf
ln -s /dev/raw/raw54 jablog_blob01.dbf
ln -s /dev/raw/raw55 jablog_blob02.dbf
ln -s /dev/raw/raw56 jablog_blob03.dbf
ln -s /dev/raw/raw36 redo01.log
ln -s /dev/raw/raw37 redo02.log
ln -s /dev/raw/raw38 redo03.log
ln -s /dev/raw/raw39 redo04.log
ln -s /dev/raw/raw49 redo05.log
ln -s /dev/raw/raw50 redo06.log
ln -s /dev/raw/raw15 spfileyldb.ora
ln -s /dev/raw/raw24 system01.dbf
ln -s /dev/raw/raw25 temp01.dbf
ln -s /dev/raw/raw28 tools01.dbf
ln -s /dev/raw/raw26 undotbs01.dbf
ln -s /dev/raw/raw27 undotbs02.dbf
ln -s /dev/raw/raw29 users01.dbf
su - root
5.
检查ocm版本,要求一致
/opt/oracle/product/9ir2/oracm/log] # grep -i version cm.log | more
修改配置
vi $ORACLE_HOME/oracm/admin/cmcfg.ora
ClusterName=Oracle Cluster Manager, version 9i
MissCount=215
PrivateNodeNames=pdb1 pdb2
PublicNodeNames=ndb1 ndb2
ServicePort=9998
CmDiskFile=/opt/oracle/oradata/yldb/CMQuorumFile
KernelModuleName=hangcheck-timer
HostName=pdb1
启动oracm
cd /opt/oracle/product/9ir2/oracm/bin
./ocmstart.sh
oracm &1 >/opt/oracle/product/9ir2/oracm/log/cm.out&
检查启动的日至
head -1 $ORACLE_HOME/oracm/log/cm.log
cat $ORACLE_HOME/oracm/log/cm.log|grep version
ps -ef | grep oracm
su - oracle
6.
gsdctl 启动
gsdctl start
7.生成pfile
登陆节点2
用超级用户登陆数据库
sql>create pfile='/opt/oracle/product/9ir2/dbs/init_new.ora' from spfile;
8.从节点2拷贝oracle文件
listener
tnsname文件拷贝
以下相同的目录直接拷贝
/opt/oracle/admin
/opt/oracle/rac*.sh
/opt/oracle/backup
/opt/oracle/oraclejob
/opt/oracle/product/9ir2/dbs 有符号连接,不能直接拷贝
cp init_new.ora
ln -s /opt/oracle/oradata/yldb/spfileyldb.ora spfileyldb.ora
ln -s /opt/oracle/oradata/yldb/spfileyldb.ora spfileyldb1.ora
ln -s /opt/oracle/oradata/yldb/spfileyldb.ora spfileyldb2.ora
创建目录
/opt/oracle/oradata/yldb/archive01
/opt/oracle/oradata/yldb/archive02
将ndb2:/opt/oracle/oradata/yldb/archive01/ 拷贝过来 /opt/oracle/oradata/yldb/archive01
scp -r /opt/oracle/oradata/yldb/archive01/*.dbf oracle@100.188.32.1:/opt/oracle/oradata/yldb/archive01
9.
实例的启动
su - oracle
startup pfile='/opt/oracle/product/9ir2/dbs/init_new.ora';