Linux环境Oracle10gR2 RAC教程(超级详细,适合新手,跟着做,绝对成功)

一、 验证操作系统配置是否符合安装要求
在两台机器上以ROOT身份做
内核要求
安装oracle 10g要求Linux系统内核为2.4.9-e.25(或更高版本)

[root@node1 ~]# uname -r
2.6.9-22.Elsmp	

所需程序包要求
其他所需程序包的版本:

gcc-2.96-124 (或更高版本)
make-3.79 (或更高版本)
binutils-2.11 (或更高版本)
openmotif-2.1.30-11 (或更高版本)
glibc-2.2.4-31(或更高版本)
[root@node1 ~]# rpm -q gcc make binutils openmotif glibc
gcc-3.4.4-2
make-3.80-5
binutils-2.15.92.0.2-15
openmotif-2.2.3-9.RHEL4.1
openmotif-2.2.3-9.RHEL4.1
glibc-2.3.4-2.13
glibc-2.3.4-2.13

SWAP分区要求
Oracle在超过8G推荐Swap分区为物理内存的0.8-2倍(视物理内存的大小而定)

[root@node1 ~]# free  -t
             total       used       free     shared    buffers     cached
Mem:      32913828    1678788   31235040          0      70612    1345352
-/+ buffers/cache:     262824   32651004
Swap:     27647856          0   27647856
Total:    60561684    1678788   58882896

经过验证该操作系统符合安装要求,可以安装oracle 10gR2

二、配置网络
在两台机器上以ROOT身份做
配置网关
在/etc/sysconfig/network里加GATEWAY=10.0.38.254

[root@node1 ~] cat > /etc/sysconfig/network <<EOF
NETWORKING=yes
HOSTNAME=node1 (另一个节点为node2)
GATEWAY=10.10.21.121
EOF

配置RAC相关IP地址映射,在两台机器上以ROOT身份做

[root@node1 ~] cat > /etc/hosts <<EOF
127.0.0.1  localhost
11.11.11.1  node1-priv
10.10.21.141  node1
10.10.21.41  node1-vip

11.11.11.2   node2-priv
10.10.21.142  node2
10.10.21.42 node2-vip
EOF

三、配置 ROOT用户内核环境变量
在两台机器上以ROOT身份做,在/root/.bash_profile里加在EXPORT LD_ASSUME_KERNEL=2.4.19

[root@node1 ~] cat >> /root/.bash_profile <<EOF
export LD_ASSUME_KERNEL=2.4.19
EOF
 [root@node1 ~]source /root/.bash_profile

四、配置时钟同步(NTP服务器)

[root@node1 ~] cat > /etc/ntp.conf <<EOF
restrict default ignore 
restrict 10.10.21.0 mask 255.255.255.0 notrap nomodify
server 127.127.1.1            
fudge  127.127.1.1 stratum 10 refid NIST   
driftfile /etc/ntp.drift        
logfile   /var/log/ntp.log     
Broadcastdelay  0.008 
EOF

该节点作为ntp服务器的server端

[root@node1~]service ntpd restart
[root@node1~]chkconfig --level 35 ntpd on

在节点二上以ROOT身份改写配置文件/etc/ntp.conf为

[root@node2~]cat > /etc/ntp.conf <<EOF
restrict default ignore
restrict 127.0.0.1 
restrict 10.10.21.0 mask 255.255.255.0 nomodify
server   10.10.21.141
restrict 10.10.21.141
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
keys /etc/ntp/keys 
EOF

该节点作为ntp服务器的client端

[root@node2~]service ntpd restart
[root@node2~]chkconfig --level 35 ntpd on

用户可用以下两个常用命令查看ntpd服务状态:

1 ntpq -p
2 ntpstat

五、配置并加载 HANGCHECK-TIMER 模块
在两台机器上以ROOT身份做

[root@node1 ~]echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" >> /etc/modprobe.conf
[root@node1 ~]/sbin/modprobe hangcheck-timer

检查设置

[root@node1 ~]grep Hangcheck /var/log/messages | tail -2
Nov 16 13:58:08 node2 kernel: Hangcheck: starting hangcheck timer 0.9.0 (tick is 30 seconds, margin is 180 seconds).
Nov 16 13:58:08 node2 kernel: Hangcheck: Using monotonic_clock().

六、配置内核

[root@node1 ~] cat >> /etc/sysctl.conf <<EOF
kernel.shmall = 2097152
kernel.shmmax = 4294967296(该值至少应是物理内存的1/2,建议设为物理内存大小)
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
EOF

运行以下命令激活更改

[root@node1 ~] # /sbin/sysctl  -p

用以下命令验证相应的参数值

#/sbin/sysctl -a | grep sem(针对修改的每个参数值分别验证)

七、创建 相关组和用户帐户和相关路径
在两台机器上以ROOT身份做

