一步一步在Linux上升级10gR2 RAC到11gR2 RAC(1)

概述:

    继本人上一个系列的Oracle 11gR2 RAC+DG项目实战教程发布已一年有余,在此期间,那个系列的教程得到众多网友的喜爱与好评,更是在互联网上畅销不衰。为此,众多网友也一直希望本人推出Oracle 10gR2 RAC的系列教程,恰逢前不久,深圳某客户需要将一套Oracle 10gR2双节点RAC生产数据库升级至Oracle 11gR2 RAC,所以便有了本系列实战的视频教程。

为更贴切还原生产过程中的实际操作,本系列教程一个分两大部分:

第一部分,从零开始一步一步搭建一套在OEL 5.5 X86_64位环境下的双节点10gR2 RAC数据库,并将数据库升级至10.2.0.5.0版本。

第二部分,一步一步将10gR2 RAC升级至Oracle 11gR2 RAC,数据库版本选择11g最新的11.2.0.4.0版本。

 

本文是第二部分:

主要步骤:

一、配置SCAN IPDNS、停止ntpd服务

二、oracle用户添加至oper用户组

三、创建grid软件的basehome相关目录

四、创建11gR2 oracle软件的home目录

五、创建11gR2 grid Infrastructureasm磁盘

六、停止10gR2 RAC软件

七、备份10gR2 RAC软件

八、安装grid软件

九、迁移10g RAC 磁盘组至11gR2 grid

十、安装11gR2 oracle软件

十一、升级10gR2 RAC数据库至11gR2 RAC数据库

 

配置SCAN IPDNS、停止ntpd服务

DNS服务器配置在此不再赘述,具体可以:

查看本人之前的系列视频之《黄伟老师Oracle RAC+DG系列视频+售后安心技术支持服务2讲:RAC第一个节点准备工作之:配置网络、DNS服务器

2 或查看本人系列文章之一步一步在Linux上安装Oracle 11gR2 RAC (2)2.3配置DNS服务器,确认SCAN IP可以被解析

因为我们的双节点服务器指定了oracleonlinux.cn域名,所以具体需要做特别修改的地方,:

A  /var/named/chroot/etc/named.rfc1912.zones添加下述内容:

zone “oracleonlinux.cn” IN {

        type master;

        file “oracleonlinux.cn.zone”;

        allow-update { none; };

};

B  添加正向解析配置文件:

[root@rdd named]# pwd

/var/named/chroot/var/named

[root@rdd named]# cat oracleonlinux.cn.zone 

$TTL    86400

@               IN SOA  oracleonlinux.cn root.oracleonlinux.cn (

                                        42              ; serial (d. adams)

                                        3H              ; refresh

                                        15M             ; retry

                                        1W              ; expiry

                                        1D )            ; minimum

                IN NS           oracleonlinux.cn

localhost       IN A            127.0.0.1

scan-cluster        IN A            172.16.0.223

[root@rdd named]# 

C  修改反向解析配置文件:

[root@rdd named]# pwd

/var/named/chroot/var/named

[root@rdd named]# ll

total 44

-rw-r—– 1 root  named  491 Dec 19 11:39 0.16.172.in-addr.arpa

drwxrwx— 2 named named 4096 Dec 19 10:45 data

-rw-r—– 1 root  named  244 Nov 23 14:19 localdomain.zone

-rw-r—– 1 root  named  195 Jan 21  2010 localhost.zone

-rw-r—– 1 root  named  427 Jan 21  2010 named.broadcast

-rw-r—– 1 root  named 1892 Jan 21  2010 named.ca

-rw-r—– 1 root  named  424 Jan 21  2010 named.ip6.local

-rw-r—– 1 root  named  426 Jan 21  2010 named.local

-rw-r—– 1 root  named  427 Jan 21  2010 named.zero

-rw-r—– 1 root  named  275 Dec 19 11:39 oracleonlinux.cn.zone

drwxrwx— 2 named named 4096 Jul 27  2004 slaves

[root@rdd named]# cat 0.16.172.in-addr.arpa 

$TTL    86400

@       IN      SOA     oracleonlinux.cn. root.oracleonlinux.cn.  (

                                      1997022700 ; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

                                      86400 )    ; Minimum

        IN      NS      localhost.

1       IN      PTR     localhost.

223     IN      PTR     scan-cluster.oracleonlinux.cn.

[root@rdd named]# 

 

双节点验证SCAN IP可以解析:

Node1

 

Node2

 

 

双节点停止NTP服务:

Node1:

[root@node1 ~]# ll /etc/ntp.conf 

-rw-r–r– 1 root root 1833 Dec  9  2009 /etc/ntp.conf

[root@node1 ~]# mv /etc/ntp.conf /etc/ntp.conf.bak

[root@node1 ~]# service ntpd stop

Shutting down ntpd: [FAILED]

[root@node1 ~]# service ntpd status

ntpd is stopped

[root@node1 ~]# 

Node2:

[root@node2 ~]# ll /etc/ntp.conf 

-rw-r–r– 1 root root 1833 Dec  9  2009 /etc/ntp.conf

[root@node2 ~]# mv /etc/ntp.conf /etc/ntp.conf.bak

[root@node2 ~]# service ntpd status

ntpd is stopped

[root@node2 ~]# service ntpd stop

Shutting down ntpd: [FAILED]

[root@node2 ~]# 

 

oracle用户添加至oper用户组

双节点上创建oper用户组、并将oracle用户添加至oper组。

Node1:

[root@node1 ~]# id oracle

uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)

[root@node1 ~]# groupadd oper

[root@node1 ~]# usermod -a -G oper oracle

[root@node1 ~]# id oracle

uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba),502(oper)

[root@node1 ~]# 

