一、前言
本文介绍在vmware workstation环境下,基于suse11sp1操作系统安装Oracle11g RAC+ASM 数据库(两节点)。
1.1 RAC中的基本概念
安装ORACLE RAC+ASM前,您可能需要事先简要的了解RAC,CRS,ASM的概念。
1.1.1 CRS
CRS是Cluster-Ready Services的缩写,是ORACLE公司自己开发的一个集群管理工具,ORACLE 11g中的RAC集群就是用CRS工具管理的。
在以前的版本中,Oracle RAC必须借助第三方Cluster软件(如VCS)进行集群管理,通讯,数据同步等功能,而在Oracle 11g中,可以使用ORACLE的CRS工具来管理RAC集群各节点的集群管理,通讯,数据同步等功能。
CRS是一个单独的产品,在构建RAC环境中,需要在每个节点上单独安装。
1.1.2 ASM
ASM全称为Automated Storage Management,是ORACLE公司自行开发的存储管理软件,用于替代操作系统所提供的LVM来管理存储,数据文件。
在Oracle 10g这个版本之前,管理一个大型数据库成百上千个的数据文件对数据库管理员来说是一个既无技术含量又十分枯燥的工作,这要求数据库管理员要熟悉一些系统的LVM的相关知识,做好磁盘规划,LV的条带等相关的系统方面的相关操作。
而使用ASM将大大减轻这方面的工作量,数据库管理员只需要管理少数几个磁盘组即可。一个磁盘组是ASM管理的一个逻辑单元,由一组磁盘设备组成。我们可以定义一个磁盘组作为数据库的默认磁盘组,Oracle会自动管理存储,包括创建、删除数据文件等。Oracle会自动将这些文件与一个合适的数据库对象做关联,这样我们在管理这些对象时只需要提供对象的名称,而无需像以前那样提供详细的文件名。
本文中的“ASM实例”是指用ASM来管理数据文件的数据库实例。
二、运行环境
2.1 硬件环境
2.1.1 虚拟机版本
Vmware workstation:10.0.1 build-1379776(分配2CPU,2G内存,40G本地硬盘,2块网卡)
操作系统:Suse 11 sp1(SUSE 10 SP2也可以)
Oracle:Oracle11.1.0.7.0
2.1.2 检查软件包
# rpm -q package_name
对于Suse linux要求至少具备以下安装包,且各安装包的版本不低于以下各包的版本:
binutils-2.16.91.0.5
compat-libstdc++-5.0.7-22.2
gcc-4.1.0
gcc-c++-4.1.0
glibc-2.4-31.2
glibc-32bit-2.4-31.2 (32 bit)
glibc-devel-2.4
glibc-devel-32bit-2.4 (32 bit)
libaio-0.3.104
libaio-32bit-0.3.104 (32 bit)
libaio-devel-0.3.104
libelf-0.8.5
libgcc-4.1.0
libstdc++-4.1.0
libstdc++-devel-4.1.0
make-3.80
sysstat-6.0.2
unixODBC-2.2.11
unixODBC-devel-2.2.11
2.1.3 删除多余的软件包
1. 删除orarun包。
# rpm -qa ora*
orarun-1.9-21.15
# rpm -e orarun-1.9-21.15
2. 删除sqpinit包。
# rpm -qa sap*
sapinit-2.0.1-1.10
# rpm -e sapinit-2.0.1-1.10
3. 删除/etc/oraInst.loc文件。
# rm –i /etc/oraInst.loc
2.1.4 安装介质
安装包 | 描述 |
---|---|
linux.x64_11gR1_clusterware.zip | 11.1.0.6 ClusterWare |
linux.x64_11gR1_database_1013.zip | 11.1.0.6 Database |
p6890831_111070_Linux-x86-64.zip | 11.1.0.7.0补丁包 |
2.1.5 操作系统规划
说明
对于安装Oracle RAC的操作系统,主机名不要有大写字母和中划线。
2.1.6 IP地址规划
IP地址规划如下表所示。(注意主机名不要有“-”等特殊字符)
参数 | A机 | B机 |
---|---|---|
主机名 | rac1 | rac2 |
public网卡IP地址(eth0) | 192.168.10.61 | 192.168.10.62 |
public网卡IP掩码 | 255.255.255.0 | 255.255.255.0 |
public网卡IP网关 | 192.168.10.1 | 192.168.10.1 |
虚拟IP(VIP) | 192.168.10.51 | 192.168.10.52 |
私有网卡IP地址(eth1) | 192.168.1.61 | 192.168.1.62 |
私有网卡IP掩码 | 255.255.255.0 | 255.255.255.0 255.255.255.0 |
私有网卡IP网关 | 不配置 | 不配置 |
对于RAC中每一个节点:
需要2个公有IP地址,用于配置公网业务网卡和虚拟IP(VIP)。
需要1个私有IP地址,不需配置网关。
浮动(virtual)IP无须手工配置网卡,只需写入/etc/hosts文件,安装RAC时会自动设置,它必须与公网public IP处于同一网段。
例如:
rac1:~ # ifconfig
eth0 Link encap:Ethernet HWaddr 00:25:9E:80:DF:E4inet addr:192.168.1.61 Bcast:192.168.1.255 Mask:255.255.255.0UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1RX packets:48476 errors:0 dropped:0 overruns:0 frame:0TX packets:22813 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:63574027 (60.6 Mb) TX bytes:2168026 (2.0 Mb)eth1 Link encap:Ethernet HWaddr 00:25:9E:80:DF:E6inet addr:192.168.10.61 Bcast:10.69.11.255 Mask:255.255.255.0UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1RX packets:3024598 errors:0 dropped:0 overruns:0 frame:0TX packets:1514891 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:4113073257 (3922.5 Mb) TX bytes:178111512 (169.8 Mb)
虚拟机配置:
2.1.7 本地磁盘空间分配
对于本地磁盘空间划分,要求RAC的各节点保持一致。(测试环境够用即可)
分区 | 空间(GB) | 文件系统类型 |
---|---|---|
/swap | 16 | |
/ | 30 | reiser |
/home | 8 | ext3 |
/opt | 8 | ext3 |
/opt/oracle | 20 | ext3 |
/opt/oracrs | 20 | ext3 |
/opt/orabak | 20 | ext3 |
2.1.8 共享磁盘规划
为模拟存储,虚拟机创建5个共享磁盘:(注意两个节点添加的硬盘的顺序要保持一致),以下为磁盘规划及大小,实际安装不需要严格按此划分。
共享磁盘名称 | 大小(根据实际需要调整) | 作用 |
---|---|---|
lun_ocr.vmdk | 1GB | 存放集群注册表OCR。 |
lun_vote.vmdk | 1GB | 存放集群锁盘文件Voting Disk。 |
lun_data.vmdk | 10GB | 存放Oracle系统表空间数据文件。 |
lun_ora.vmdk | 10GB | 存放应用数据表空间数据文件、应用索引表空间数据文件。 |
lun_arch1.vmdk | 2GB | 如果数据库要开启归档模式,用于创建节点一使用的归档目录/archivelog1,属组为oracle:dba。文件类型ext3。 |
lun_arch2.vmdk | 2GB | 如果数据库要开启归档模式,用于创建节点二使用的归档目录/archivelog2,属组为oracle:dba。文件类型ext3。 |
开始-运行-cmd,cd进入vmware安装目录,执行如下命令创建共享磁盘。
vmware-vdiskmanager.exe -c -s 1GB -a lsilogic -t 4 "Z:\RAC-DISK\lun_ocr.vmdk"
vmware-vdiskmanager.exe -c -s 1GB -a lsilogic -t 4 "Z:\RAC-DISK\lun_vote.vmdk"
vmware-vdiskmanager.exe -c -s 10GB -a lsilogic -t 4 "Z:\RAC-DISK\lun_data.vmdk"
vmware-vdiskmanager.exe -c -s 10GB -a lsilogic -t 4 "Z:\RAC-DISK\lun_ora.vmdk"
vmware-vdiskmanager.exe -c -s 2GB -a lsilogic -t 4 "Z:\RAC-DISK\lun_arch1.vmdk"
vmware-vdiskmanager.exe -c -s 2GB -a lsilogic -t 4 "Z:\RAC-DISK\lun_arch2.vmdk"
虚拟机添加磁盘选择添加已经存在的磁盘
下面这个提示选择“保持现有格式”即可。
创建后在高级设置中将硬盘分配到SCSI1:X下面
打开虚拟机存放目录的vmx配置文件,本例为SUSE11-1.vmx和SUSE11-2.vmx
检查如下配置,如不一致需要更改,注意检查下原来有没有相关配置项,以免冲突。
disk.locking= "FALSE"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize="0"
diskLib.DataCacheMinReadAheadSize="0"
diskLib.dataCachePageSize="4096"
diskLib.maxUnsyncedWrites="0"
scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsi1:1.present = "TRUE"
scsi1:1.fileName = "Z:\RAC-DISK\lun_ocr.vmdk"
scsi1:2.present = "TRUE"
scsi1:2.fileName = "Z:\RAC-DISK\lun_vote.vmdk"
scsi1:3.present = "TRUE"
scsi1:3.fileName = "Z:\RAC-DISK\lun_ora.vmdk"
scsi1:4.present = "TRUE"
scsi1:4.fileName = "Z:\RAC-DISK\lun_data.vmdk"
scsi1:5.present = "TRUE"
scsi1:5.fileName = "Z:\RAC-DISK\lun_arch1.vmdk"
scsi1:6.present = "TRUE"
scsi1:6.fileName = "Z:\RAC-DISK\lun_arch2.vmdk"
三、安装前准备
3.1 创建名为dba的操作系统组
以root用户登录,分别在RAC各节点上执行。
【检查命令】
# grep dba /etc/group
无输出则表示dba组不存在。如果dba组已存在,则使用以下命令删除dba组。
【删除命令】
# groupdel dba
【创建命令】
# groupadd -g 200 dba
3.2 创建名为oinstall的操作系统组
以root用户登录,分别在RAC各节点上执行。
【检查命令】
# grep oinstall /etc/group
无输出则表示oinstall组不存在。如果oinstall组已存在,则使用以下命令删除oinstall组。
【删除命令】
# groupdel oinstall
若提示以下信息,表示该组中还有用户,需要先删除用户再执行上面的命令删除组。
groupdel: GID '120' is primary group of 'oracle'.
groupdel: Cannot remove user's primary group.
【创建命令】
# groupadd -g 201 oinstall
3.3 创建名为oracle的操作系统用户
以root用户登录,分别在RAC各节点上执行。
【检查命令】
# grep oracle /etc/passwd
无输出则表示Oracle用户不存在。如果Oracle用户已存在,则使用以下命令删除Oracle用户。
【删除命令】
# userdel -rf oracle
【创建命令】
# useradd -u 300 -g oinstall -G dba -d /home/oracle -s /bin/bash -m oracle
【命令说明】
用户名为oracle,隶属于dba组。
3.4 为oracle用户建立密码
以root用户登录,分别在RAC各节点上执行。passwd oracle
【命令】
# passwd oracle
Changing password for oracle.
New Password:********
Reenter New Password:********
Password changed.
3.5 赋予目录正确的权限
3.5.1 改变文件系统/opt/oracle属组并赋权
以root用户登录,分别在RAC各节点上执行。
【命令】
# mkdir /opt/oracle
# chown -R oracle:dba /opt/oracle
# chmod -R 770 /opt/oracle
3.5.2 改变文件系统/opt/oracrs属组并赋权
以root用户登录,分别在RAC各节点上执行。
【命令】
# mkdir /opt/oracrs
# chown -R oracle:dba /opt/oracrs
# chmod -R 770 /opt/oracrs
3.5.3 改变文件系统/opt/orabak属组并赋权
以root用户登录,分别在RAC各节点上执行。
【命令】
# mkdir /opt/orabak
# chown -R oracle:dba /opt/orabak
# chmod -R 770 /opt/orabak
3.5.4 创建目录/usr/local/bin并赋权
在RAC各节点上检查/usr/local/bin目录是否存在,如不存在则需创建该目录,并赋予755权限。
【命令】
# mkdir /usr/local/bin
# chmod 755 /usr/local/bin
# ll /usr/local |grep bin
drwxr-xr-x 2 root root 4096 2024-05-03 21:24 bin
3.5.5 赋权/tmp目录权限
在RAC各节点上检查/tmp是否具有1777权限,如不具备则赋予/tmp目录1777权限。
【命令】
# chmod 1777 /tmp
# ll / |grep tmp
drwxrwxrwt 17 root root 4096 2019-06-13 10:00 tmp
3.6 设置oracle用户环境变量
以oracle用户登录,编辑RAC各节点的/home/oracle/.bashrc文件,在其中增加如下内容,设置环境变量。
# Oracle Environment
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11g/db
export ORA_CRS_HOME=/opt/oracrs
export ORACLE_SID=ora11g1 #请根据实际情况进行修改
export ORACLE_TERM=xterm
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib
export LD_LIBRARY_PATH
SHLIB_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/rdbms/lib32
export SHLIB_PATH
# Set shell search paths:
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/usr/sbin:$PATH:/usr/local/bin:$ORA_CRS_HOME/bin
# CLASSPATH must include the following JRE locations:
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
修改完成后使之生效。
$ source .bashrc
使用如下命令,查看环境变量是否生效
$env
【重要说明】
红色部分请根据实际情况进行设置。
ORACLE_SID:instance_name唯一的标识一个实例,一般以数据库名加上实例号为命名规范,例如:Rac的数据库名称为ora11g,则rac1中此处设置为ora11g1,rac2中此处设置为ora11g2,依次类推。
四、配置RAC网络及主机参数
4.1 网卡划分
两块网卡分别用作外网网卡和心跳网卡。
4.2 配置hosts文件
以root用户登录,编辑RAC各节点的/etc/hosts文件。且各节点请保持统一。
【内容示例】
请根据局点实际IP规划修改下面示例:
127.0.0.1 localhost.localdomain localhost
# Public IP and hostnames for NIC bond1 at Fabric (public network)192.168.10.61 rac1 # RAC node 1
192.168.10.62 rac2 # RAC node 2# Private IP and hostnames for NIC bond0 at basic (private Interconnect/heartbeat)192.168.1.61 rac1_heart # RAC node 1
192.168.1.62 rac2_heart # RAC node 2# Public virtual IP address and hostname (public Virtual Internet Protocol (VIP))192.168.10.51 rac1_vip # RAC node 1
192.168.10.52 rac2_vip # RAC node 2
4.3 建立RAC节点的SSH信任关系
4.3.1 操作步骤
由于ORACLE RAC安装界面使用SSH/SCP命令在各节点上同时复制文件或执行命令,因此必须配置SSH,以避免到时需要输入密码。如果不配SSH,安装时会报错。
步骤1:在各节点生成RSA公钥和DSA公钥
rac1:~ # su - oracle
oracle@rac1:~> ssh-keygen -t rsa //需要按三次回车
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Created directory '/home/oracle/.ssh'.
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:
6a:da:e5:38:7a:44:24:b1:81:94:46:79:d8:97:98:0d oracle@hostnameA
oracle@rac1:~> 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:
6c:b4:4b:79:20:24:c1:1c:50:ab:bc:4b:a0:9d:3b:9c oracle@hostnameA
用同样的方法,在rac2上以oracle用户运行以下命令,生成各节点的公钥:
ssh-keygen -t rsa
ssh-keygen -t dsa
步骤2:将rac1的RSA公钥和DSA公钥添加到authorized_keys文件中
oracle@rac1: > cd /home/oracle/.ssh
oracle@rac1: > cat id_rsa.pub >> authorized_keys
oracle@rac1: > cat id_dsa.pub >> authorized_keys
步骤3:将rac1上的密钥对文件authorized_keys复制到rac2的.ssh目录下。
oracle@rac1: > scp authorized_keys oracle@rac2:/home/oracle/.ssh
步骤4:使用oracle用户登录rac2,将rac2的RSA公钥和DSA公钥添加到authorized_keys文件中。
oracle@rac2: > cd /home/oracle/.ssh
oracle@rac2: > cat id_rsa.pub >> authorized_keys
oracle@rac2: > cat id_dsa.pub >> authorized_keys
步骤5:将rac2上的密钥对文件authorized_keys复制到rac1的.ssh目录下。
oracle@rac2: > scp authorized_keys oracle@rac1:/home/oracle/.ssh
步骤6:更新主机列表
按照以上方式建立好互信关系后,互信的节点之间第一次访问时,系统会提示是否将该主机加入已知主机列表中,此处需要手工输入yes后,后续访问不再需要手工输入。
--在rac1上执行以下操作
oracle@rac1: > ssh rac1
oracle@rac1: > exit
logout
Connection to rac1 closed.
oracle@rac1: > ssh rac1_heart
The authenticity of host 'rac1_heart (192.168.1.61)' can't be established.
RSA key fingerprint is 06:de:db:73:91:98:a8:71:72:07:f8:c5:c5:4e:11:20.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rac1_heart, 192.168.1.61' (RSA) to the list of known hosts.
oracle@rac1: > exit
logout
Connection to rac1_heart closed.
以下只列出命令,省略命令的输出
oracle@rac1: > ssh rac2
oracle@rac1: > ssh rac2_heart
步骤7:将rac1上的known_hosts文件拷贝至其他节点
--使用oracle用户登录rac1
oracle@rac1: > cd /home/oracle/.ssh
oracle@rac1: > scp known_hosts rac2:/home/oracle/.ssh/
known_hosts 100% 1512 1.5KB/s 00:00
如果互信节点之间可以互相登录进行ssh访问而无需输入ORACLE用户的密码,则表明正确。
如果有更多节点,那么每个节点上都要检查与其它所有节点的互信关系。
4.3.2 异常处理
如果不能建立互信关系,进行如下操作:
步骤1:使用root用户分别登录rac1和rac2
步骤2:修改/etc/ssh/ssh_config,去掉如下配置项前的注释符“#”。
IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_dsa
步骤3:修改/etc/ssh/sshd_config,去掉如下配置项前的注释符“#”。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
步骤4:执行如下命令重启rac1和rac2上的sshd服务。
# rcsshd restart
Shutting down SSH daemon done
Starting SSH daemon done
步骤5:退出root用户登录,使用oralce用户登录rac1和rac2,删除原有的密钥对目录.ssh
//rac1上执行
oracle@rac1: > rm -rf .ssh
//rac2上执行
oracle@rac2: > rm -rf .ssh
步骤6:重新配置互信关系。
4.4 配置各节点时钟同步
ORACLE RAC在安装和今后的运行中必须保证所有节点时钟同步
4.4.1 两节点之间时钟同步
如果现场没有提供NTP服务器时,请做如下操作:
(虚拟机可使用vmtools进行时钟同步:将虚拟机vmx中tools.syncTime = "FALSE"修改为tools.syncTime = “TRUE”)
【检查时钟同步】
--以oracle用户登录rac1
$ date;ssh rac2 date
Fri Nov 27 15:41:11 EST 2024
Fri Nov 27 15:41:07 EST 2024
Fri Nov 27 15:40:41 EST 2024
Fri Nov 27 15:40:47 EST 2024
【配置时钟同步】
--以root用户登录rac1
# /etc/init.d/ntp stop
Shutting down network time protocol daemon (NTPD) done
# /etc/init.d/ntp start
Starting network time protocol daemon (NTPD) done
# ps -ef |grep -i ntp
ntp 5674 1 0 04:26 ? 00:00:00 /usr/sbin/ntpd -p /var/lib/ntp/var/run/ntp/ntpd.pid -u ntp -i /var/lib/ntp
--以root用户登录rac2
# /etc/init.d/ntp stop
Shutting down network time protocol daemon (NTPD) done
# ntpdate rac1
16 Jul 04:29:32 ntpdate[6924]: step time server 192.168.10.1 offset 28802.514019 sec
【确认时钟同步】
--以oracle用户登录rac1
$ date;ssh rac2 date
Fri Nov 27 16:08:01 EST 2024
Fri Nov 27 16:08:01 EST 2024
Fri Nov 27 16:08:01 EST 2024
Fri Nov 27 16:08:01 EST 2024
4.4.2 两节点从NTP服务器同步时钟
现场提供了NTP服务器时,请做如下操作:
步骤1:1)编辑/etc/ntp.conf
vi /etc/ntp.conf
配置文件的后面几行,会看到如下类似显示:
server 127.0.0.1 local clock
fudge 127.0.0.1 stratum 10
修改成如下显示:
server 133.64.32.5 # NTP服务器的IP地址
server 133.64.32.6 # NTP服务器的IP地址
fudge 133.64.32.5 stratum 10
fudge 133.64.32.6 stratum 9
步骤2:启动ntp服务
/etc/rc.d/ntp start
同样,停止ntp服务命令为:/etc/rc.d/ntp stop
3)运行ntpq -p检查ntp工作情况
remote refid st t when poll reach delay offset jitter
=============================================================== 133.64.32.5 LOCAL(0) 11 u 4 64 1 0.154 0.034 0.001133.64.32.6 LOCAL(0) 12 u - 64 0 0.000 0.000 4000.00
4.5 调整操作系统参数
操作系统内核参数设置标准(虚拟机环境可以暂时不设置)
核心参数 | 设置 | 注释 |
---|---|---|
KERNEL.SEMMSL | 250 | |
KERNEL.SEMMNS | 32000 | 定义了操作系统用户最大可以访问的信号量数量。 |
KERNEL.SEMOPM | 100 | |
KERNEL.SEMMNI | 128 | 定义了操作系统最大信号量集的数量 |
KERNEL.SHMALL | max((sga_target/4096 + 2097152),4194304) | 至少设置为4194304,sga_target表示Oracle分配给SGA的物理内存大小(单位BYTE) |
KERNEL.SHMMAX | 4294967296 | 如果物理内存在4G以下,则设置SHMMAX为物理内存的一半,否则设置SHMMAX为2G |
KERNEL.SHMMNI | 4096 | 定义了操作系统共享内存段的最大数量 |
FS.FILE-MAX | max(4096*PROCESSES,6553600) | PROCESSES为“Oracle初始化参数设置标准”中的数据库参数 |
FS.AIO-MAX-NR | 1048576 | 异步IO最大进程数 |
NET.IPV4.IP_LOCAL_PORT_RANGE | Minimum:9000 Maximum:65500 | |
NET.CORE.RMEM_DEFAULT | 262144 | |
NET.CORE.RMEM_MAX | 4194304 | |
NET.CORE.WMEM_DEFAULT | 262144 | |
NET.CORE.WMEM_MAX | 1048576 |
通过修改文件/etc/sysctl.conf,增加对要修改的内核参数值。
注意: 如果文件/etc/sysctl.conf中的内核参数和新增内核参数相同,请使用’#'字符屏蔽文件/etc/sysctl.conf中原有的内核参数。
另外SUSE11需要卸载sapconf这个软件包,否则修改后重启会被自动修改。
【样例参考】
rac1:~ # more /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.inotify.max_user_watches = 65536
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.all.promote_secondaries = 1
#kernel.shmmax = 9223372036854775807
#kernel.sem = 1250 256000 100 8192
#kernel.shmall = 1152921504606846720
vm.max_map_count = 1000000
fs.file-max = 4096000
fs.aio-max-nr = 1048576
kernel.shmall = 4194304
kernel.shmmax = 1073741824
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
【启动命令进行参数修改】
# /sbin/chkconfig boot.sysctl on
# /sbin/sysctl -p
【检查参数是否生效】
# /sbin/sysctl -a | grep sem
# /sbin/sysctl -a | grep shm
# /sbin/sysctl -a | grep file-max
# /sbin/sysctl -a | grep aio-max-nr
# /sbin/sysctl -a | grep net.ipv4.ip_local
# /sbin/sysctl -a | grep rmem_
# /sbin/sysctl -a | grep wmem_
【显示如下】
kernel.sem = 250 32000 100 128
vm.hugetlb_shm_group = 1000
kernel.shmmni = 4096
kernel.shmall = 4194304
kernel.shmmax = 2147483648
fs.file-max = 4096000
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
- 设置Oracle用户的shell限制
修改文件/etc/security/limits.conf,追加以下内容
oracle - nproc 16384
oracle - nofile 65536
修改文件/etc/pam.d/login,追加以下内容
session required pam_limits.so
五、配置共享磁盘阵列
步骤1:重启主机之后,使用lsscsi或fdisk -l命令可以查看到挂载的共享磁盘。
# lsscsi
[0:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda
[1:0:1:0] disk VMware, VMware Virtual S 1.0 /dev/sdb
[1:0:2:0] disk VMware, VMware Virtual S 1.0 /dev/sdc
[1:0:3:0] disk VMware, VMware Virtual S 1.0 /dev/sdd
[1:0:4:0] disk VMware, VMware Virtual S 1.0 /dev/sde
[1:0:5:0] disk VMware, VMware Virtual S 1.0 /dev/sdf
[1:0:6:0] disk VMware, VMware Virtual S 1.0 /dev/sdg
[3:0:0:0] cd/dvd NECVMWar VMware SATA CD01 1.00 /dev/sr0
5.2 挂接裸设备并赋权
Unix/Linux体系中,分区创建后,必须将块设备/dev/sd**映射为字符设备/dev/raw/raw*才能让应用程序使用。以root用户在RAC各节点执行。
步骤1:首先检查系统中已有哪些裸设备。
# raw -qa
若没有任何返回信息,表示没有裸设备,则执行步骤2;若有返回信息,则表示有裸设备,若现有裸设备不符合要求,可以通过以下的命令删除,然后执行步骤2。
#raw /dev/raw/raw<N> 0 0 //<N>表示裸设备的编号。
例如,用raw /dev/raw/raw1 0 0 删除裸设备/dev/raw/raw1。
步骤2:由于SUSE存在绑定的裸设备在重启后权限丢失的风险,建议采用以下方式规避,注意用于OCR的裸设备权限与其他裸设备的权限不同:
# vi /etc/init.d/after.local
modprobe raw
raw /dev/raw/raw1 /dev/sdb
raw /dev/raw/raw2 /dev/sdc
raw /dev/raw/raw3 /dev/sdd
raw /dev/raw/raw4 /dev/sde
sleep 5chown root:oinstall /dev/raw/raw1
chmod 775 /dev/raw/raw1
chown oracle:oinstall /dev/raw/raw2
chmod 775 /dev/raw/raw2
chown oracle:dba /dev/raw/raw3
chmod 775 /dev/raw/raw3
chown oracle:dba /dev/raw/raw4
chmod 775 /dev/raw/raw4--执行如下命令
# chmod u+x /etc/init.d/after.local
# /etc/init.d/after.local
# raw -qa
/dev/raw/raw1: bound to major 8, minor 16
/dev/raw/raw2: bound to major 8, minor 32
/dev/raw/raw3: bound to major 8, minor 48
/dev/raw/raw4: bound to major 8, minor 64
步骤3:重启单板。
# init 6
步骤4:检查裸设备数目是否正确。
# raw -qa
/dev/raw/raw1: bound to major 8, minor 16
/dev/raw/raw2: bound to major 8, minor 32
/dev/raw/raw3: bound to major 8, minor 48
/dev/raw/raw4: bound to major 8, minor 64
步骤5:检查裸设备权限是否正确:注意:rawctl的属主必须为:root
# ll /dev/raw
total 0
crwxrwxr-x 1 root oinstall 162, 1 Dec 12 11:21 raw1
crwxrwxr-x 1 oracle oinstall 162, 2 Dec 12 11:21 raw2
crwxrwxr-x 1 oracle dba 162, 3 Dec 12 11:21 raw3
crwxrwxr-x 1 oracle dba 162, 4 Dec 12 11:21 raw4
crw-rw---- 1 root disk 162, 0 Dec 12 10:49 rawctl
步骤6:检查裸设备的读写。
注意:使用DD命令时务必小心,确保盘符没有写错,避免误格式化其它磁盘。
例如:
# dd if=/dev/zero of=/dev/raw/raw1 count=2000
2000+0 records in
2000+0 records out
1024000 bytes (1.0 MB) copied, 0.798751 seconds, 1.3 MB/s
# dd of=/dev/null if=/dev/raw/raw1 count=2000
2000+0 records in
2000+0 records out
1024000 bytes (1.0 MB) copied, 0.635695 seconds, 1.6 MB/s
所有绑定的裸设备检查后如果都能读写说明OK。
5.3 创建归档文件系统
通过“5.3 扫描新磁盘”将新磁盘扫描上来后,需要为RAC的两个节点创建归档文件系统。规划的文件系统类型为ext3,需要先将磁盘pv化后再创建vg、lv及挂载到文件系统上。
以root用户执行如下命令。
步骤1:创建归档目录。
在rac1节点执行如下命令。
# cd /
# mkdir /archivelog1
# chown oracle:dba /archivelog1
在rac2节点执行如下命令。
# cd /
# mkdir /archivelog2
# chown oracle:dba /archivelog2
步骤2:创建PV。
在rac1节点执行如下命令。
# pvcreate /dev/sde
在rac2节点执行如下命令。
# pvcreate /dev/sdf
步骤3:创建VG。
在rac1节点执行如下命令。
# vgcreate arch1vg /dev/sde
在rac2节点执行如下命令。
# vgcreate arch2vg /dev/sdf
步骤4:创建LV。
在rac1节点执行如下命令。
# lvcreate -l `vgdisplay arch1vg | grep "Total PE"| awk '{printf $3}'` arch1vg -n arch1lv
在rac2节点执行如下命令。
# lvcreate -l `vgdisplay arch2vg | grep "Total PE"| awk '{printf $3}'` arch2vg -n arch2lv
步骤5:激活卷组。
在rac1节点执行如下命令。
# vgchange -a y arch1vg
在rac2节点执行如下命令。
# vgchange -a y arch2vg
步骤6:创建文件系统。
在rac1节点执行如下命令。
# mkfs.ext3 /dev/arch1vg/arch1lv
在rac2节点执行如下命令。
# mkfs.ext3 /dev/arch2vg/arch2lv
步骤7:加载文件系统。
在rac1节点执行如下命令:
# vgchange -a y arch1vg
# mount /dev/mapper/arch1vg-arch1lv /archivelog1
# sleep 5
# chown -cR oracle:dba /archivelog1
在rac2节点执行如下命令:
# vgchange -a y arch2vg
# mount /dev/mapper/arch2vg-arch2lv /archivelog2
# sleep 5
# chown -cR oracle:dba /archivelog2
为了避免系统重启后还要重新加载文件系统,需要将上述命令合入/etc/init.d/after.local文件中。在rac1和rac2上分别添加上述命令到/etc/init.d/after.local文件中。
六、安装CRS
6.1 安装前准备工作
安装CRS之前,请确认已经调整了操作系统的内核参数。
6.1.1 上传安装介质
以root用户将安装软件上传到rac1的/opt/orabak中(如采用FTP上传注意需要二进制方式),目录结构如下:
/opt/orabak/linux.x64_11gR1_clusterware.zip
解压缩安装文件,并赋予权限。
# cd /opt/orabak
# unzip linux.x64_11gR1_clusterware.zip
# chmod 770 -R /opt/orabak/clusterware
# chown oracle:dba -R /opt/orabak/clusterware
6.1.2 创建Inventory目录
Inventory目录主要用于存放Oracle安装过程中的一些信息。
在RAC各节点上以root用户创建目录/opt/oracle/oraInventory,并使oracle:dba为其所有者。
# mkdir /opt/oracle/oraInventory
# chown oracle:dba /opt/oracle/oraInventory
# chmod 770 /opt/oracle/oraInventory
6.1.3 设置DISPLAY环境变量
在虚拟机本地安装可以不用设置
步骤1:切换到oracle用户。
# su - oracle
步骤2:设置DISPLAY环境变量。
如果是直接连接到主机的终端上进行安装,执行:
$ export DISPLAY=localhost:0.0
如果是在远程终端上进行安装,执行:
$ export DISPLAY=REMOTE_IP:0.0 --例export DISPLAY=10.71.111.142:0.0
步骤4:检查oracle的所有环境变量是否已经生效,在启动安装前需要确保.bashrc中设置的环境变量都已生效。
$ env
6.2 安装Oracle CRS软件
安装ORACLE11g软件必须使用oracle用户,并确oracle用户的环境变量生效。
在安装过程中,如果遇到/tmp空间过小的错误安装将无法继续,此时请在安装用户oracle下设置TEMP和TEMPDIR环境变量,将ORACLE使用的TEMP空间指向一个足够大的文件系统即可。例如:
$ export TEMP=/opt/oracle
$ export TEMPDIR=/opt/oracle
6.2.1 集群安装预校验
以oracle用户登录rac1,执行以下命令检查双机是否满足CRS安装的条件,要求所有项目都要passed。如果存在问题,必须按照提示修复后才可以执行集群安装。(由于SUSE11不在ORACLE11的默认支持范围内,因此检查会报错,可以忽略此步骤)
$ cd /opt/orabak/clusterware
$ ./runcluvfy.sh stage -pre crsinst -n rac1,rac2
Performing pre-checks for cluster services setupChecking node reachability...
Node reachability check passed from node " rac1".Checking user equivalence...
User equivalence check passed for user "oracle".Checking administrative privileges...
User existence check passed for "oracle".
Group existence check passed for "oinstall".
Membership check for user "oracle" in group "oinstall" [as Primary] passed.Administrative privileges check passed.Checking node connectivity...Node connectivity check passed for subnet "192.168.1.0" with node(s) rac1,rac2.
Node connectivity check passed for subnet "10.69.11.0" with node(s) rac2,rac1.Interfaces found on subnet "192.168.1.0" that are likely candidates for VIP:
rac1 eth4:192.168.1.61
rac2 eth4:192.168.1.62Interfaces found on subnet "10.69.11.0" that are likely candidates for a private interconnect:
rac2 bond1:192.168.10.62
rac1 bond1:192.168.10.61Node connectivity check passed.Checking system requirements for 'crs'...
Total memory check passed.
Free disk space check passed.
Swap space check passed.
System architecture check passed.
Kernel version check passed.
Package existence check passed for "make-3.80".
Package existence check passed for "binutils-2.16.91.0.5".
Package existence check passed for "gcc-4.1.0".
Package existence check passed for "gcc-c++-4.1.0".
Package existence check passed for "libaio-0.3.104".
Package existence check passed for "libaio-32bit-0.3.104".
Package existence check passed for "libelf-0.8.5".
Package existence check passed for "compat-libstdc++-5.0.7".
Package existence check passed for "libaio-devel-0.3.104".
Package existence check passed for "libgcc-4.1.0".
Package existence check passed for "libstdc++-4.1.0".
Package existence check passed for "libstdc++-devel-4.1.0".
Package existence check passed for "sysstat-6.0.2".
Package existence check passed for "glibc-2.4-31.2".
Package existence check passed for "glibc-32bit-2.4-31.2".
Package existence check passed for "glibc-devel-2.4".
Package existence check passed for "glibc-devel-32bit-2.4".
Group existence check passed for "dba".
Group existence check passed for "oinstall".
User existence check passed for "nobody".System requirement passed for 'crs'Pre-check for cluster services setup was successful.
假如出现类似如下的信息,表示检查不通过,可能是由于双机信任关系不正确。请通过ping命令和SSH检查双机信任关系的方法定位。
Performing pre-checks for cluster services setup Checking node reachability...Check: Node reachability from node "rac1"Destination Node Reachable? ------------------------------------ ------------------------rac2 no rac1 no
Result: Node reachability check failed from node "rac1".ERROR:
Unable to reach any of the nodes.
Verification cannot proceed.Pre-check for cluster services setup was unsuccessful on all the nodes.
6.2.2 启动Universal Installer安装界面
步骤1:用oracle用户登录rac1启动OUI进行安装。
虽然是登录rac1进行安装,但是由于在安装过程中会指定其他的rac节点,所以实际上CRS会在所有指定的rac节点上安装。
$ /opt/orabak/clusterware/runInstaller
Starting Oracle Universal Installer...Checking Temp space: must be greater than 120 MB. Actual 3658 MB Passed
Checking swap space: must be greater than 150 MB. Actual 8197 MB Passed
Checking monitor: must be configured to display at least 256 colors. Actual 16777216 Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2024-12-08_05-26-49PM. Please wait ...oracle@rac1:/opt/orabak/clusterware> Oracle Universal Installer, Version 11.1.0.6.0 Production
Copyright (C) 1999, 2024, Oracle. All rights reserved.
步骤2:选择Next进入下一个界面。
如果报以下错误,请确认系统上没有已安装的ORACLE后,单击OK即可。
步骤3:指定Inventory目录存放位置。
在Enter the full path of the inventory directory中选择事先建好的Inventory目录
在Specify Operation System group name中选择“oinstall”
步骤4:指定CRS安装目录,然后单击Next。
在Path中选择“/opt/oracrs”。
若出现如下提示,单击OK继续。
步骤5:进行预安装检测。单击Next。
步骤6:没有重要错误可以忽略。
步骤7:没有重要错误可以忽略。
步骤8:添加集群节点。
单击Add按钮,添加其他的节点;单击Edit按钮,修改已有的节点。
在Cluster Name中填写“rac_cluster”
说明:下述信息要与etc/hosts中的内容保持一致。
在Public Node Name中填写rac1
在Private Node Name中填写rac1_heart
在Virtual Host Name中填写rac1_vip
例如:添加rac2这个节点
在Public Node Name中填写“rac2”
在Private Node Name中填写“rac2_heart”
在Virtual Host Name中填写“rac2_vip”
然后单击OK
添加完毕之后单击Next。
步骤9:指定网卡的应用
Eth2指定为Public,eth1网卡指定为Private,其他的指定为“Do Not Use”。
步骤10:指定OCR位置
选择External Redundancy
按照之前的规划,在Specify OCR Location中填写“/dev/raw/raw1”
步骤11:指定锁盘位置
选择External Redundancy
在Voting Disk Location中填写“/dev/raw/raw2”
步骤12:概要检查
检查没有问题,确保空间足够,按Install按钮进行安装。
步骤13:执行orainstRoot.sh和root.sh脚本
安装即将结束时,会提示用root用户执行orainstRoot.sh和root.sh脚本。
新开一个SHELL窗口,在rac1节点,依次执行以下命令。
$ su - root
# cd /opt/oracle/oraInventory/
# ./orainstRoot.sh
Changing permissions of /opt/oracle/oraInventory to 770.
Changing groupname of /opt/oracle/oraInventory to oinstall.
The execution of the script is complete# cd /opt/oracrs/
# ./root.sh
Checking to see if Oracle CRS stack is already configured
/etc/oracle does not exist. Creating it now.Setting the permissions on OCR backup directory
Setting up Network socket directories
Oracle Cluster Registry configuration upgraded successfully
Successfully accumulated necessary OCR keys.
Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
node <nodenumber>: <nodename> <private interconnect name> <hostname>
node 1: rac1 rac1_heart rac1
node 2: rac2 rac2_heart rac2
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Now formatting voting device: /dev/raw/raw2
Format of 1 voting devices complete.
Startup will be queued to init within 30 seconds.
Adding daemons to inittab
Expecting the CRS daemons to be up within 600 seconds.
Cluster Synchronization Services is active on these nodes.rac1
Cluster Synchronization Services is inactive on these nodes.rac2
Local node checking complete. Run root.sh on remaining nodes to start CRS daemons.
在rac2节点,依次执行如下命令
$ su - root
# cd /opt/oracle/oraInventory/
# ./orainstRoot.sh
Changing permissions of /opt/oracle/oraInventory to 770.
Changing groupname of /opt/oracle/oraInventory to oinstall.
The execution of the script is complete# cd /opt/oracrs/
# ./root.sh
Checking to see if Oracle CRS stack is already configured
/etc/oracle does not exist. Creating it now.Setting the permissions on OCR backup directory
Setting up Network socket directories
Oracle Cluster Registry configuration upgraded successfully
clscfg: EXISTING configuration version 4 detected.
clscfg: version 4 is 11 Release 1.
Successfully accumulated necessary OCR keys.
Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
node <nodenumber>: <nodename> <private interconnect name> <hostname>
node 1: rac1 rac1_heart rac1
node 2: rac2 rac2_heart rac2
clscfg: Arguments check out successfully.NO KEYS WERE WRITTEN. Supply -force parameter to override.
-force is destructive and will destroy any previous cluster
configuration.
Oracle Cluster Registry for cluster has already been initialized
Startup will be queued to init within 30 seconds.
Adding daemons to inittab
Expecting the CRS daemons to be up within 600 seconds.
Cluster Synchronization Services is active on these nodes.rac1rac2
Cluster Synchronization Services is active on all the nodes.
Waiting for the Oracle CRSD and EVMD to start
Oracle CRS stack installed and running under init(1M)
Running vipca(silent) for configuring nodeappsCreating VIP application resource on (2) nodes...
Creating GSD application resource on (2) nodes...
Creating ONS application resource on (2) nodes...
Starting VIP application resource on (2) nodes...
Starting GSD application resource on (2) nodes...
Starting ONS application resource on (2) nodes...Done.
步骤14:两个节点都成功执行完root.sh脚本后,单击OK进入如下界面(此处检查错误如是因为操作系统版本的问题可忽略)
步骤15:结束安装。
出现如下界面,单击Exit,结束安装。
步骤16:安装完成后,以oracle用户在任一节点执行下面的命令进行Cluster校验。(SUSE11跳过此步骤)
$ $ORA_CRS_HOME/bin/cluvfy stage -post crsinst -n rac1,rac2
Performing post-checks for cluster services setupChecking node reachability...
Node reachability check passed from node "rac1".Checking user equivalence...
User equivalence check passed for user "oracle".Checking Cluster manager integrity...Checking CSS daemon...
Daemon status check passed for "CSS daemon".Cluster manager integrity check passed.Checking cluster integrity...Cluster integrity check passedChecking OCR integrity...Checking the absence of a non-clustered configuration...
All nodes free of non-clustered, local-only configurations.Uniqueness check for OCR device passed.Checking the version of OCR...
OCR of correct Version "2" exists.Checking data integrity of OCR...
Data integrity check for OCR passed.OCR integrity check passed.Checking CRS integrity...Checking daemon liveness...
Liveness check passed for "CRS daemon".Checking daemon liveness...
Liveness check passed for "CSS daemon".Checking daemon liveness...
Liveness check passed for "EVM daemon".Checking CRS health...
CRS health check passed.CRS integrity check passed.Checking node application existence...Checking existence of VIP node application (required)
Check passed.Checking existence of ONS node application (optional)
Check passed.Checking existence of GSD node application (optional)
Check passed.Post-check for cluster services setup was successful.
6.2.3 异常处理
如果安装过程中不能出来如下设置Inventory路径的界面。
可能的原因是因为以前安装过CRS,以前设置的CRS安装路径以及Oracle实例名没有删除。请参照以下步骤进行处理。
1、确认有无oraInst.loc文件,若有,请删除oraInst.loc 文件。
oracle@rac1:/opt/orabak/clusterware> cd /etc
oracle@rac1:/etc> ls *.loc
oraInst.loc
oracle@rac1:/etc> cat oraInst.loc
inventory_loc=/oracle/app/oraInventory
inst_group=oinstall
使用root用户删除oraInst.loc文件。
#rm -f /etc/oraInst.loc
2、确认有无oratab文件,若有,请删除oratab文件。
oracle@rac1:/etc> cat oratab
## This file is used by ORACLE utilities. It is created by root.sh
# and updated by the Database Configuration Assistant when creating
# a database.# A colon, ':', is used as the field terminator. A new line terminates
# the entry. Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
ora11g:/oracle/app/product/11g/db:N
使用root用户删除oratab文件。
rm -f cat /etc/oratab
6.2.4 启动CRS服务
以root用户登录,分别在RAC各节点上执行。
【命令】
# /etc/init.d/init.crs start
Startup will be queued to init within 30 seconds.
6.2.5 检查CRS是否安装成功
以root用户执行以下命令:
# cd /opt/oracrs/bin
# ./crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
如果gsd、ons、vip这3个节点应用资源已经成功的在RAC各个节点上启动了,即State列的状态与Target列的状态保持一致且都为ONLINE,则表明CRS已经安装成功。
【注意】虚拟机环境需要额外执行下面的配置,否则在系统繁忙时可能会导致节点异常重启。以下命令使用root用户执行:
1、停止所有节点CRS
/opt/oracrs/bin/crsctl stop crs
2、停止OPROCD进程
/opt/oracrs/bin/oprocd stop
3、设置DIAGWAIT值(该值过小会导致系统繁忙时节点被自动重启)
/opt/oracrs/bin/crsctl set css diagwait 13 –force
4、启动所有节点CRS
/opt/oracrs/bin/crsctl start crs
七、安装ORACLE软件
7.1 安装前准备工作
7.1.1 上传安装介质
以root用户将安装软件上传到rac1的/opt/orabak中,目录结构如下:
/opt/orabak/linux.x64_11gR1_database_1013.zip
解压缩安装文件,并赋予权限。
【命令】
# cd /opt/orabak
# unzip linux.x64_11gR1_database_1013.zip
# chmod 770 -R /opt/orabak/database
# chown oracle:dba -R /opt/orabak/database
7.1.2 检查CRS服务是否已启动
在安装之前,请确保CRS服务已经正常启动。
以root用户登录,分别在RAC各节点上执行,以查看CRS资源的状态:
# /opt/oracrs/bin/crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
若返回的State列的状态与Target列的状态保持一致且都为ONLINE,则表示CRS服务已启动。
若CRS服务未启动,则以root用户分别在RAC各节点上执行如下命令。
# /etc/init.d/init.crs start
7.1.3 设置DISPLAY环境变量
在虚拟机本地安装可以不用设置
步骤1:切换到oracle用户
# su - oracle
步骤2:设置DISPLAY环境变量
如果是直接连接到主机的终端上进行安装,执行:
$ export DISPLAY=localhost:0.0
如果是在远程终端上进行安装,执行:
$ export DISPLAY=REMOTE_IP:0.0 --例export DISPLAY=10.71.111.142:0.0
步骤3:检查环境变量是否生效
$ echo $DISPLAY
步骤4:检查oracle的所有环境变量是否已经生效,在启动安装前需要确保.profile中设置的环境变量都已生效。
$ env
7.2 安装Oracle11g软件
安装Oracle11g软件必须使用oracle用户,并确保oracle用户的环境变量生效。
【提示】
在安装过程中,如果遇到/tmp空间过小的错误安装将无法继续,此时请在安装用户oracle下设置TEMP和TEMPDIR环境变量,将ORACLE使用的TEMP空间指向一个足够大的文件系统即可。
$ export TEMP=/opt/oracle
$ export TEMPDIR=/opt/oracle
7.2.1 启动Universal Installer安装界面
步骤1:用oracle用户登录rac1启动OUI进行安装
虽然是登录rac1进行安装,但是由于在安装过程中会指定其他的rac节点,所以实际上ORACLE软件会在所有指定的rac节点上安装。
【命令】
$ /opt/orabak/database/runInstaller
选择Next进入下一个界面
步骤2:选择安装类型
选择企业版安装(Enterprise Edition)
步骤3:选择安装路径
在Oracle Base中填写“/opt/oracle”
【提示】
如果出现错误,说明前面某些必要步骤没有完成,例如:
不存/opt/oracle目录
Oracle用户没有/opt/oracle的写权限
步骤4:指定集群中的节点
选择“Cluster Installation”
勾选集群中所有的节点
步骤5:预安装检测
检查没有问题单击Next按钮。
出现如下检查不通过项,可不必理会,继续安装。
步骤6:选择配置类型
选择“Install Software Only”
步骤7:指定操作系统用户组。
全部指定为“dba”。
步骤8:概要检查。
检查没有问题,确保空间足够,按Install按钮进行安装。
步骤9:执行root.sh脚本
安装即将结束时,会提示用root用户执行/opt/oracle/product/11g/db/root.sh脚本。
新开一个SHELL窗口,在Rac中所有的节点下,依次执行以下命令。
$ su – root
# cd /opt/oracle/product/11g/db/
# ./root.sh
Running Oracle 11g root.sh script...The following environment variables are set as:ORACLE_OWNER= oracleORACLE_HOME= /oracle/product/11g/dbEnter the full pathname of the local bin directory: [/usr/local/bin]: #此处直接按回车。Copying dbhome to /usr/local/bin ...Copying oraenv to /usr/local/bin ...Copying coraenv to /usr/local/bin ...Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
步骤10:执行完脚本之后,单击OK。
步骤11:结束安装。
出现如下界面,单击Exit,结束安装。
7.3 安装后检查
以下操作只需要在主机rac1上执行。
步骤1:以oracle 用户登录。
步骤2:连接数据库。
% sqlplus "/as sysdba"
系统显示如下类似信息:
SQL*Plus: Release 11.1.0.6.0 - Production on Thu Aug 21 17:44:41 2024
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to an idle instance.
SQL>
连接数据库成功,表示数据库软件安装成功。
八、安装Oracle补丁
8.1 安装前准备工作
8.1.1 上传安装介质
以root用户将安装软件拷贝到rac1的/opt/orabak中,目录结构如下:
/opt/orabak/p6890831_111070_Linux-x86-64.zip
【解压缩安装文件,并赋予权限】
步骤1:以root用户登录rac1,执行以下命令
# cd /opt/orabak
# unzip p6890831_111070_Linux-x86-64.zip
# chmod 770 -R /opt/orabak/Disk1
# chown oracle:dba -R /opt/orabak/Disk1
8.1.2 设置DISPLAY环境变量
在虚拟机本地安装可以不用设置
步骤1:切换到oracle用户
# su - oracle
步骤2:设置DISPLAY环境变量
如果是直接连接到主机的终端上进行安装,执行:
$ export DISPLAY=localhost:0.0
如果是在远程终端上进行安装,执行:
$ export DISPLAY=REMOTE_IP:0.0 --例export DISPLAY=10.71.111.142:0.0
步骤3:检查环境变量是否生效
$ echo $DISPLAY
步骤4:检查oracle的所有环境变量是否已经生效,在启动安装前需要确保.bashrc中设置的环境变量都已生效。
$ env
8.2 安装CRS补丁
升级CRS 软件到11.1.0.7.0。CRS 11.1.0.7.0 主要解决CRS 11.1.0.6.0 的Bug。
8.2.1 停止CRS
以root用户登录RAC各节点,执行以下命令。
# cd /opt/oracrs/install
# ./preupdate.sh
8.2.2 安装CRS补丁
1、 安装步骤
步骤1:以oracle用户登录,进入rac1节点的/opt/orabak/Disk1目录,执行安装程序。
虽然是登录rac1进行安装,但是由于在安装过程中会指定其他的rac节点,所以实际上补丁会在所有指定的rac节点上安装。
注意:
请一定使用./runInstaller进行安装补丁,否则可能会使用到驻留内存中的安装文件的runInstaller程序,这样会导致程序无法识别/Disk1/stage/product.xml文件。
$ export ORACLE_HOME=/opt/oracrs
$ cd /opt/orabak
$ cd Disk1
$./runInstaller
系统出现如下界面
选择“Next”
步骤2:选择安装目录
步骤3:选择节点
选择所有节点
步骤4:检查升级所需要的各项条件
检查没有问题单击Next按钮。
步骤5:概要浏览
选择“Install”
步骤6:执行安装
步骤7:系统安装完毕后,出现如下界面
步骤8:新开一个SHELL窗口,分别在rac两个节点上执行如下操作。
1.以root用户登录rac1,执行如下命令:
$ su – root
# /opt/oracrs/bin/crsctl stop crs
# /opt/oracrs/install/root111.sh
返回类似如下信息,表示脚本执行成功
Creating pre-patch directory for saving pre-patch clusterware files
Completed patching clusterware files to /oracle/oracrs
Relinking some shared libraries.
Relinking of patched files is complete.
Preparing to recopy patched init and RC scripts.
Recopying init and RC scripts.
Startup will be queued to init within 30 seconds.
Starting up the CRS daemons.
Waiting for the patched CRS daemons to start.
This may take a while on some systems.
.
.
.
.
.
.
.
11107 patch successfully applied.
clscfg: EXISTING configuration version 4 detected.
clscfg: version 4 is 11 Release 1.
Successfully accumulated necessary OCR keys.
Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
node <nodenumber>: <nodename> <private interconnect name> <hostname>
node 1: rac1 rac1_heart rac1
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
clscfg -upgrade completed successfully
Creating '/oracle/oracrs/install/paramfile.crs' with data used for CRS configuration
Setting CRS configuration values in /oracle/oracrs/install/paramfile.crs
Setting cluster unique identifier
Restarting Oracle clusterware
Stopping Oracle clusterware
Stopping resources.
This could take several minutes.
Successfully stopped Oracle Clusterware resources
Stopping Cluster Synchronization Services.
Shutting down the Cluster Synchronization Services daemon.
Shutdown request successfully issued.
Waiting for Cluster Synchronization Services daemon to stop
Cluster Synchronization Services daemon has stopped
Starting Oracle clusterware
Attempting to start Oracle Clusterware stack
Waiting for Cluster Synchronization Services daemon to start
Waiting for Cluster Synchronization Services daemon to start
Waiting for Cluster Synchronization Services daemon to start
Waiting for Cluster Synchronization Services daemon to start
Waiting for Cluster Synchronization Services daemon to start
Waiting for Cluster Synchronization Services daemon to start
Waiting for Cluster Synchronization Services daemon to start
Cluster Synchronization Services daemon has started
Event Manager daemon has started
Cluster Ready Services daemon has started
2.以root用户登录rac2,执行如下命令。
$ su – root
# /opt/oracrs/bin/crsctl stop crs
# /opt/oracrs/install/root111.sh
返回类似如下信息,表示脚本执行成功。
Creating pre-patch directory for saving pre-patch clusterware files
Completed patching clusterware files to /oracle/oracrs
Relinking some shared libraries.
Relinking of patched files is complete.
Preparing to recopy patched init and RC scripts.
Recopying init and RC scripts.
Startup will be queued to init within 30 seconds.
Starting up the CRS daemons.
Waiting for the patched CRS daemons to start.
This may take a while on some systems.
.
11107 patch successfully applied.
clscfg: EXISTING configuration version 4 detected.
clscfg: version 4 is 11 Release 1.
Successfully accumulated necessary OCR keys.
Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
node <nodenumber>: <nodename> <private interconnect name> <hostname>
node 2: rac2 rac2_heart rac2
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
clscfg -upgrade completed successfully
Creating '/oracle/oracrs/install/paramfile.crs' with data used for CRS configuration
Setting CRS configuration values in /oracle/oracrs/install/paramfile.crs
步骤9:执行完脚本,单击Exit退出安装。
2、验证补丁是否安装成功
步骤1:以root 用户在rac1 和rac2 上检查CRS 以及资源是否正常。
# /opt/oracrs/bin/crs_stat -t
显示类似如下信息,则CRS 启动成功。
Name Type Target State Host
------------------------------------------------------------
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
步骤2:以root 用户登录rac1,检查CRS 软件版本是否都为11.1.0.7.0。
# /opt/oracrs/bin/crsctl query crs softwareversion
显示类似如下信息,则CRS 升级成功。
Oracle Clusterware version on node [rac1] is [11.1.0.7.0]
步骤3:以root 用户登录rac2,检查CRS 软件版本是否都为11.1.0.7.0。
# /opt/oracrs/bin/crsctl query crs softwareversion
显示类似如下信息,则CRS 升级成功。
Oracle Clusterware version on node [rac2] is [11.1.0.7.0]
8.3 安装Oracle 11.1.0.7.0补丁
Oracle 11.1.0.7.0 主要解决Oracle 11.1.0.6.0 的Bug。
1、前提条件
以root用户登录rac1与rac2,停止CRS服务。
# /etc/init.d/init.crs stop
2、安装步骤
步骤1:以oracle用户登录,进入rac1节点的/opt/orabak/Disk1目录,执行安装程序。
注意:
请一定使用./runInstaller进行安装补丁,否则可能会使用到驻留内存中的安装文件的runInstaller程序,这样会导致程序无法识别/Disk1/stage/product.xml文件。
$ export ORACLE_BASE=/opt/oracle
$ export ORACLE_HOME=$ORACLE_BASE/product/11g/db
$ cd /opt/orabak
$ cd Disk1
$./runInstaller
步骤2:系统出现如下界面
选择“Next”
步骤3:选择安装目录
使用默认目录
步骤4:提供联系方式
不需要填写Email
不需要勾选“I wish to recive security updates via Metalink”
步骤5:不需要提供email地址
选择“Yes”
步骤6:选择节点
选择所有节点。
步骤7:检查升级所需要的各项条件
检查没有问题单击Next按钮。
步骤8:概要浏览
选择“Install”
步骤9:执行安装
步骤10:系统安装完毕后,出现如下界面
步骤11:新开一个SHELL窗口,在rac1和rac2,分别执行以下命令。
$ su – root
# /opt/oracle/product/11g/db/root.sh
该脚本执行过程中需要回答一些问题,在不同的平台上具体问的内容会有所不同,但只要在出现’……[yes]?’时输入’no’,出现’[y,n]’时输入y,出现其他问题时直接按回车即可。
出现类似如下信息,表示脚本执行成功。
Running Oracle 11g root.sh script...The following environment variables are set as:ORACLE_OWNER= oracleORACLE_HOME= /oracle/product/11g/dbEnter the full pathname of the local bin directory: [/usr/local/bin]:
The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: yCopying dbhome to /usr/local/bin ...
The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: yCopying oraenv to /usr/local/bin ...
The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: yCopying coraenv to /usr/local/bin ...Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
步骤12:脚本执行完后,单击OK。
步骤13:单击Exit,结束安装。
3、验证补丁安装是否成功
步骤1:以oracle用户登录rac1和rac2,检查数据库软件版本是否都为11.1.0.7。
% cd $ORACLE_HOME/bin
% sqlplus "/as sysdba"
显示类似如下信息,表明数据库软件升级成功。
SQL*Plus: Release 11.1.0.7.0 - Production on Thu Aug 21 17:44:41 2024
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to an idle instance.
SQL>
步骤2:分别启动rac1和rac2上的CRS。
% su
# /etc/init.d/init.crs start
步骤3:检查数据库是否正常启动。
#/opt/oracrs/bin/crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
确保主备机上都有gsd、ons、vip 进程,并且状态都为ONLINE。
8.4 Oracle PSU及One-off补丁安装
根据业务需要及要求进行安装,本处不详细描述。
九、建立ASM实例
9.1 建库前准备工作
要求使用DBCA(Database Configuration Assistant)来建立ASM实例,不建议使用命令行或脚本。
9.1.1 检查CRS服务
在安装之前,请确保CRS服务已经正常启动。
以root用户登录,分别在RAC各节点上执行命令,检查各服务是否都启动到target状态。
# /opt/oracrs/bin/crs_stat -t
9.1.2 设置DISPLAY环境变量
在虚拟机本地安装可以不用设置
步骤1:切换到oracle用户
# su - oracle
步骤2:设置DISPLAY环境变量
如果是直接连接到主机的终端上进行安装,执行:
$ export DISPLAY=localhost:0.0
如果是在远程终端上进行安装,执行:
$ export DISPLAY=REMOTE_IP:0.0 --例export DISPLAY=10.71.111.142:0.0
步骤3:检查环境变量是否生效
$ echo $DISPLAY
步骤4:检查oracle的所有环境变量是否已经生效,在启动安装前需要确保.profile中设置的环境变量都已生效。
$ env
9.2 为节点配置ASM实例
必须使用操作系统oracle用户调用DBCA进行安装。
步骤1:启动DBCA安装界面
用oracle用户登录rac1启动DBCA进行安装
$ dbca
选择“Oracle Real Application Clusters database”
单击Next
步骤2:选择创建数据库
选择“Configure Automatic Storage Management”
步骤3:选择节点
选择所有节点
步骤4:设置ASM实例SYS用户密码
从安全角度考虑,所设置的密码必须符合以下要求的密码复杂度:
1.口令长度至少6个字符(特权用户至少8个字符);
2.口令必须包含如下至少两种字符的组合:
至少一个小写字母;
至少一个大写字母;
至少一个数字;
至少一个特殊字符:#$-_或空格。
3.口令不能和帐号或者帐号的倒写一样;
其他的设置使用默认值。
步骤5:确认安装ASM
选择“OK”
步骤6:选择自动创建监听器
选择“Yes”
步骤7:开始创建ASM实例
步骤8:查找裸设备
选择“Change Disk Discovery Path”
在“Disk Discovery Path”中填写“/dev/raw/*”
然后单击“OK”
步骤9:创建Disk Group
选择“Create New”
步骤10:创建dg_ora。
在Disk Group Name中填写“dg_ora”;
冗余选择“External”;
按照前面的规划,选择磁盘路径“/dev/raw/raw3”;
单击“OK”开始创建dg_ora。
步骤11:创建dg_data。
在Disk Group Name中填写“dg_data”;
冗余选择“External”;
安装前面的规划,选择磁盘路径“/dev/raw/raw4”和“/dev/raw/raw5”;
单击“OK”开始创建dg_data。
9.2.2 完成ASM实例和DG的创建
单击“Finish”完成ASM实例的创建
十、建立数据库
10.1 建库前准备工作
10.1.1 必须使用DBCA创建数据库
要求使用DBCA(Database Configuration Assistant)来建立Oracle数据库,不建议使用命令行脚本方式建立数据库。
10.1.2 检查CRS服务
在安装之前,请确保CRS服务已经正常启动。
以root用户登录,分别在RAC各节点上执行,检查各服务是否都启动到target状态。
# /opt/oracrs/bin/crs_stat -t
10.1.3 设置DISPLAY环境变量
步骤1:切换到oracle用户
# su - oracle
步骤2:设置DISPLAY环境变量
如果是直接连接到主机的终端上进行安装,执行:
$ export DISPLAY=localhost:0.0
如果是在远程终端上进行安装,执行:
$ export DISPLAY=REMOTE_IP:0.0 --例export DISPLAY=10.71.111.142:0.0
步骤3:检查环境变量是否生效
$ echo $DISPLAY
步骤4:检查oracle的所有环境变量是否已经生效,在启动安装前需要确保.profile中设置的环境变量都已生效。
$ env
10.2 创建ORACLE数据库
必须使用操作系统oracle用户调用DBCA进行安装。
步骤1:启动DBCA安装界面
用oracle用户登录rac1启动DBCA进行安装
$ dbca
选择“Oracle Real Application Clusters database”
步骤2:选择创建数据库
选择“Create a database”
步骤3:选择节点。
选择所有节点。
步骤4:选择数据库模板。
选择“Custom Database”。
步骤5:指定数据库名。
填写数据库全局名和SID前缀,两个名字请保持一致。
各RAC节点上的数据库service name由ORACLE自动设置,值是SID前缀+N,例如ora11g1,ora11g2。
步骤6:配置企业管理器。
勾选此界面中的“Configure Enterprise Manager”,再勾选“Configure Database Control for local management”。
步骤7:设置用户密码。
从安全角度考虑,所设置的密码必须符合以下要求的密码复杂度:
1.口令长度至少6个字符(特权用户至少8个字符);
2.口令必须包含如下至少两种字符的组合:
至少一个小写字母;
至少一个大写字母;
至少一个数字;
至少一个特殊字符:#$-_或空格。
3.口令不能和帐号或者帐号的倒写一样;
步骤8:使用ASM文件管理。
步骤9:选择DG。
勾选界面中的所有DG。
步骤10:选择通用文件位置。
选择“Use Common Location for All Database Files”。
步骤11:不需要指定恢复区。
不勾选此界面中的“Specify Flash Recovery Area”。
不勾选此界面中的“Enable Archiving”。
步骤12:勾选特性。
选中“Enterprise Manager Repository”特性,这个是oracle 11g自带的WEB化的管理工具。其他的特性不选中。
单击“Standard database Components…”按钮。
若是安装CRM产品的数据库,则务必选中此窗口中Oracle JVM。
若是安装CSP/DT/DWH产品的数据库,则不要选中此窗口中的Oracle JVM和Oracle XML DB。
说明:有时“Standard database features…”按钮不显示,需要将此窗口最大化。
步骤13:设置初始参数。
选择典型设置。
此图参数值仅为示例,必须依据《CRM&BI数据库参数配置指导书》为标准进行设置。
在Data Warehousing业务应用中,Block_Size必须选中32K,即32768Bytes。此参数在建库完成后无法修改。
步骤14:选择数据库字符集。
【重要说明】
1.“Choose from the list of character sets”必须改变,且只能选择AL32UTF8或ZHS16GBK两种字符集,规则如下:
国内局点统一使用ZHS16GBK字符集
海外局点统一使用AL32UTF8字符集
2.National Character Set统一选择AL16UTF16
步骤15:数据库安全设置。
使用推荐设置“Keep the enhanced 11g default security settings”。
步骤16:自动维护任务设置。(关闭自动维护任务,不勾选)
步骤17:指定ASM数据文件的名称和路径。
此处需指定system表空间、sysaux表空间、temp表空间、undotbs表空间、users表空间的数据文件裸设备名称和路径,以及Controlfile和Redo Log Files的文件名称和路径。
Diskgroup选择“+DG_ORA”。
步骤18:去掉数据文件的自动扩展功能。
不勾选“Automatically extend datafile when full (AUTOEXTEND)”。
步骤19:生成一个数据库创建脚本。
勾选“Generate Database Creation Scripts”。
步骤20:确认配置参数后开始创建数据库。
步骤21:创建数据库。
DBCA运行完毕,数据库建立。
建库结束后会弹出数据库建库完成及信息确认窗口,单击EXIT按钮后会有1~2分钟没响应,此时千万要耐心等待,直到弹出窗口显示完毕。
完成后DBCA窗口会自动关闭,完成数据库创建操作。
步骤22:检查RAC状态。
以root用户登录,查看服务状态。如果都处于ONLINE状态,则说明RAC安装成功。
# /opt/oracrs/bin/crs_stat -tName Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora....SM1.asm application ONLINE ONLINE rac1
ora....c1.lsnr application ONLINE ONLINE rac1
ora....ac1.gsd application ONLINE ONLINE rac1
ora....ac1.ons application ONLINE ONLINE rac1
ora....ac1.vip application ONLINE ONLINE rac1
ora....g1.inst application ONLINE ONLINE rac1
ora....SM2.asm application ONLINE ONLINE rac2
ora....c2.lsnr application ONLINE ONLINE rac2
ora....ac2.gsd application ONLINE ONLINE rac2
ora....ac2.ons application ONLINE ONLINE rac2
ora....ac2.vip application ONLINE ONLINE rac2
ora....g2.inst application ONLINE ONLINE rac2
步骤23:登录数据库进行验证。
数据库实例启动后,登录数据库确认数据库状态:
# su - oracle
$ sqlplus /nolog
SQL> conn /as sysdba;
SQL> select status from v$instance;
STATUS
------------------------
OPEN
10.3 配置ORACLE监听器
以root用户登录,使用下面的命令检查监听器状态。如果出现下面的结果,则说明成功创建监听器。
# cd /opt/oracrs/bin
# ./crs_stat -t|grep lsnr
ora....c1.lsnr application ONLINE ONLINE rac1
ora....c2.lsnr application ONLINE ONLINE rac2
否则,请按照下述步骤手工创建监听器。
步骤1:启动NETCA
用oracle用户登录rac1启动NETCA
$ netca
选择“Cluster configuration”
步骤2:选择节点
选择所有节点
步骤3:选择配置监听器
步骤4:删除已有监听器
步骤5:选择监听器
选择“LISTENER”
步骤6:确认删除当前监听器。
选择“Yes”。
连续单击“Next”。
步骤7:完成监听器删除操作。
选择“Finish”。
步骤8:重新启动NETCA。
用oracle用户登录rac1启动NETCA。
$ netca
选择“Cluster configuration”。
步骤9:选择节点。
选择所有节点。
步骤10:选择配置监听器。
步骤11:选择添加监听器。
步骤12:填写监听器名称。
在Listener name中填写“LISTENER”。
步骤13:配置监听器规约。
选择“TCP”。
步骤14:使用默认端口号。
步骤15:不再配置其他的监听器。
步骤16:完成监听器增加操作。
选择“Finish”。
十一、RAC常用命令
11.1 CLUSTER命令
11.1.1 启动与停止CLUSTER
使用root用户登录,分别在各节点执行以下命令:
启动CLUSTER
方法1:
# /etc/init.d/init.crs start
方法2:
# /opt/oracrs/bin/crsctl start crs
关闭CLUSTER
方法1:
# /etc/init.d/init.crs stop
方法2:
# /opt/oracrs/bin/crsctl stop crs
11.1.2 观察CLUSTER状态
# /opt/oracrs/bin/crs_stat -t
11.2 ASM的备份与修复
11.2.1 ASM备份与修复的必要性
在LINUX的ORACLE RAC方案中,由于ORACLE迄今为止未正式宣布支持VERITAS的共享裸设备/文件系统作为其存储,因此要使用裸设备的话只能使用ORACLE自带的存储管理软件ASM。测试和现网都发现ASM很不稳定,不时会出现不能挂载磁盘组的错误:
ORA-15063: ASM discovered an insufficient number of disks for diskgroup “DG名”
一旦出现以上错误,该DG所在的数据就很可能全部丢失了!为了尽量降低此类事故的风险,本章节提供了具体的备份与恢复方法。需要注意的是,这些方法只能作为现场出现问题后的救急手段,不能100%保证DG能修复回来,数据不会丢失。它们并不是ORACLE官方推荐的做法(ORACLE官方坚持认为这是由于存储设备不稳定造成的),要想确保数据库的数据完全安全,建议对数据库做好物理备份。以下操作风险较高,需要有经验的DBA来完成。
11.2.2 ASM备份与修复的方法
使用ASM管理RAC存储的环境中,必须做好OCR、VOTING DISK、ASM磁盘头信息的备份。否则一旦出现DG问题,丢失所有数据将是灾难性的!
1、OCR的备份恢复方法
备份OCR的方法如下:
默认地,OCR会被自动备份,使用如下命令查看OCR进行的自动备份:
# $ORA_CRS_HOME/bin/ocrconfig -showbackup
如果要手工备份,可执行下面的命令(不需要关闭RAC):
# $ORA_CRS_HOME/bin/ocrconfig -export /opt/orabak/ocrbak.ocr
恢复OCR的方法如下:
先关闭所有节点上的RAC,分别执行以下命令:
# /etc/init.d/init.crs stop
然后执行恢复:
# $ORA_CRS_HOME/bin/ocrconfig -import /opt/orabak/ocrbak.ocr
2、VOTING DISK的备份与恢复方法
这里,以SUSE上使用raw2作为VOTING DISK为例:
备份命令如下:
# dd if=/dev/raw/raw2 of=/opt/orabak/voting.bak
备份时间会比较长,备份文件与VOTING DISK盘的大小接近。
恢复命令如下:
# dd if=/opt/orabak/voting.bak of=/dev/raw/raw2
恢复前不需要先关闭RAC。
3、 ASM磁盘头信息的备份与恢复方法
备份磁盘头(DH)的信息:
备份方法1:
# dd if=/dev/raw/raw204 bs=4096 count=1 of=/oracle/db/raw204_bak_dh
这里,bs固定为4096。Count=1表示只备份一个块(默认从第一个块开始备份)。
备份方法2:
以oracle用户登录,执行如下命令:
Oracle $ kfed read /dev/raw/raw204 > /oracle/db/raw204au0
恢复DH的信息:
如果用了方法1,则用以下命令恢复:
# dd if=/oracle/db/raw204_bak_dh bs=4096 count=1 of=/dev/raw/raw204
若检查出有 oracle 相关的进程,请不要使用 kill -9 命令杀死进程,否则会导致系统
重启或其他不可预知的错误。请以 root 用户执行如下命令停止 oracle 进程:
# /etc/init.d/init.crs stop
如果系统中创建了多个实例,请参考上述方法,以实例的启动用户将所有的数据库实例停止。
11.3.2 卸载步骤
步骤1:通过 xManager 以 oracle 用户登录 rac1。
步骤2:执行安装脚本。
%cd/opt/orabak/database
%./runInstaller
系统显示如下所示界面。
步骤3:单击“Deinstall Products”,选择要卸载的Oracle产品。
选中安装的 Oracle 数据库软件“ORACLE_HOME”。
步骤4:单击“Remove”。
系统显示确认卸载界面。
步骤5:单击“Yes”。
系统提示是否确认删除相关目录。
步骤6:单击“Yes”。
系统开始自动卸载 Oracle 数据软件。
步骤7:卸载完成后,单击“Close”。
系统返回欢迎界面。
步骤8:单击“Cancel”。
系统提示退出确认界面。
步骤9:手工删除相关目录及其内容。
以下操作需要在双机主备机上都执行,下面以在rac1上执行为例进行说明。
(1)以 root 用户登录rac1。
(2)删除 Oracle Base 目录“/opt/oracle”中的内容。
# rm –rf /opt/oracle/product/11g/db
步骤10:删除“/etc”目录下的相关文件和目录。
# rm /etc/oracle/ocrInst.loc
11.4 卸载CRS
11.4.1 前提条件
Oracle软件已卸载。
CRS已停止。
停止CRS 的方法是在root 用户下执行以下命令:
# /etc/init.d/init.crs stop
11.4.2 卸载步骤
如无特殊说明,以下操作需要在双机的两个节点都执行。以下仅介绍在 rac1 的操作步骤。
步骤1:以 root 用户登录执行。
步骤2:执行卸载脚本。
1、进入 CRS 的安装目录的install目录。
#cd /opt/oracrs/install
其中/opt/oracrs与 oracle 用户环境变量中“$ORA_CRS_HOME”相同。
2、执行卸载脚本。
#./rootdelete.sh
#./rootdeinstall.sh
步骤3:删除 CRS 相关的文件和目录。
1.拷贝/etc/inittab.orig文件。
#cp /etc/inittab.orig /etc/inittab
2.检查 CRS 相关的进程。
执行如下命令,确保没有进程。
#ps -ef |grep css
#ps -ef | grep crs
#ps -ef | grep evm
执行上述命令后,若显示有进程,请执行如下命令关闭进程。
#/etc/init.d/init.crs stop
3.删除“/etc”目录下的相关文件和目录。
#rm /etc/init.cssd
#rm /etc/init.crs
#rm /etc/init.crsd
#rm /etc/init.evmd
#rm /etc/rc.d/rc2.d/K96init.crs
#rm /etc/rc.d/rc2.d/S96init.crs#rm -Rf /etc/oracle/scls_scr
#rm -Rf /etc/oracle/oprocd
#rm /etc/oracle/ocr.loc
#rm /etc/oracle/ocrInst.loc
#rm -rf /etc/oracle
#rm -rf /etc/ora_save_*
#rm /etc/oratab
#rm /etc/*crs*
4.切换到oracle 用户,删除CRS安装目录。
# su - oracle
% rm -rf $ORA_CRS_HOME/*
5.切换到root 用户,删除“/tmp”目录下的相关文件。
% su - root
# rm -rf /tmp/.oracle
# rm -rf /tmp/OraInstal*
6.删除“/var/tmp”目录下的相关文件。
# rm -rf /var/tmp/.oracle
7.清空“/opt/oracle/oraInventory”目录的内容。
# cd /opt/oracle/oraInventory
# rm -rf *
步骤4:以 oracle 用户登录 rac1 执行如下操作。
1.进入CRS安装程序所在目录,执行“runInstaller”脚本。
说明:在双机两个节点上分别执行完步骤 1~步骤 3 后,再执行本步骤。本步骤仅需在一个节点执行即可。
%cd /opt/orabak/clusterware
%./runInstaller
系统显示如下界面。
2.单击“Deinstall Products”,选择要卸载的CRS 产品。
说明:如果没有可卸载的产品选择,可能是卸载Oracle 数据库软件时,已经将CRS 产品的组件卸载,跳过本步骤即可。
3.单击“Yes”。
系统开始卸载自动CRS 数据软件。
4. 卸载完成后,单击“Close”。
系统返回欢迎界面。
5. 单击“Cancle”。
系统提示退出确认界面。
6. 单击“Yes”。
系统提示是否确认删除相关目录。
7.单击“Remove”。
系统显示确认卸载界面。
8.检查CRS 安装目录是否已清空。
以oracle 用户登录检查CRS 安装目录“$ORA_CRS_HOME”是否已清空,如该目录不为空,请执行如下命令清空该目录内容。
%rm -rf $ORA_CRS_HOME/*
步骤5:清空“OCR”和“Voting”文件。
说明:bs 的单位为bytes,bs*count 的值小于等于绑定的裸设备大小即可,请根据实际规划填写,以下仅举例。
因为CRS 使用的外置磁盘空间是LUN 形式,执行如下命令:
#dd if=/dev/zero of=/dev/raw/raw1 bs=4086 count=1048576
#dd if=/dev/zero of=/dev/raw/raw2 bs=4096 count=1048576
步骤6:删除“/etc/inittab”文件的如下三行。
# vi /etc/inittabh1:3:respawn:/sbin/init.d/init.evmd run >/dev/null 2>&1 /dev/null 2>&1
h2:3:respawn:/sbin/init.d/init.cssd fatal >/dev/null 2>&1 /dev/null 2>&1
h3:3:respawn:/sbin/init.d/init.crsd run >/dev/null 2>&1 /dev/null 2>&1
11.5 裸设备挂接注意事项
在SUSE Linux上,多个裸设备可以重复绑定到同一个LV上,这种操作非常危险,因为Oracle不会去区分绑定到同一个LV上的多个裸设备,它们会被当作不同的数据文件。当把已经属于表空间的LV通过裸设备路径再添加到某个表空间时,它会导致LV的数据头重新被格式化,引起数据文件介质损坏,进而导致数据库宕机。对于这个问题我们可以通过root用户在/usr/sbin目录下创建文件bindlv.sh脚本,以改进裸设备挂接程序的不足,防止重复绑定现象的产生,内容如下:
#!/bin/kshmajor=`lvdisplay $2 | awk '/Block device/{print $3}'|awk -F : '{print $1}'`
minor=`lvdisplay $2 | awk '/Block device/{print $3}'|awk -F : '{print $2}'`
iResult=`raw -qa|grep "bound to major $major, minor $minor"`
if [ "$iResult" = "" ]
thenraw $1 $2
elseecho "Error:$2 had been bound before."
fi
然后执行命令chmod u+x /usr/sbin/bindlv.sh为其赋可执行权限。
日后在系统维护增加裸设备时统一使用该脚本进行,它可以避免多个裸设备绑定同一个LV的情况。命令格式与系统自带的raw程序相同,格式如下:
/usr/sbin/bindlv.sh raw_path lv_path