[root@node1 ~] # /usr/sbin/groupadd oinstall
[root@node1 ~] # /usr/sbin/groupadd dba
[root@node1 ~] # /usr/sbin/useradd -m -g oinstall -G dba oracle
[root@node1 ~] # id oracle
uid=500(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)
[root@node1 ~] # passwd oracle
Changing password for user oracle.
New UNIX password: 
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password: 	
passwd: all authentication tokens updated successfully.

创建相关目录

[root@node1 ~] # mkdir    -p  /u01/app/oracle 
[root@node1 ~] #mkdir    -p  /u01/app/crs
[root@node1 ~] # mkdir    -p  /mnt/oradata/
[root@node1 ~] # chown   -R  oracle:oinstall /u01/app/oracle /mnt/oradata/ /u01/app/crs
[root@node1 ~] # chmod   -R  775   /u01/app/oracle /mnt/oradata/ /u01/app/crs

八、为 ORACLE 用户设置 SHELL 限制
在两台机器上以ROOT身份做 ,配置oracle用户可以使用的进程数和打开的文件数。

[root@node1 ~] # cat >> /etc/security/limits.conf <<EOF
oracle               soft    nproc    2047
oracle               hard    nproc   16384
oracle               soft    nofile    1024
oracle               hard    nofile   65536
EOF
[root@node1 ~] # cat >> /etc/pam.d/login <<EOF
session    required     /lib/security/pam_limits.so
EOF
[root@node1 ~] # cat >> /etc/profile <<EOF
if [ \$USER = "oracle" ]; then  
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi	
EOF
[root@node1 ~] # cat >> /etc/csh.login <<EOF
if ( \$USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
EOF

九、配置用户等效性
在两台机器上以ORACLE身份做
生成 SSH 的公共密钥和专用密钥

[oracle@node2 ~]$mkdir ~/.ssh
[oracle@node2 ~]$chmod 755 ~/.ssh
[oracle@node2 ~]$/usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa): 
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:
4b:df:76:77:72:ba:31:cd:c4:e2:0c:e6:ef:30:fc:37 [email protected]

这里一路按回车选择默认就行

[oracle@node2 ~]$ /usr/bin/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:	
af:37:ca:69:3c:a0:08:97:cb:9c:0b:b0:20:70:e3:4a [email protected]

这里一路按回车选择默认就行

将公共密钥文件拷贝到其他节点
现在,必须将每个主机上的公共密钥文件 id_rsa.pub 和 id_dsa.pub 的内容复制到其他每个主机的 ~/.ssh/authorized_keys 文件中。使用ssh将每个文件的内容复制到 ~/.ssh/authorized_keys文件。请注意,当您使用ssh第一次访问远程主机时,其 RSA 密钥将是未知的,从而将提示您确认是否希望连接该主机。SSH 将记录该远程主机的 RSA 密钥,并在以后连接该主机时不再做出相关提示。
只需在第一个主机上,以 oracle 用户身份登录(复制本地帐户的密钥,以便连接本地主机的 ssh 能够起作用):
(如果您要剪切和粘贴这些命令,则分别运行它们。 SSH 每次会提示输入 oracle 的口令,如果同时粘贴这些命令,则第一个命令在提示输入口令之前刷新输入缓冲区,从而导致其他命令将会丢失。)

[root@node1 ~]cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@node1 ~] cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
[root@node1 ~] ssh oracle@node2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (另一个节点为node1)
The authenticity of host 'dbrac02 (10.49.9.100)' can't be established.
RSA key fingerprint is d1:23:a7:df:c5:fc:4e:10:d2:83:60:49:25:e8:eb:11.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'dbrac02,10.49.9.100' (RSA) to the list of known hosts.
oracle@dbrac02's password: 
[root@node1 ~] ssh oracle@node2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys(另一个节点为node1)
oracle@dbrac02's password:
 [root@node1 ~] chmod 644 ~/.ssh/authorized_keys

如果是多台主机做rac集群的话要对第二,第三,第四个主机做同样的处理。请注意,这次有的SSH不会提示您输入oracle的口令。这是因为第一个主机(dbrac01)现在知道了第二个主机的公共密钥,而SSH现在使用的是一种不同的认证协议。
最后,在每个节点上ssh一下所有结点(包括自己)

验证等效性配置

[root@node1 ~] ssh node2 date
The authenticity of host 'dbrac02 (10.49.9.100)' can't be established.
RSA key fingerprint is 8f:a3:19:76:ca:4f:71:85:42:c2:7a:da:eb:53:76:85.
Are you sure you want to continue connecting (yes/no)? yes
Sun Nov 17 19:07:19 CDT 2019

该消息只有在远程节点上第一次执行操作时才会出现,因此通过测试连通性,您不仅确保了远程操作的正常运行,还完成了初始的安全密钥交换。

十、设置ORACLE用户的环境变量

[oracle@node1 ~]$cat > /home/oracle/.bash_profile <<EOF
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
          . ~/.bashrc