Node2:

[root@node2 ~]# id oracle

[root@node2 ~]# id oracle

uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)

[root@node2 ~]# groupadd oper

[root@node2 ~]# usermod -a -G oper oracle

[root@node2 ~]# id oracle

uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba),502(oper) 

[root@node2 ~]# 

创建grid软件的basehome相关目录

Note

这里设置grid软件的oracle_base=/u01/app/gridgrid 软件的oracle_home=/u01/app/11.2.0/grid

需要注意的是,这两个目录是并行的目录,不能像传统的那样将oracle_home设置为oracle_base的子目录!

节点1

[root@node1 ~]# hostname 

node1.oracleonlinux.cn

[root@node1 ~]# mkdir -p /u01/app/grid

[root@node1 ~]# mkdir -p /u01/app/11.2.0/grid

[root@node1 ~]# chown -R oracle:oinstall /u01

[root@node1 ~]# ll /u01/app/

total 12

drwxrwxr-x 3 oracle oinstall 4096 Dec 25 20:19 11.2.0

drwxr-xr-x 2 oracle oinstall 4096 Dec 25 20:18 grid

drwxrwxr-x 5 oracle oinstall 4096 Dec 25 17:25 oracle

[root@node1 ~]# 

节点2

[root@node2 ~]# hostname 

node2.oracleonlinux.cn

[root@node2 ~]# mkdir -p /u01/app/grid

[root@node2 ~]# mkdir -p /u01/app/11.2.0/grid

[root@node2 ~]# chown -R oracle:oinstall /u01

[root@node2 ~]# ll /u01/app/

total 24

drwxrwxr-x 3 oracle oinstall 4096 Dec 25 20:21 11.2.0

drwxr-xr-x 2 oracle oinstall 4096 Dec 25 20:21 grid

drwxrwxr-x 5 oracle oinstall 4096 Dec 22 10:17 oracle

[root@node2 ~]# 

 

创建11gR2 oracle软件的home目录

Note

这里设置ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1ORACLE_BASE还保留之前的10g版本下的设置。

Node1

node1-> mkdir -p /u01/app/oracle/product/11.2.0/db_1

node1-> ll /u01/app/oracle/product/

total 8

drwxrwxr-x 4 oracle oinstall 4096 Dec 21 23:23 10.2.0

drwxr-xr-x 3 oracle oinstall 4096 Dec 26 09:32 11.2.0

node1-> 

Node2

node2-> pwd

/home/oracle

node2-> mkdir -p /u01/app/oracle/product/11.2.0/db_1

node2-> ll /u01/app/oracle/product/

total 16

drwxrwxr-x 4 oracle oinstall 4096 Dec 21 23:32 10.2.0

drwxr-xr-x 3 oracle oinstall 4096 Dec 26 09:34 11.2.0

node2-> 

创建11gR2 grid Infrastructureasm磁盘

节点上将之前配置的/dev/sdf1硬盘分区创建成第3ASM磁盘,用作将来安装grid软件时来存放OCRVoting Disk

Node1

[root@node1 ~]# /etc/init.d/oracleasm listdisks

ASMDISK1

ASMDISK2

[root@node1 ~]# /etc/init.d/oracleasm querydisk /dev/sd*

Device “/dev/sda” is not marked as an ASM disk

Device “/dev/sda1” is not marked as an ASM disk

Device “/dev/sda2” is not marked as an ASM disk

Device “/dev/sdb” is not marked as an ASM disk

Device “/dev/sdb1” is not marked as an ASM disk

Device “/dev/sdc” is not marked as an ASM disk

Device “/dev/sdc1” is not marked as an ASM disk

Device “/dev/sdd” is not marked as an ASM disk

Device “/dev/sdd1” is marked an ASM disk with the label “ASMDISK1”

Device “/dev/sde” is not marked as an ASM disk

Device “/dev/sde1” is marked an ASM disk with the label “ASMDISK2”

Device “/dev/sdf” is not marked as an ASM disk

Device “/dev/sdf1” is not marked as an ASM disk

[root@node1 ~]# /etc/init.d/oracleasm createdisk asmdisk3 /dev/sdf1

Marking disk “asmdisk3” as an ASM disk: [  OK  ]

[root@node1 ~]# /etc/init.d/oracleasm listdisks

ASMDISK1

ASMDISK2

ASMDISK3

[root@node1 ~]# 

Node2

[root@node2 ~]# /etc/init.d/oracleasm listdisks

ASMDISK1

ASMDISK2

[root@node2 ~]# /etc/init.d/oracleasm scandisks

Scanning the system for Oracle ASMLib disks: [  OK  ]

[root@node2 ~]# /etc/init.d/oracleasm listdisks

ASMDISK1

ASMDISK2

ASMDISK3

[root@node2 ~]# 

Device ‘xx’ is already labeled for ASM disk 的故障处理

简单记录一则在Linux平台上创建ASM磁盘时遭遇:

Device “/dev/sdf1” is already labeled for ASM disk “”

的错误!

1 故障现象:

[root@node1 ~]# /usr/sbin/oracleasm listdisks 
ASMDISK1
ASMDISK2
[root@node1 ~]# /usr/sbin/oracleasm createdisk asmdisk3 /dev/sdf1
Device "/dev/sdf1" is already labeled for ASM disk ""
[root@node1 ~]# ll /dev/oracleasm/disks/
total 0
brw-rw---- 1 oracle oinstall 8, 49 Dec 25 16:53 ASMDISK1
brw-rw---- 1 oracle oinstall 8, 65 Dec 25 16:53 ASMDISK2
[root@node1 ~]#

2 故障处理:

通过查看/etc/blkid/blkid.tab文件,确实看到设备/dev/sdf1已经是一块ASM磁盘,只是ASM卷标为空。

[root@node1 ~]# cat /etc/blkid/blkid.tab
/dev/sda2
/dev/sda1
/dev/cdrom
/dev/hdc
/dev/sde1
/dev/sdd1
/dev/sdf1
[root@node1 ~]# 

通过/usr/sbin/oracleasm renamedisk命令来重命名磁盘:

[root@node1 ~]# /usr/sbin/oracleasm renamedisk -f /dev/sdf1 asmdisk3
Writing disk header: done
Instantiating disk "ASMDISK3": done
[root@node1 ~]# /usr/sbin/oracleasm listdisks 
ASMDISK1
ASMDISK2
ASMDISK3
[root@node1 ~]# ll /dev/oracleasm/disks/
total 0
brw-rw---- 1 oracle oinstall 8, 49 Dec 25 16:53 ASMDISK1
brw-rw---- 1 oracle oinstall 8, 65 Dec 25 16:53 ASMDISK2
brw-rw---- 1 oracle oinstall 8, 81 Dec 25 17:16 ASMDISK3
[root@node1 ~]#

且,重启操作系统之后:

[root@node1 ~]# cat /etc/blkid/blkid.tab
/dev/sda2
/dev/sda1
/dev/cdrom
/dev/hdc
/dev/sdf1
/dev/sde1
/dev/sdd1
[root@node1 ~]# 

3 故障原因:

之前,的确已经将设备/dev/sdf1创建成了ASM磁盘,然后,在操作系统级别将/dev/sdf硬盘的第1个分区sdf1直接删除后,重新创建了分区sdf1之后,再想将/dev/sdf1创建为ASM磁盘时,就遭遇到上述的错误信息!

4 如何避免:

正确的步骤,先通过/usr/sbin/oracleasm deletedisk命令来删除对应的ASM磁盘,然后在操作系统级别删除对应的硬盘分区,重新创建新分区之后,再在该硬盘分区上通过/usr/sbin/oracleasm createdisk命令创建ASM磁盘时,就不会出现上述错误了!

配置Oracle RAC时修改/etc/hosts文件的注意事项

首先,我们的问题是:在部署Oracle RAC的时候为什么需要修改/etc/hosts文件? 或者具体的说,我们在Linux平台部署Oracle RAC时为什么需要将/etc/hosts文件里的环路地址修改为
        127.0.0.1               localhost
格式? 当然,不同操作系统平台需要修改的hosts文件名称和位置,依赖于操作系统本身。如:Windows下需要修改的是C:\Windows\System32\drivers\etc\hosts文件。

接下来,要想搞清楚这个问题不难,了解一些网络相关的基础知识即可。
我们知道,在一个网络环境中,我们可以通过IP地址去精确访问某个网络设备[如主机、pc、打印机],也可以通过这个设备名来访问该设备。
通过IP地址去定位某个设备时,如果网络未遭受诸如ARP攻击的话,则通常都不会出现问题。关于ARP问题不是本篇重点,不再赘述。
而要想通过主机名去访问时,就需要有某种转换规则可以正确的将主机名称与IP地址成功映射。
这种转换规则通常可以有3种途径:
1 hosts配置文件;
2 NIS[Network Information System|Service],网络信息服务,或者称之为”网络黄页”;
3 DNS[Domain Name System],域名系统。

在没有配置NIS、DNS的网络环境下,/etc/hosts文件则成为我们通过主机名来访问该主机的唯一选择了。
这个配置文件里记录着网络中每一台主机名与其对应的IP地址,而且如果出现某个主机名对应多个IP的话,则只有第一条记录生效,可以用于正确的解析主机名,在解析过程中,后面出现的记录将被忽略。该文件的配置格式如下:
        IP Address    hostname    aliases

看个例子,如果保留默认情况下的环路地址:

[root@node1 ~]# hostname 
node1.oracleonlinux.cn
[root@node1 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       node1.oracleonlinux.cn  node1 localhost.localdomain localhost localhost
::1             localhost6.localdomain6 localhost6

# public
172.16.0.33     node1.oracleonlinux.cn       node1
172.16.0.34     node2.oracleonlinux.cn       node2

# private
192.168.94.11   node1-priv.oracleonlinux.cn  node1-priv
192.168.94.12   node2-priv.oracleonlinux.cn  node2-priv

# virtual
172.16.0.35     node1-vip.oracleonlinux.cn   node1-vip
172.16.0.36     node2-vip.oracleonlinux.cn   node2-vip

# scan-ip
172.16.0.223            scan-cluster.oracleonlinux.cn
[root@node1 ~]# ping node1
PING node1.oracleonlinux.cn (127.0.0.1) 56(84) bytes of data.
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=1 ttl=64 time=0.028 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=2 ttl=64 time=0.043 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=3 ttl=64 time=0.041 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=4 ttl=64 time=0.039 ms

--- node1.oracleonlinux.cn ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.028/0.037/0.043/0.009 ms
[root@node1 ~]# ping node1.oracleonlinux.cn
PING node1.oracleonlinux.cn (127.0.0.1) 56(84) bytes of data.
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=2 ttl=64 time=0.042 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=3 ttl=64 time=0.044 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=4 ttl=64 time=0.043 ms

--- node1.oracleonlinux.cn ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.031/0.040/0.044/0.005 ms
[root@node1 ~]#

我们修改默认环路地址后:

[root@node1 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost
::1             localhost6.localdomain6 localhost6

# public
172.16.0.33     node1.oracleonlinux.cn       node1
172.16.0.34     node2.oracleonlinux.cn       node2

# private
192.168.94.11   node1-priv.oracleonlinux.cn  node1-priv
192.168.94.12   node2-priv.oracleonlinux.cn  node2-priv

# virtual
172.16.0.35     node1-vip.oracleonlinux.cn   node1-vip
172.16.0.36     node2-vip.oracleonlinux.cn   node2-vip

# scan-ip
172.16.0.223            scan-cluster.oracleonlinux.cn
[root@node1 ~]# ping node1
PING node1.oracleonlinux.cn (172.16.0.33) 56(84) bytes of data.
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=1 ttl=64 time=0.026 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=2 ttl=64 time=0.040 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=3 ttl=64 time=0.050 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=4 ttl=64 time=0.034 ms

--- node1.oracleonlinux.cn ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.026/0.037/0.050/0.010 ms
[root@node1 ~]# ping node1.oracleonlinux.cn
PING node1.oracleonlinux.cn (172.16.0.33) 56(84) bytes of data.
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=1 ttl=64 time=0.038 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=2 ttl=64 time=0.044 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=3 ttl=64 time=0.047 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=4 ttl=64 time=0.041 ms

--- node1.oracleonlinux.cn ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.038/0.042/0.047/0.007 ms
[root@node1 ~]#

最后,看完之后,你有答案了吗?现在你知道了部署Oracle RAC时为什么需要将/etc/hosts文件里的环路地址修改为

           127.0.0.1  localhost

格式吗?

一步一步在OEL5.5 64位Linux上安装Oracle 10gR2 RAC(附录)

21 脚本附录

1preuser_dir.sh

[root@node1 shell]# cat 1preuser_dir.sh 

#!/bin/bash

#Purpose:Create two groups named ‘oinstall’ and ‘dba’, plus a user named ‘oracle’.Also setting the Environment

#variable for oracle user.

#Usage:Log on as the superuser(‘root’),and then execute the command:#./1preuser.sh

#Author:Asher Huang

 

echo “Now create two groups named ‘oinstall’ and ‘dba’, plus a user named ‘oracle’.Also setting the Environment”

 

groupadd oinstall 

groupadd dba

 

echo “Now create the necessary directory for oracle user and change the authention to oracle user…”

useradd -d /home/oracle -g oinstall -G dba  -c “Oracle software owner”  oracle

echo “oracle” | passwd –stdin oracle

echo ‘export PS1=”`/bin/hostname -s`-> “‘>>/home/oracle/.bash_profile

echo “export EDITOR=vi” >> /home/oracle/.bash_profile

echo “export ORACLE_SID=devdb1”  >> /home/oracle/.bash_profile

echo “export ORACLE_BASE=/u01/app/oracle” >> /home/oracle/.bash_profile

echo ‘export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1’ >> /home/oracle/.bash_profile

echo ‘export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs_1’ >> /home/oracle/.bash_profile

echo ‘export LD_LIBRARY_PATH=$ORACLE_HOME/lib’ >> /home/oracle/.bash_profile

echo ‘export PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin’>> /home/oracle/.bash_profile

echo “umask 022”>>/home/oracle/.bash_profile 

echo “export NLS_LANG=american_america.AL32UTF8” >> /home/oracle/.bash_profile

echo “export LANG=en_US” >> /home/oracle/.bash_profile

 

echo “The two groups named ‘oinstall’ and ‘dba’ plus the oracle user has been created.”

echo “The Environment variable for oracle user also has been setted sussessfully.”

[root@node1 shell]# 

2predir.sh

[root@node1 shell]# cat 2predir.sh 

#!/bin/bash

#Purpose:Create the necessary directory for oracle user and change the authention to oracle user.

#Usage:Log on as the superuser(‘root’),and then execute the command:#./2predir.sh

#Author:Asher Huang

 

echo “Now create the necessary directory for oracle user and change the authention to oracle user…”

mkdir -p /u01/app/oracle

chown -R oracle:oinstall /u01

echo “The necessary directory for oracle user and change the authention to oracle user has been finished”

 

[root@node1 shell]# 

3prelimits.sh

[root@node1 shell]# cat 3prelimits.sh 

#!/bin/bash

#Purpose:Change the /etc/security/limits.conf.

#Usage:Log on as the superuser(‘root’),and then execute the command:#./3prelimits.sh

#Author:Asher Huang

 

 

echo “Now modify the /etc/security/limits.conf,but backup it named /etc/security/limits.conf.bak before”

cp /etc/security/limits.conf /etc/security/limits.conf.bak

echo “oracle soft nproc 2047” >>/etc/security/limits.conf

echo “oracle hard nproc 16384” >>/etc/security/limits.conf

echo “oracle soft nofile 1024” >>/etc/security/limits.conf

echo “oracle hard nofile 65536” >>/etc/security/limits.conf

echo “Modifing the /etc/security/limits.conf has been succeed.”

 

[root@node1 shell]# 

4prelogin.sh

[root@node1 shell]# cat 4prelogin.sh 

#!/bin/bash

#Purpose:Modify the /etc/pam.d/login.

#Usage:Log on as the superuser(‘root’),and then execute the command:#./4prelimits.sh

#Author:Asher Huang

 

echo “Now modify the /etc/pam.d/login,but with a backup named /etc/pam.d/login.bak”

cp /etc/pam.d/login /etc/pam.d/login.bak

echo “session required /lib/security/pam_limits.so” >>/etc/pam.d/login

echo “session required pam_limits.so” >>/etc/pam.d/login

echo “Modifing the /etc/pam.d/login has been succeed.”

 

[root@node1 shell]# 

5preprofile.sh

[root@node1 shell]# cat 5preprofile.sh 

#!/bin/bash

#Purpose:Modify the /etc/profile.

#Usage:Log on as the superuser(‘root’),and then execute the command:#./5preprofile.sh

#Author:Asher Huang

 

echo “Now modify the  /etc/profile,but with a backup named  /etc/profile.bak”

cp /etc/profile /etc/profile.bak

echo ‘if [ $USER = “oracle” ]; then’ >>  /etc/profile

echo ‘if [ $SHELL = “/bin/ksh” ]; then’ >> /etc/profile

echo ‘ulimit -p 16384’ >> /etc/profile

echo ‘ulimit -n 65536’ >> /etc/profile

echo ‘else’ >> /etc/profile

echo ‘ulimit -u 16384 -n 65536’ >> /etc/profile

echo ‘fi’ >> /etc/profile

echo ‘fi’ >> /etc/profile

echo “Modifing the /etc/profile has been succeed.”

 

[root@node1 shell]# 

6presysctl.sh

[root@node1 shell]# cat 6presysctl.sh 

#!/bin/bash

#Purpose:Modify the /etc/sysctl.conf.

#Usage:Log on as the superuser(‘root’),and then execute the command:#./6presysctl.sh

#Author:Asher Huang

 

echo “Now modify the /etc/sysctl.conf,but with a backup named /etc/sysctl.bak”

cp /etc/sysctl.conf /etc/sysctl.conf.bak

echo “fs.file-max = 65536” >> /etc/sysctl.conf

echo “kernel.sem = 250 32000 100 128” >> /etc/sysctl.conf

echo “kernel.shmall = 2097152” >> /etc/sysctl.conf

echo “kernel.shmmni = 4096” >> /etc/sysctl.conf

echo “kernel.shmmax = 2147483648” >> /etc/sysctl.conf

echo “net.core.rmem_default=1048576” >> /etc/sysctl.conf

echo “net.core.rmem_max=1048576” >> /etc/sysctl.conf

echo “net.core.wmem_default=262144” >> /etc/sysctl.conf

echo “net.core.wmem_max=262144” >> /etc/sysctl.conf

echo “net.ipv4.ip_local_port_range = 1024 65000” >> /etc/sysctl.conf

echo “Modifing the /etc/sysctl.conf has been succeed.”

echo “Now make the changes take effect…..”

sysctl -p

[root@node1 shell]# 

 

 

一步一步在OEL5.5 64位Linux上安装Oracle 10gR2 RAC(8-完)

20 创建ASM磁盘组及RAC数据库

oracle用户在图形界面下,调用dbca命令来执行:

 

Next:

 

Next:

 

Next:

指定SYS用户口令:oracle

PFILE{ORACLE_BASE}/admin/+ASM/pfile/init.ora

 

Next:

 

Next:

 

Next:

 

Next:

 

Next:

这里可能提示找不到磁盘:在搜索路径中给出事先创建出来的ASM磁盘的绝对路径:

[root@node1 ~]# ll /dev/oracleasm/disks/

total 0

brw-rw—- 1 oracle oinstall 8, 49 Dec 21 23:02 ASMDISK1

brw-rw—- 1 oracle oinstall 8, 65 Dec 21 23:02 ASMDISK2

[root@node1 ~]# 

 

 

Next:

键入磁盘组名data,外部冗余策略,选择第一块磁盘。

Next:

 

Next:

 

Next:

单击Create new 继续创建第2块磁盘:

 

Next:

 

Next:

 

Next:

至此,ASM磁盘组创建完毕。可以从SQL*PLUS里查看相关信息:

[root@node1 ~]# su – oracle

node1-> hostname 

node1.oracleonlinux.cn

node1-> . oraenv

ORACLE_SID = [devdb1] ? +ASM1

node1-> sqlplus / as sysdba

 

SQL*Plus: Release 10.2.0.5.0 – Production on Sun Dec 22 10:38:04 2013

 

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

 

 

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 – 64bit Production

With the Partitioning, Real Application Clusters, OLAP, Data Mining

and Real Application Testing options

 

SQL> col name for a10

SQL> select name,state,total_mb,free_mb from v$asm_disk;  

 

 

NAME       STATE                      TOTAL_MB    FREE_MB

———- ———————— ———- ———-

FRA_0000   NORMAL                         3067       2974

DATA_0000  NORMAL                         3067       2974

 

SQL> select name,state,total_mb,free_mb from v$asm_diskgroup;

 

NAME       STATE                               TOTAL_MB    FREE_MB

———- ——————————— ———- ———-

DATA       MOUNTED                                 3067       2974

FRA        MOUNTED                                 3067       2974

 

SQL> 

 

单击Finish!选择继续执行其它操作。

 

Next:

 

Next:

 

Next:

 

Next:

 

Next:

 

Next:

 

Next:

 

Next:

 

Next:

 

Next:

 

 

Next:


Next:

 

 

Next:


Next:

 

Next:


Next:

 

Next:

 

Next:

 

至此,我们完成对RAC数据库的创建!

 

至此,我们一步一步完成在OEL5.5 X86_64机器上安装Oracle 10gR2 RAC数据库,并将数据库升级至10.2.0.5.0版本!!!!!

一步一步在OEL5.5 64位Linux上安装Oracle 10gR2 RAC(7)

19 创建监听

 

Next:

 

Next:

 

Next:

 

Next:

 

Next:

 

Next:

 

Next:

 

Next:

 

Next:

 

至此,RAC监听配置完成!

Node1:

node1-> lsnrctl status

 

LSNRCTL for Linux: Version 10.2.0.5.0 – Production on 22-DEC-2013 10:09:49

 

Copyright (c) 1991, 2010, Oracle.  All rights reserved.

 

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

STATUS of the LISTENER

————————

Alias                     LISTENER_NODE1

Version                   TNSLSNR for Linux: Version 10.2.0.5.0 – Production

Start Date                22-DEC-2013 10:08:55

Uptime                    0 days 0 hr. 0 min. 53 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora

Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener_node1.log

Listening Endpoints Summary…

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.0.35)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.0.33)(PORT=1521)))