fi
# User specific environment and startup programs
export  ORACLE_BASE=/u01/app/oracle
export  ORACLE_HOME=\$ORACLE_BASE/product/102
export  ORA_CRS_HOME=/u01/app/crs
export  CRS_HOME=/u01/app/crs
export  ORACLE_SID=dbroker1  (另一个节点为dbroker2)
export  TNS_ADMIN=\$ORACLE_HOME/network/admin
export  PATH=\$ORACLE_HOME/bin:\$ORA_CRS_HOME/bin:/sbin:\$ORA_ASM_HOME: \$PATH:\$HOME/bin:.
export  DISPLAY=10.0.20.19:0.0
export  NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss' 
export  NLS_LANG=american_america.zhs16gbk 
export  LD_ASSUME_KERNEL=2.4.19
unset   USERNAME
EOF
[oracle@node1 ~]source .bash_profile

十一、创建物理卷和绑定设备(要做逻辑分区跳过这一步)
在一个节点上以ROOT身份做

OCR及VOTING DISK安装路径
先解释一下ocr(sdb1)和vote(sdb2)文件的用途,
OCR(Oracle Cluster Registry):它记录了机群配置和机群数据库的基本配置,默认大概需要100M的空间,这里我们给了它200M的空间,并且考虑到冗余性,ocr有2个;
Vote:它是CSS(Cluster Synchronization Services)需要的文件,用来判断机群内各个节点的状态,默认大概也需要100M的空间,这里我们也给了它200M的空间,并且考虑到冗余性,vote有3个。
我们做如下规划:
sdd1 sdd2 200M OCR
sdd3 sdd5 sdd6 200M voting disk
sdd7 sdd8 500G
sdd4为扩展分区号,在这里不使用

分区
使用fdisk命令按以上规划进行分区(如果是大分区,用parted /dev/sdb命令),然后在node1和node2上执行#partprobe命令同步分区信息

在两个节点上以ROOT身份做

绑定裸设备

raw /dev/raw/raw1 /dev/sdd1 
raw /dev/raw/raw2 /dev/sdd2   
raw /dev/raw/raw3 /dev/sdd3   
raw /dev/raw/raw4 /dev/sdd5  
raw /dev/raw/raw5 /dev/sdd6  
raw /dev/raw/raw6 /dev/sdd7   
raw /dev/raw/raw7 /dev/sdd8  

然后在/etc/sysconfig/rawdevices文件里加如下内容:

/dev/raw/raw1 /dev/sdd1
/dev/raw/raw2 /dev/sdd2
/dev/raw/raw3 /dev/sdd3
/dev/raw/raw4 /dev/sdd5
/dev/raw/raw5 /dev/sdd6
/dev/raw/raw6 /dev/sdd7
/dev/raw/raw7 /dev/sdd8

权限

chown root:oinstall /dev/raw/raw1
chmod 640 /dev/raw/raw1
chown root:oinstall /dev/raw/raw2
chmod 640 /dev/raw/raw2
chown oracle:dba /dev/raw/raw3
chmod 660 /dev/raw/raw3
chown oracle:dba /dev/raw/raw4
chmod 660 /dev/raw/raw4
chown oracle:dba /dev/raw/raw5
chmod 660 /dev/raw/raw5
chown oracle:dba /dev/raw/raw6
chmod 660 /dev/raw/raw6
chown oracle:dba /dev/raw/raw7
chmod 660 /dev/raw/raw7
在/etc/rc.local里加如下内容
chown root:oinstall /dev/raw/raw1(如果安装软件时出问题,则把root改为oracle)
chmod 640 /dev/raw/raw1
chown root:oinstall /dev/raw/raw2
chmod 640 /dev/raw/raw2
chown oracle:dba /dev/raw/raw3
chmod 660 /dev/raw/raw3
chown oracle:dba /dev/raw/raw4
chmod 660 /dev/raw/raw4
chown oracle:dba /dev/raw/raw5
chmod 660 /dev/raw/raw5
chown oracle:dba /dev/raw/raw6
chmod 660 /dev/raw/raw6
chown oracle:dba /dev/raw/raw7
chmod 660 /dev/raw/raw7

十二、创建逻辑卷和绑定设备(要做物理分区跳过这一步)
创建物理卷

[root@node1 ~]pvcreate -f /dev/sdc (如果sdb上已经划分了逻辑卷:把/dev目录下和卷住同名的文件删除如:rm –rf /dev/vg00[在两个节点上做]并用pvcreate -ff /dev/sdb命令重置)
[root@node1 ~]vgscan

创建卷组

[root@node1 ~]vgcreate -s 4m vg01 /dev/sdc

创建逻辑卷

[root@node1 ~]
lvcreate -L 1000 -n ocr01 vg01
lvcreate -L 1000 -n ocr02 vg01
lvcreate -L 1000 -n voting01 vg01
lvcreate -L 1000 -n voting02 vg01
lvcreate -L 1000 -n voting03 vg01
lvcreate -L 500000 -n dbfs vg01

激活卷组

[root@node1 ~]vgchange -a y

在另一个节点上以ROOT身份做

[root@node2 ~]vgscan
[root@node2 ~]vgchange -a y

查看卷组详细信息命令

Vgdisplay -v vg00

映射裸设备,在两个列点上以ROOT身份做

[root@node1 ~]	
raw /dev/raw/raw1  /dev/vg01/ocr01
raw /dev/raw/raw2  /dev/vg01/ocr02
raw /dev/raw/raw3  /dev/vg01/voting01
raw /dev/raw/raw4  /dev/vg01/voting02
raw /dev/raw/raw5  /dev/vg01/voting03
raw /dev/raw/raw6  /dev/vg01/dbfs

写入到文件

[root@node1 ~]raw -qa|awk '{print $1,$5,$7}'|tr ':' ' '|tr ',' ' ' >/etc/sysconfig/rawdevices

设定裸设备所有者和权限

[root@node1 ~]
chown oracle:dba /dev/raw/raw*
chmod 660     /dev/raw/raw*
chown root:oinstall /dev/raw/raw1 
chmod 640 /dev/raw/raw1
chown root:oinstall /dev/raw/raw2
chmod 640 /dev/raw/raw2

写入rc.local文件以便启动时自动执行

[root@node1 ~] cat >> /etc/rc.local <<EOF
/bin/chown oracle:dba /dev/raw/raw*
/bin/chmod 660     /dev/raw/raw*
/bin/chown root:oinstall /dev/raw/raw1
/bin/chmod 640 /dev/raw/raw1
/bin/chown root:oinstall /dev/raw/raw2
chmod 640 /dev/raw/raw2
EOF	

查看裸设备的详细信息

raw –qa
ls -l /dev/vg00

十三、给AS4U2操作系统打补丁

[root@node1 patchforas4u2]# rpm -qa | grep binutils
[root@node1 patchforas4u2]# rpm -Uvh binutils-2.15.92.0.2-15.0.0.0.2.x86_64.rpm
[root@node1 patchforas4u2]# rpm -qa | grep binutils
binutils-2.15.92.0.2-15.0.0.0.2

运行 CVU 的第二个先决条件是针对 Red Hat Linux 用户的。如果运行的是 Red Hat Linux,则必须下载 Red Hat 操作系统程序包 cvuqdisk 并将其安装到集群中的两个 Oracle RAC 节点上。这意味着您将需要在 linux1 和 linux2 上安装 cvuqdisk RPM。如果没有 cvuqdisk,CVU 将无法发现共享磁盘,您在运行 CVU 时会收到错误消息“Package cvuqdisk not installed(程序包 cvuqdisk 未安装)”。cvuqdisk RPM 可在Oracle 集群件安装介质的rpm 目录中找到。将 Oracle 集群件介质解压缩到 linux1 上的 /u01/app/oracle/orainstall/clusterware 目录。注意,在安装 cvuqdisk RPM 之前,我们需要设置名为 CVUQDISK_GRP 的环境变量,使其指向将要拥有 cvuqdisk 实用程序的组。默认的组是 oinstall,这不是本文中我们用于 oracle UNIX 用户帐户的组。因为我们使用的是 dba 组,所以需要在尝试安装 cvuqdisk RPM 之前设置 CVUQDISK_GRP=dba。

[root@node1 ]#cd /inst_rac/crs_10.1/clusterware/rpm
[root@node1 rpm]# export CVUQDISK_GRP=dba
[root@node1 rpm]# rpm -iv cvuqdisk-1.0.1-1.rpm
[root@node1 rpm]# ls -l /usr/sbin/cvuqdisk
-rwsr-x---  1 root dba 4168 Jun  3  2005 /usr/sbin/cvuqdisk

十四、使用CVU验证安装环境是否符合安装CRS软件要求
在上传CRS安装软件的机器上以ROOT身份做

[root@node2 ~]chmod -R 777 /tmp/

在上传CRS安装软件的机器上以ORACLE身份做

[oracle@node2 ~]cd /root/inst_rac/crs_10.1/clusterware/cluvfy

利用 CVU 检查 CRS 的安装前任务

[oracle]@node1 cluvfy]# ./runcluvfy.sh stage -pre crsinst -n node1,node2  -verbose
Performing pre-checks for cluster services setup 

Checking node reachability...

Check: Node reachability from node "node1"
  Destination Node                      Reachable?              
  ------------------------------------  ------------------------
  node1                                 yes                     
  node2                                 yes                     
Result: Node reachability check passed from node "node1".


Checking user equivalence...

Check: User equivalence for user "oracle"
  Node Name                             Comment                 
  ------------------------------------  ------------------------
  node2                                 passed                  
  node1                                 passed                  
Result: User equivalence check passed for user "oracle".

Checking administrative privileges...

Check: Existence of user "oracle"
  Node Name     User Exists               Comment                 
  ------------  ------------------------  ------------------------
  node2         yes                       passed                  
  node1         yes                       passed                  
Result: User existence check passed for "oracle".

Check: Existence of group "oinstall"
  Node Name     Status                    Group ID                
  ------------  ------------------------  ------------------------
  node2         exists                    501                     
  node1         exists                    501                     
Result: Group existence check passed for "oinstall".