Services Summary…

Service “PLSExtProc” has 1 instance(s).

  Instance “PLSExtProc”, status UNKNOWN, has 1 handler(s) for this service…

The command completed successfully

node1-> 

 

Node2:

node2-> lsnrctl status

 

LSNRCTL for Linux: Version 10.2.0.5.0 – Production on 22-DEC-2013 10:11:06

 

Copyright (c) 1991, 2010, Oracle.  All rights reserved.

 

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

STATUS of the LISTENER

————————

Alias                     LISTENER_NODE2

Version                   TNSLSNR for Linux: Version 10.2.0.5.0 – Production

Start Date                22-DEC-2013 10:08:56

Uptime                    0 days 0 hr. 2 min. 9 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora

Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener_node2.log

Listening Endpoints Summary…

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.0.36)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.0.34)(PORT=1521)))

Services Summary…

Service “PLSExtProc” has 1 instance(s).

  Instance “PLSExtProc”, status UNKNOWN, has 1 handler(s) for this service…

The command completed successfully

node2-> 

一步一步在OEL5.5 64位Linux上安装Oracle 10gR2 RAC(6)

18 升级oracle软件


Next;

Next,注意选择对应的oracle软件,而不再是clusterware.

 

Next:

 

Next:

 

Next:根据提示再次将ip_local_port_range=1024 – 65000.

修改为 ip_local_port_range=9000 – 65500; 

 

Next:

 

Next:

 

Next:

 

Next:

根据提示执行:/u01/app/oracle/product/10.2.0/db_1/root.sh

节点1

 

[root@node1 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh

Running Oracle 10g root.sh script…

 

The following environment variables are set as:

    ORACLE_OWNER= oracle

    ORACLE_HOME=  /u01/app/oracle/product/10.2.0/db_1

 

Enter 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]: 

The file “oraenv” already exists in /usr/local/bin.  Overwrite it? (y/n) 

[n]: 

The file “coraenv” already exists in /usr/local/bin.  Overwrite it? (y/n) 

[n]: 

 

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.

 

[root@node1 ~]# 

 

节点2

 

[root@node2 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh

Running Oracle 10g root.sh script…

 

The following environment variables are set as:

    ORACLE_OWNER= oracle

    ORACLE_HOME=  /u01/app/oracle/product/10.2.0/db_1

 

Enter 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]: 

The file “oraenv” already exists in /usr/local/bin.  Overwrite it? (y/n) 

[n]: 

The file “coraenv” already exists in /usr/local/bin.  Overwrite it? (y/n) 

[n]: 

 

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.

 

[root@node2 ~]# 

Next:

 

Next:

至此,已经完成对RAC双节点的Oracle软件的升级!!!

一步一步在OEL5.5 64位Linux上安装Oracle 10gR2 RAC(5)

17 安装oracle软件

Oracle用户登录图形界面,执行安装介质中的10201_databse_inux-x86-64来进行。

 

Next

 

Next

 

Next:这里需要注意指定oracle软件的家目录,即/u01/app/oracle/product/10.2.0/db_1

 

Next:选中所有节点

 

Next

 

根据提示,重新将双节点的 ip_local_port_range=9000 – 65500.

修改为ip_local_port_range=1024 – 65000

Next

 

Next:选中只安装软件;

 

Next

 

 

Next

 

Next

 

 

Next

根据提示,分别以root用户在双节点上执行:/u01/app/oracle/product/10.2.0/db_1/root.sh

Node1