Check: Membership of user "oracle" in group "oinstall" [as Primary]
  Node Name         User Exists   Group Exists  User in Group  Primary       Comment     
  ----------------  ------------  ------------  ------------  ------------  ------------
  node2             yes           yes           yes           yes           passed      
  node1             yes           yes           yes           yes           passed      
Result: Membership check for user "oracle" in group "oinstall" [as Primary] passed.

Administrative privileges check passed.

Checking node connectivity...


Interface information for node "node2"
  Interface Name                  IP Address                      Subnet          
  ------------------------------  ------------------------------  ----------------
  eth0                            10.10.21.142                    10.10.0.0       
  eth1                            11.11.11.2                      11.11.11.0      


Interface information for node "node1"
  Interface Name                  IP Address                      Subnet          
  ------------------------------  ------------------------------  ----------------
  eth0                            10.10.21.141                    10.10.0.0       
  eth1                            11.11.11.1                      11.11.11.0      


Check: Node connectivity of subnet "10.10.0.0"
  Source                          Destination                     Connected?      
  ------------------------------  ------------------------------  ----------------
  node2:eth0                      node1:eth0                      yes             
Result: Node connectivity check passed for subnet "10.10.0.0" with node(s) node2,node1.

Check: Node connectivity of subnet "11.11.11.0"
  Source                          Destination                     Connected?      
  ------------------------------  ------------------------------  ----------------
  node2:eth1                      node1:eth1                      yes             
Result: Node connectivity check passed for subnet "11.11.11.0" with node(s) node2,node1.

Suitable interfaces for VIP on subnet "11.11.11.0":
node2 eth1:11.11.11.2
node1 eth1:11.11.11.1

Suitable interfaces for the private interconnect on subnet "10.10.0.0":
node2 eth0:10.10.21.142
node1 eth0:10.10.21.141

Result: Node connectivity check passed.


Checking system requirements for 'crs'...

Check: Total memory 
  Node Name     Available                 Required                  Comment   
  ------------  ------------------------  ------------------------  ----------
  node2         31.39GB (32913700KB)      512MB (524288KB)          passed    
  node1         31.39GB (32913700KB)      512MB (524288KB)          passed    
Result: Total memory check passed.

Check: Free disk space in "/tmp" dir
  Node Name     Available                 Required                  Comment   
  ------------  ------------------------  ------------------------  ----------
  node2         32.18GB (33744928KB)      400MB (409600KB)          passed    
  node1         25.74GB (26991968KB)      400MB (409600KB)          passed    
Result: Free disk space check passed.

Check: Swap space 
  Node Name     Available                 Required                  Comment   
  ------------  ------------------------  ------------------------  ----------
  node2         26.37GB (27647856KB)      1GB (1048576KB)           passed    
  node1         26.37GB (27647856KB)      1GB (1048576KB)           passed    
Result: Swap space check passed.

Check: System architecture 
  Node Name     Available                 Required                  Comment   
  ------------  ------------------------  ------------------------  ----------
  node2         x86_64                    x86_64                    passed    
  node1         x86_64                    x86_64                    passed    
Result: System architecture check passed.

Check: Kernel version 
  Node Name     Available                 Required                  Comment   
  ------------  ------------------------  ------------------------  ----------
  node2         2.6.9-22.ELsmp            2.6.9-11.EL               passed    
  node1         2.6.9-22.ELsmp            2.6.9-11.EL               passed    
Result: Kernel version check passed.

Check: Package existence for "binutils-2.15.92.0.2-13" 
  Node Name                       Status                          Comment         
  ------------------------------  ------------------------------  ----------------
  node2                           binutils-2.15.92.0.2-15.0.0.0.2  passed          
  node1                           binutils-2.15.92.0.2-15.0.0.0.2  passed          
Result: Package existence check passed for "binutils-2.15.92.0.2-13".

Check: Group existence for "dba" 
  Node Name     Status                    Comment                 
  ------------  ------------------------  ------------------------
  node2         exists                    passed                  
  node1         exists                    passed                  
Result: Group existence check passed for "dba".

Check: Group existence for "oinstall" 
  Node Name     Status                    Comment                 
  ------------  ------------------------  ------------------------
  node2         exists                    passed                  
  node1         exists                    passed                  
Result: Group existence check passed for "oinstall".

Check: User existence for "nobody" 
  Node Name     Status                    Comment                 
  ------------  ------------------------  ------------------------
  node2         exists                    passed                  
  node1         exists                    passed                  
Result: User existence check passed for "nobody".

System requirement passed for 'crs'

Pre-check for cluster services setup was successful.

利用 CVU 检查硬件和操作系统设置

[oracle]@node1 cluvfy]#./runcluvfy.sh stage -post hwos -n node1,node2  -verbose
Performing post-checks for hardware and operating system setup 

Checking node reachability...

Check: Node reachability from node "node1"
  Destination Node                      Reachable?              
  ------------------------------------  ------------------------
  node1                                 yes                     
  node2                                 yes                     
Result: Node reachability check passed from node "node1".


Checking user equivalence...