[root@node1 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh

Running Oracle10 root.sh script…

 

The following environment variables are set as:

    ORACLE_OWNER= oracle

    ORACLE_HOME=  /u01/app/oracle/product/10.2.0/db_1

 

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

 

[root@node1 ~]# 

 

Node2

[root@node2 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh

Running Oracle10 root.sh script…

 

The following environment variables are set as:

    ORACLE_OWNER= oracle

    ORACLE_HOME=  /u01/app/oracle/product/10.2.0/db_1

 

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

 

[root@node2 ~]# 

Next

 

完成,在双节点上安装Oracle数据库软件!

node1-> hostname 

node1.oracleonlinux.cn

node1-> env|grep ORA

ORA_CRS_HOME=/u01/app/oracle/product/10.2.0/crs_1

ORACLE_SID=devdb1

ORACLE_BASE=/u01/app/oracle

ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

node1-> sqlplus / as sysdba

 

SQL*Plus: Release 10.2.0.1.0 – Production on Sat Dec 21 23:38:16 2013

 

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

Connected to an idle instance.

 

SQL> !       

node1-> ssh node2

node2-> env|grep ORA

ORA_CRS_HOME=/u01/app/oracle/product/10.2.0/crs_1

ORACLE_SID=devdb2

ORACLE_BASE=/u01/app/oracle

ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

node2-> sqlplus / as sysdba

 

SQL*Plus: Release 10.2.0.1.0 – Production on Sat Dec 21 23:38:50 2013

 

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

Connected to an idle instance.

 

SQL> 

 

 

一步一步在OEL5.5 64位Linux上安装Oracle 10gR2 RAC(4)

16 升级clusterware软件

升级之前,查看CRS版本:

Node1

[root@node1 ~]# su – oracle

node1-> hostname 

node1.oracleonlinux.cn

node1-> crs_stat -t

Name           Type           Target    State     Host        

————————————————————

ora.node1.gsd  application    ONLINE    ONLINE    node1       

ora.node1.ons  application    ONLINE    ONLINE    node1       

ora.node1.vip  application    ONLINE    ONLINE    node1       

ora.node2.gsd  application    ONLINE    ONLINE    node2       

ora.node2.ons  application    ONLINE    ONLINE    node2       

ora.node2.vip  application    ONLINE    ONLINE    node2       

node1-> crsctl query crs softwareversion

CRS software version on node [node1] is [10.2.0.1.0]

node1-> 

node1-> crsctl query crs activeversion

CRS active version on the cluster is [10.2.0.1.0]

node1-> 

Node2

 

执行升级:

执行安装介质中的p8202632_10205_Linux-x86-64来给集群件打patch

Oracle用户在图形界面调用/mnt/p8202632_10205_Linux-x86-64/Disk1/runInstaller 来执行:

 

进入升级操作:

 

Next

注意选择正确的cluster_name,以及clusterware软件的home

 

Next

 

Next

 

预检查未通过,根据提示,以root用户在双节点上将/etc/sysctl.conf配置文件中的

fs.file-max = 65536修改为fs.file-max = 101365

net.ipv4.ip_local_port_range=1024 – 65000.修改为net.ipv4.ip_local_port_range=9000 – 65500

并执行sysctl -p 来使之生效。

 

 

然后,单击Retry,确保预检查通过:

 

Next

 

 Install,开始安装:

 

 

Note:

Because the software consists of local identical copies distributed across each of the nodes in the cluster, it is possible to patch your CRS installation in a rolling manner, one node at a time.

 

To complete the installation of this patchset, you must perform the following tasks on each node:

 

1.Log in as the root user.

2.As the root user, perform the following tasks:

 

a.Shutdown the CRS daemons by issuing the following command:

/u01/app/oracle/product/10.2.0/crs_1/bin/crsctl stop crs

b.Run the shell script located at:

/u01/app/oracle/product/10.2.0/crs_1/install/root102.sh

This script will automatically start the CRS daemons on the

patched node upon completion.

 

3.After completing this procedure, proceed to the next node and repeat.

根据上述提示,以滚动方式来对CRS升级,即先升级其中的一个节点,然后再升级其它的节点。

Node1:

root用户执行/u01/app/oracle/product/10.2.0/crs_1/bin/crsctl stop crs

[root@node1 ~]# /u01/app/oracle/product/10.2.0/crs_1/bin/crsctl stop crs

Stopping resources.

Successfully stopped CRS resources 

Stopping CSSD.

Shutting down CSS daemon.

Shutdown request successfully issued.

[root@node1 ~]# 

root用户执行/u01/app/oracle/product/10.2.0/crs_1/install/root102.sh

[root@node1 ~]# /u01/app/oracle/product/10.2.0/crs_1/install/root102.sh

Creating pre-patch directory for saving pre-patch clusterware files

Completed patching clusterware files to /u01/app/oracle/product/10.2.0/crs_1

Relinking some shared libraries.

Relinking of patched files is complete.

WARNING: directory ‘/u01/app/oracle/product/10.2.0’ is not owned by root

WARNING: directory ‘/u01/app/oracle/product’ is not owned by root

WARNING: directory ‘/u01/app/oracle’ is not owned by root

WARNING: directory ‘/u01/app’ is not owned by root

WARNING: directory ‘/u01’ is not owned by root

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.

.

10205 patch successfully applied.

clscfg: EXISTING configuration version 3 detected.

clscfg: version 3 is 10G Release 2.

Successfully deleted 1 values from OCR.

Successfully deleted 1 keys from OCR.

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

Creating ‘/u01/app/oracle/product/10.2.0/crs_1/install/paramfile.crs’ with data used for CRS configuration

Setting CRS configuration values in /u01/app/oracle/product/10.2.0/crs_1/install/paramfile.crs

[root@node1 ~]# 

同理,在节点2上执行上述操作!

升级后,双节点上的CRS都从10.2.0.1.0升级到10.2.0.5.0

 

 

 

至此,我们已经在双节点上将CRS版本已经升级至10.2.0.5.0!!!

一步一步在OEL5.5 64位Linux上安装Oracle 10gR2 RAC(3)

15 安装clusterware软件

Note

由于oracle 10g早在10年前,即2003年就发布了,而Redhat Enterprise Linux 5的发布日期要晚于oracle 10g发布,所以,默认情况下Oracle 10g 不支持在Redhat Enterprise Linux 5及以上版本上安装。所以,解决方案:

可以通过修改/etc/redhat-release 文件;

在安装的过程中,执行runInstaller 加上–ignoreSysPreReqs选项;

这里采取第一种方法。

修改前:

[root@node1 /]# cat /etc/redhat-release 

Red Hat Enterprise Linux Server release 5.5 (Tikanga)

[root@node1 /]#

修改后:

[root@node1 /]# cat /etc/redhat-release 

Red Hat Enterprise Linux Server release 4 (Tikanga)

[root@node1 /]#

 

将安装介质挂载到光驱上,然后挂载光盘到/mnt

[root@node1 /]# mount /dev/cdrom /mnt/

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@node1 /]# 

Oracle用户登录图形界面:

 

根据提示,以root用户在双节点上执行rootpre.sh脚本:

[root@node1 rootpre]# pwd

/mnt/10201_clusterware_linux_x86_64/rootpre

[root@node1 rootpre]# sh rootpre.sh 

No OraCM running 

[root@node1 rootpre]# 

继续安装:

 

提示错误,缺少libXp软件包,root用户到OS安装光盘中重新安装缺少的软件包:

[root@node1 media]# rpm -ivh libXp-1.0.0-8.1.el5.i386.rpm 

warning: libXp-1.0.0-8.1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159

Preparing…                ########################################### [100%]

   1:libXp                  ########################################### [100%]

[root@node1 media]# rpm -ivh libXp-1.0.0-8.1.el5.x86_64.rpm 

warning: libXp-1.0.0-8.1.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159

Preparing…                ########################################### [100%]

   1:libXp                  ########################################### [100%]

[root@node1 media]# 

Note

node2节点上也要安装缺失的软件包!

重新执行:

node1-> sh /mnt/10201_clusterware_linux_x86_64/runInstaller 

来安装:

 

Next

 

Next

 

注意path指向ORA_CRS_HOME=/u01/app/oracle/product/10.2.0/crs_1,以及指定cluster_name=crs.  Next:

 

添加节点信息:

 

修改eth0网卡作为publicNext

 

指定OCR为外部冗余策略,并选择存放路径为/dev/raw/raw1Next

 

指定Voting disk为外部冗余策略,并选择存放路径为/dev/raw/raw2Next

 

Install开始安装:

 

Next

 

Next

 

根据提示执行以root用户分别在2个节点上执行/u01/app/oracle/oraInventory/orainstRoot.sh 

/u01/app/oracle/product/10.2.0/crs_1/root.sh脚本:

Node1:

[root@node1 ~]# /u01/app/oracle/oraInventory/orainstRoot.sh

Changing permissions of /u01/app/oracle/oraInventory to 770.

Changing groupname of /u01/app/oracle/oraInventory to oinstall.

The execution of the script is complete

[root@node1 ~]# /u01/app/oracle/product/10.2.0/crs_1/root.sh

WARNING: directory ‘/u01/app/oracle/product/10.2.0’ is not owned by root

WARNING: directory ‘/u01/app/oracle/product’ is not owned by root

WARNING: directory ‘/u01/app/oracle’ is not owned by root

WARNING: directory ‘/u01/app’ is not owned by root

WARNING: directory ‘/u01’ is not owned by root

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

WARNING: directory ‘/u01/app/oracle/product/10.2.0’ is not owned by root

WARNING: directory ‘/u01/app/oracle/product’ is not owned by root

WARNING: directory ‘/u01/app/oracle’ is not owned by root

WARNING: directory ‘/u01/app’ is not owned by root

WARNING: directory ‘/u01’ is not owned by root

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

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 90 seconds.

Adding daemons to inittab

Expecting the CRS daemons to be up within 600 seconds.

CSS is active on these nodes.

        node1

CSS is inactive on these nodes.

        node2

Local node checking complete.

Run root.sh on remaining nodes to start CRS daemons.

[root@node1 ~]# 

Node2:

[root@node2 ~]# /u01/app/oracle/oraInventory/orainstRoot.sh

Changing permissions of /u01/app/oracle/oraInventory to 770.

Changing groupname of /u01/app/oracle/oraInventory to oinstall.

The execution of the script is complete

[root@node2 ~]#

 

[root@node2 ~]# /u01/app/oracle/product/10.2.0/crs_1/root.sh

WARNING: directory ‘/u01/app/oracle/product/10.2.0’ is not owned by root

WARNING: directory ‘/u01/app/oracle/product’ is not owned by root

WARNING: directory ‘/u01/app/oracle’ is not owned by root

WARNING: directory ‘/u01/app’ is not owned by root

WARNING: directory ‘/u01’ is not owned by root

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

WARNING: directory ‘/u01/app/oracle/product/10.2.0’ is not owned by root

WARNING: directory ‘/u01/app/oracle/product’ is not owned by root

WARNING: directory ‘/u01/app/oracle’ is not owned by root

WARNING: directory ‘/u01/app’ is not owned by root

WARNING: directory ‘/u01’ is not owned by root

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

/u01/app/oracle/product/10.2.0/crs_1/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory

[root@node2 ~]# 

 

 

Note

解决上述错误,/u01/app/oracle/product/10.2.0/crs_1/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory

其实,这是1bug

在每个节点上,修改$ORA_CRS_HOME/bin目录下的srvctlvipca文件,

vipca文件ARGUMENTS=””165行之前和srvctl文件的export LD_ASSUME_KERNEL 174行之后增加 unset LD_ASSUME_KERNEL 语句;

修改后的$ORA_CRS_HOME/bin/vipca文件:

160       fi

161       export LD_LIBRARY_PATH

162       ;;

163 esac

164 

165 unset LD_ASSUME_KERNEL

166 ARGUMENTS=””

167 NUMBER_OF_ARGUMENTS=$#

修改后的$ORA_CRS_HOME/bin/srvctl文件:

172 #Remove this workaround when the bug 3937317 is fixed

173 LD_ASSUME_KERNEL=2.4.19

174 export LD_ASSUME_KERNEL

175 unset LD_ASSUME_KERNEL

176 

177 # Run ops control utility

178 $JRE $JRE_OPTIONS -classpath $CLASSPATH $TRACE oracle.ops.opsctl.OPSCTLDriver “$@”

179 exit $?

 

在任意一个节点上,用root用户,手动运行vipca,配置完正确的prvipvip 信息之后,crs就可以安装完成。

 

Next

 

填写对应的VIP别名:node1-vip.oracleonlinux.cnnode2-vip.oracleonlinux.cn

 

Next

 

Next

 

然后,继续进行集群软件的安装:

此时单击,Retry:

 

最后,

 

完成clusterware软件的安装!!!

如下

node1-> crs_stat -t

Name           Type           Target    State     Host        

————————————————————

ora.node1.gsd  application    ONLINE    ONLINE    node1       

ora.node1.ons  application    ONLINE    ONLINE    node1       

ora.node1.vip  application    ONLINE    ONLINE    node1       

ora.node2.gsd  application    ONLINE    ONLINE    node2       

ora.node2.ons  application    ONLINE    ONLINE    node2       

ora.node2.vip  application    ONLINE    ONLINE    node2       

node1->