Check: User equivalence for user "oracle"
  Node Name                             Comment                 
  ------------------------------------  ------------------------
  node2                                 passed                  
  node1                                 passed                  
Result: User equivalence check passed for user "oracle".

Checking node connectivity...


Interface information for node "node2"
  Interface Name                  IP Address                      Subnet          
  ------------------------------  ------------------------------  ----------------
  eth0                            10.10.21.142                    10.10.0.0       
  eth1                            11.11.11.2                      11.11.11.0      


Interface information for node "node1"
  Interface Name                  IP Address                      Subnet          
  ------------------------------  ------------------------------  ----------------
  eth0                            10.10.21.141                    10.10.0.0       
  eth1                            11.11.11.1                      11.11.11.0      


Check: Node connectivity of subnet "10.10.0.0"
  Source                          Destination                     Connected?      
  ------------------------------  ------------------------------  ----------------
  node2:eth0                      node1:eth0                      yes             
Result: Node connectivity check passed for subnet "10.10.0.0" with node(s) node2,node1.

Check: Node connectivity of subnet "11.11.11.0"
  Source                          Destination                     Connected?      
  ------------------------------  ------------------------------  ----------------
  node2:eth1                      node1:eth1                      yes             
Result: Node connectivity check passed for subnet "11.11.11.0" with node(s) node2,node1.

Suitable interfaces for VIP on subnet "11.11.11.0":
node2 eth1:11.11.11.2
node1 eth1:11.11.11.1

Suitable interfaces for the private interconnect on subnet "10.10.0.0":
node2 eth0:10.10.21.142
node1 eth0:10.10.21.141

Result: Node connectivity check passed.


Checking shared storage accessibility...


Shared storage check failed on nodes "node2,node1".

Post-check for hardware and operating system setup was unsuccessful on all the nodes.

注意: 该警告也可忽略,没什么问题。虽然我们知道这些磁盘可见并在集群中的两个 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 http://smartmontools.sourceforge.net/
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

验证成功可以安装crs了

cd /stage/oracle/10.2.0/crs/clusterware/cluvfy
./runcluvfy.sh stage -pre crsinst -n longshi_rac01,longshi_rac02 –verbose

cd /stage/oracle/10.2.0/crs/clusterware/cluvfy
./runcluvfy.sh stage -post hwos -n longshi_rac01,longshi_rac02 –verbose

十五、使用OUI安装CRS
安装CRS,在上传CRS安装软件的机器上以ORACLE身份做
进入clusterware目录

[oracle@node1 ~]./runInstaller

在这里插入图片描述
指定安装目录和对其有写权限的操作系统组,这里使用默认值即可(在环境变量里已指定)
在这里插入图片描述
选择crs的安装路径,这里使用默认值即可
在这里插入图片描述
系统在安装前检查用户所配置的软硬件环境是否符合要求,这里Passed表示完全合乎oracle的安装要求。

在这里插入图片描述
下图中只显示了一台服务器节点,验证该节点信息是和/etc/hosts中的内容一致,同时把节点node2添加到集群配置中
在这里插入图片描述
单击“编辑”按钮,将eth0网卡的网段设为“公共”,然后点击“确定”(默认eth0是“公共”)
以下这步要确定好是哪张网卡提供公共对外服务,哪张网卡提供心跳检测私有服务,千万不能弄错.
在这里插入图片描述
指定OCR的位置(前面已经设置好的)。然后单击“下一步”
提示:这里可以选择正常冗余或外部冗余,效果一样,正常冗余提供了一个OCR的镜像位置,而外部冗余没有提供OCR镜像,只需要OCR位置就可以,由于前期我们在规划的时候就规划了OCR镜像,因此我们这里选择正常冗余,下面表决磁盘的配置也是一样.
在这里插入图片描述
指定表决盘的位置
在这里插入图片描述
开始安装
在这里插入图片描述
安装进行中
在这里插入图片描述
在两个节点上依次执行以下两个脚本

1.	在 node1 上执行 /u01/app/oracle/oraInventory/orainstRoot.sh。 
2.	在 node2 上执行 /u01/app/oracle/oraInventory/orainstRoot.sh。
3.	在 node1 上执行 /u01/app/crs/root.sh。 
4.	在 node2 上执行 /u01/app/crs/root.sh。

在这里插入图片描述
在第二个节点执行root.sh脚本时发生以下错误

[root@node2 network-scripts]# /u01/app/crs/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 NS directories
Oracle Cluster Registry configuration upgraded successfully
clscfg: EXISTING configuration version 3 detected.
clscfg: version 3 is 10G Release 2.
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: node1 node1-priv node1
node 2: node2 node2-priv node2
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 90 seconds.
Adding daemons to inittab
Expecting the CRS daemons to be up within 600 seconds.
CSS is active on these nodes.
        node1
        node2
CSS is active on all nodes.
Waiting for the Oracle CRSD and EVMD to start
Oracle CRS stack installed and running under init(1M)
Running vipca(silent) for configuring nodeapps
THE GIVEN INTERFACE(S), "ETH0" IS NOT PUBLIC. PUBLIC INTERFACES SHOULD BE USED TO CONFIGURE VIRTUAL IPS

以上错误是因为使用了不可路由的IP地址如(192.168.X.X)造成的
解决办法如下
以 root 用户身份在第二个节点上手动调用 VIPCA

[root@node2network-scripts]# /u01/app/crs/bin/vipca

选择下一步
在这里插入图片描述
网络接口:选择 eth0
在这里插入图片描述
配置集群节点的虚拟 IP:

节点名称:rac1 
IP 别名:  rac1-vip 
IP 地址:  10.0.39.4 
子网掩码: 255.255.255.0 
节点名称: rac2 
IP 别名:  rac2-vip 
IP 地址:  10.0.39.5
子网掩码: 255.255.255.0 

在这里插入图片描述
核对配置详情
在这里插入图片描述
开始配置
在这里插入图片描述
配置成功
在这里插入图片描述
返回到crs执行配置脚本屏幕,然后单击 OK。
在这里插入图片描述
所有安装都成功了
在这里插入图片描述
安装结束了
在这里插入图片描述
(4)完成 Oracle Clusterware 配置
在节点1上以 oracle 用户执行下面操作:

/u01/app/crs/bin/crs_stat -t

在每个节点上以 oracle 用户执行下面命令:
#检查集群节点

/u01/app/crs/bin/olsnodes -n

#检查 Oracle 集群件自动启动脚本

ls -l /etc/init.d/init.*

卸载CRS

如果我们安装CRS出现了问题,就必须要卸载CRS了。而CRS是一个很令人头疼的服务,卸载CRS也是一个非常繁琐的工作。在目前的release1中,如果机群中的一个节点重启(无论什么原因,即使crs服务是正常的),机群中的所有节点都会随之重启。因为CSS服务会定期检查机群中所有节点的服务可用性,当有一个节点出现问题,系统为了保证数据一致性,就会令其他节点重启,重新检查服务,直到所有节点服务都正常。但是就我们现在遇到的情况而言,这种重启后自动回复正常的情况极少(目前还没有自动恢复过),经常会导致loopreboot。因此,在metalink上有很多关于这方面的介绍。这里,作者将实战经验与网上经验相结合,总结如下(目前的方法就是卸载所有oracle服务和CRS,然后重装)。
1.	阻止循环重启的方法
方法一:将CRS服务禁止
在机器重启之间的那几秒中检测时间内,执行
# /etc/init.d/init.crs disable
禁止crs服务,在下一此重启后,系统将停止循环,但是要把握操作时机。
方法二:拔掉与共享设备的连线
ocr和voting disk文件是存放在共享设备中的,而CSS进程每次都要从这些文件中读取机群的配置信息,因此,在机器重启时断掉与共享设备的连接,机器也将停止循环重启。该方法操作简单,但是由于读取数据不完整,对于接下来的修复可能会带来一些不便。
方法三:改写启动脚本
将/etc/inittab中的最后三行注释掉,如:
#h1:35:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1 </dev/null
#h2:35:respawn:/etc/init.d/init.cssd fatal >/dev/null 2>&1 </dev/null
#h3:35:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1 </dev/null
令机器在下一次重启时,不在启动服务。该方法的操作时机要把握好,否则没等文件修改完毕,机器就又要重启。
2.	在机群中的所有节点上执行$ORA_CRS_HOME/install/rootdelete.sh;
3.	在机群中的任意一个节点上执行$ORA_CRS_HOME/install/rootdeinstall.sh;
4.	用图形界面OUI卸载crs;
a)	执行./runInstall
b)	在界面中选择Installed;
c)	选择home1,一般要先安装CRS,所以CRS的home一般都是home1。
5.	在机群所有节点上执行

在这里插入图片描述

6.	清掉共享磁盘上的内容。
如果ocr和voting disk所在分区不大,可以直接用下面命令清除:
# dd if=/dev/zero of=/dev/sdd1
# dd if=/dev/zero of=/dev/sdd1   (是不是sdd2?)
7.	如果可以,重启机群内所有节点。
8.	清理干净后,重新安装CRS。
(卸载所有oracle服务。我也并不想这样做,但是即使我们stop loopreboot,但是也无法让机群中所有节点整齐的再将CRS服务启动起来。基本上每次都显示CSS服务初始化错误,即voting disk有可能受损。)

十六、升级CRS

以ROOT身份在两个节点上做

[root@node1]$CRS_HOME/bin/crsctl stop crs

在上传CRS安装软件的机器上以ORACLE身份做

[oracle@node1]$ cd /rac_inst/10203update
[oracle@node1]$./runInstaller

在这里插入图片描述
选择好安装crs的路径然后一路下一步
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以ROOT身份在两个节点上做

[root@node1]$CRS_HOME/bin/crsctl stop crs
Stopping resources.
Error while stopping resources. Possible cause: CRSD is down.
Stopping CSSD.
Unable to communicate with the CSS daemon.

[root@node1]$CRS_HOME/install/root102.sh
CREATING PRE-PATCH DIRECTORY FOR SAVING PRE-PATCH CLUSTERWARE FILES
COMPLETED PATCHING CLUSTERWARE FILES TO /U01/APP/CRS
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.
.
10203 PATCH SUCCESSFULLY APPLIED.
CLSCFG: EXISTING CONFIGURATION VERSION 3 DETECTED.
CLSCFG: VERSION 3 IS 10G RELEASE 2.
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: NODE1 NODE1-PRIV NODE1
CREATING OCR KEYS FOR USER 'ROOT', PRIVGRP 'ROOT'..
OPERATION SUCCESSFUL.
CLSCFG -UPGRADE COMPLETED SUCCESSFULLY

十七、安装ORACLE数据库
在上传CRS安装软件的机器上以ORACLE身份做

[oracle@node1network-scripts]$./runInstaller

在这里插入图片描述
这里选择自定义安装
在这里插入图片描述
选择oracle的安装路径,这里使用默认值即可(在环境变量里已指定)。
在这里插入图片描述
选择集群安装、选择所有节点
在这里插入图片描述
根据oracle数据库的实际应用选择所要安装的组件,这里除了企业级安装组件意外其他都安装。
在这里插入图片描述
系统在安装前检查用户所配置的软硬件环境是否符合要求,这里Passed表示完全合乎oracle的安装要求。
在这里插入图片描述
声明数据库管理员的特权组,这里使用默认值dba。
在这里插入图片描述
选择只安装数据库软件
在这里插入图片描述
显示安装详情
在这里插入图片描述
开始安装
在这里插入图片描述
以root身份在两个节点上依次运行root.sh这个脚本
在这里插入图片描述
安装成功
在这里插入图片描述
十八、升级数据库
在上传ORACLE数据库安装软件的机器上以ORACLE身份做

[oracle@node1]$ cd /rac_inst/10203update
[oracle@node1]$./runInstaller

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后运行一个脚本

十九、配置监听

[oracle@node2 network-scripts]$netca

选择集群配置
在这里插入图片描述
选择监听程序配置
在这里插入图片描述
选择添加
在这里插入图片描述
使用默认的监听程序名——LISTENER
在这里插入图片描述
选择TCP协议
在这里插入图片描述
使用默认的监听端口——1521
在这里插入图片描述
选择否,单击“下一步”
在这里插入图片描述
选择下一步
在这里插入图片描述
选择命名方法配置
在这里插入图片描述
选择本地命名
在这里插入图片描述
单击下一步
在这里插入图片描述
单击完成
在这里插入图片描述

二十、创建数据库和实例

以 oracle 用户身份登录,用图形界面运行dbca

$/u01/app/oracle/product/102/bin/dbca

在这里插入图片描述
在以上界面选择"Oracle Real Application Clusters database",Next
在这里插入图片描述
选择Create a Database, Next
在这里插入图片描述
Select All, Next
在这里插入图片描述
选择General Purpose, Next
在这里插入图片描述
输入dbroker, Next
在这里插入图片描述
Next
在这里插入图片描述
输入密码,Next
在这里插入图片描述
选择ASM, Next
在这里插入图片描述
设置 SYS 口令并确认;选择创建初始化参数文件 (IFILE), Next
在这里插入图片描述
OK,等待一会
在这里插入图片描述
选择磁盘组,把数据盘加上(不加表决盘),Mount,然后点Next
在这里插入图片描述
使用Oracle管理的文件,Next
在这里插入图片描述
Next
在这里插入图片描述
Next
在这里插入图片描述
Next
在这里插入图片描述
在Character Sets中使用ZHS16GBK和UTF8字体,Next
在这里插入图片描述
Next
在这里插入图片描述
创建脚本(也可以不创建),Finish
在这里插入图片描述
OK
在这里插入图片描述
完毕,Exit

最后查看一下状态:

$/u01/app/crs/bin/crs_stat –t
Name           Type           Target    State     Host
------------------------------------------------------------
ora.dbroker.db application    ONLINE    ONLINE    node1
ora....r1.inst application    ONLINE    ONLINE    node2
ora....r2.inst application    ONLINE    ONLINE    node1
ora....SM2.asm application    ONLINE    ONLINE    node1
ora....E8.lsnr application    ONLINE    ONLINE    node1
ora.node1.gsd  application    ONLINE    ONLINE    node1
ora.node1.ons  application    ONLINE    ONLINE    node1
ora.node1.vip  application    ONLINE    ONLINE    node1
ora....SM1.asm application    ONLINE    ONLINE    node2
ora....E9.lsnr application    ONLINE    ONLINE    node2
ora.node2.gsd  application    ONLINE    ONLINE    node2
ora.node2.ons  application    ONLINE    ONLINE    node2
ora.node2.vip  application    ONLINE    ONLINE    node2
发布了57 篇原创文章 · 获赞 85 · 访问量 9612

猜你喜欢

转载自blog.csdn.net/qq_41944882/article/details/103106437
今日推荐