RAC安装时需要执行4个脚本及意义

原文转自:http://blog.csdn.net/tianlesoftware/article/details/5317034

RAC安装时需要执行4个脚本

1) $ORACLE_BASE/oraInventory/orainstRoot.sh (clusterware 结束时执行)

2) $CRS_HOME/root.sh (clusterware 结束时执行)

3) $CRS_HOME/bin/vipca.sh(该脚本是在第二个节点执行$CRS_HOME/root.sh时被自动调用)

4) $ORACLE_HOME/root.sh (安装完数据库以后执行)

 

1. orainstRoot.sh 脚本

1.1 orainstRoot.sh 脚本执行过程

root@node2 #/oracle/oraInventory/orainstRoot.sh 

Changing permissions of /oracle/oraInventory to 770.

Changing groupname of /oracle/oraInventory to oinstall.

The execution of the script is complete

 

1.2 orainstRoot.sh 脚本内容

root@node1 # more /oracle/oraInventory/orainstRoot.sh

#!/bin/sh

if [ ! -d "/var/opt/oracle" ]; then

mkdir -p /var/opt/oracle;

fi

if [ -d "/var/opt/oracle" ]; then

chmod 755 /var/opt/oracle;

fi

if [ -f "/oracle/oraInventory/oraInst.loc" ]; then

cp /oracle/oraInventory/oraInst.loc /var/opt/oracle/oraInst.loc;

chmod 644 /var/opt/oracle/oraInst.loc;

else

INVPTR=/var/opt/oracle/oraInst.loc

INVLOC=/oracle/oraInventory

GRP=oinstall

PTRDIR="`dirname $INVPTR`";

# Create the software inventory location pointer file

if [ ! -d "$PTRDIR" ]; then

 mkdir -p $PTRDIR;

fi

echo "Creating the Oracle inventory pointer file ($INVPTR)";

echo   inventory_loc=$INVLOC > $INVPTR

echo   inst_group=$GRP >> $INVPTR

chmod 644 $INVPTR

# Create the inventory directory if it doesn't exist

if [ ! -d "$INVLOC" ];then

 echo "Creating the Oracle inventory directory ($INVLOC)";

 mkdir -p $INVLOC;

fi

fi

echo "Changing permissions of /oracle/oraInventory to 770.";

chmod -R 770 /oracle/oraInventory;

if [ $? != 0 ]; then

 echo "OUI-35086:WARNING: chmod of /oracle/oraInventory to 770 failed!";

fi

echo "Changing groupname of /oracle/oraInventory to oinstall.";

chgrp oinstall /oracle/oraInventory;

if [ $? != 0 ]; then

 echo "OUI-10057:WARNING: chgrp of /oracle/oraInventory to oinstall failed!";

fi

echo "The execution of the script is complete"

 

从脚本我们可以看出,这个脚本主要是创建/var/opt/oracle目录(如果不存在的话),再在该目录下建oraInst.loc文件(该文件记录orainventory的位置和组)。并改变orainventory的属性。

 

root@node2 # ls –rlt /var/opt/oracle/

total 2

-rw-r--r--  1 root    root         55 Apr 2 14:42 oraInst.loc

root@node2 # more oraInst.loc

inventory_loc=/oracle/oraInventory

inst_group=oinstall

 

在另一个节点上运行该脚本

root@node1 #/oracle/oraInventory/orainstRoot.sh 

Changing permissions of /oracle/oraInventory to 770.

Changing groupname of /oracle/oraInventory to oinstall.

The execution of the script is complete

 

2. Root.sh 脚本

 

2.1 root.sh 脚本执行过程

root@node2 #/oracle/crs/root.sh

WARNING: directory '/oracle' is not owned by root

Checking to see if Oracle CRS stack is already configured

Checking to see if any 9i GSD is up

 

Setting the permissions on OCR backup directory

Setting up NS directories

Oracle Cluster Registry configuration upgraded successfully

WARNING: directory '/oracle' 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 0: node2 node2-priv node2

node 1: node1 node1-priv node1

Creating OCR keys for user 'root', privgrp 'root'..

Operation successful.

Now formatting voting device: /oracle/ocrcfg1

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.

CSS is active on these nodes.

       node2

CSS is inactive on these nodes.

       node1

Local node checking complete.

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

 

   从输出我们可以看出,该脚本主要执行crs的配置,格式化ocr disk,更新/etc/inittab文件,启动css进程,在/var/opt/oracle/新建了ocr.loc文件及,scls_scr,oprocd文件夹。

 

2.2 查看crs进程及/etc/inittab文件可以看出节点的变化。

root@node2 # ps -ef|grep crs|grep –v grep

 oracle 18212 18211  0 14:47:28 ?     0:00 /oracle/crs/bin/ocssd.bin

 oracle 18191 18180  0 14:47:28 ?     0:00 /oracle/crs/bin/oclsmon.bin

 oracle 17886    1  0 14:47:27 ?     0:00 /oracle/crs/bin/evmd.bin

 oracle 18180 18092  0 14:47:28 ?     0:00 /bin/sh -c cd /oracle/crs/log/node2/cssd/oclsmon; ulimit -c unlimited; /ora

 root 17889    1  0 14:47:27 ?       0:00 /oracle/crs/bin/crsd.bin reboot

 oracle 18211 18093  0 14:47:28 ?      0:00 /bin/sh -c ulimit -c unlimited; cd /oracle/crs/log/node2/cssd; /oracle/crs

 

root@node2 # ls –rlt /var/opt/oracle/

total 8

-rw-r--r--  1 root    root         55 Apr 2 14:42 oraInst.loc

drwxrwxr-x  5 root    root        512 Apr 2 14:47 oprocd

drwxr-xr-x  3 root    root        512 Apr 2 14:47 scls_scr

-rw-r--r--  1 root    oinstall     48 Apr 2 14:47 ocr.loc

 

注意:新创建了ocr.loc,scls_scr,oprocd,但没有创建/var/opt/oracle/oratab。

 

root@node1 # more inittab

# Copyright 2004 Sun Microsystems, Inc. All rights reserved.

# Use is subject to license terms.

#

# The /etc/inittab file controls the configuration of init(1M); for more

# information refer to init(1M) and inittab(4). It is no longer

# necessary to edit inittab(4) directly; administrators should use the

# Solaris Service Management Facility (SMF) to define services instead.

# Refer to smf(5) and the System Administration Guide for more

# information on SMF.

#

# For modifying parameters passed to ttymon, use svccfg(1m) to modify

# the SMF repository. For example:

#

#      # svccfg

#      svc:> select system/console-login

#      svc:/system/console-login> setprop ttymon/terminal_type = "xterm"

#      svc:/system/console-login> exit

#

#ident "@(#)inittab   1.41   04/12/14 SMI"

ap::sysinit:/sbin/autopush -f /etc/iu.ap

sp::sysinit:/sbin/soconfig -f /etc/sock2path

smf::sysinit:/lib/svc/bin/svc.startd   >/dev/msglog 2<>/dev/msglog </dev/console

p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/msglog

h1:3:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1 </dev/null

h2:3:respawn:/etc/init.d/init.cssd fatal >/dev/null 2>&1 </dev/null

h3:3:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1 </dev/null

 

root@node1 # ls -rlt /etc/inittab*

-rw-r--r--  1 root    root       1072 Nov 2 12:39 inittab.cssd

-rw-r--r--  1 root    root       1206 Mar 21 17:15 inittab.pre10203

-rw-r--r--  1 root    root       1006 Mar 21 17:15 inittab.nocrs10203

-rw-r--r--  1 root    root       1040 Apr 2 14:50 inittab.orig

-rw-r--r--  1 root    root       1040 Apr 2 14:50 inittab.no_crs

-rw-r--r--  1 root    root       1240 Apr 2 14:50 inittab

-rw-r--r--  1 root    root       1240 Apr 2 14:50 inittab.crs

 

该脚本会将inittab复制为inittab.no_crs,修改后的inittab另复制一份为inittab.crs.

 

 

2.3 在另外一个节点执行$CRS_HOME/root.sh

root@node1 #/oracle/crs/root.sh

WARNING: directory '/oracle' is not owned by root

Checking to see if Oracle CRS stack is already configured

Checking to see if any 9i GSD is up

 

Setting the permissions on OCR backup directory

Setting up NS directories

Oracle Cluster Registry configuration upgraded successfully

WARNING: directory '/oracle' 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 0: node2 node2-priv node2

node 1: node1 node1-priv node1

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.

CSS is active on these nodes.

       node2

       node1

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

 

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

 

 

3. 在第二个节点上运行时会多比在第一个节点上运行多执行一个任务

    -------运行$CRS_HOME/bin/vipca.sh

VIPCA.sh主要是配置vip并启动crs的默认资源(未建库时默认为6个),多启动三个后台进程。

root@node1 # ps -ef|grep crs|grep -v grep

 oracle 18347 17447  0 14:51:06 ?          0:00 /oracle/crs/bin/evmlogger.bin -o /oracle/crs/evm/log/evmlogger.info -l /oracle/

oracle 17447    1  0 14:50:47 ?          0:00 /oracle/crs/bin/evmd.bin

oracle 17763 17756  0 14:50:48 ?          0:00 /oracle/crs/bin/ocssd.bin

oracle 17756 17643  0 14:50:48 ?          0:00 /bin/sh -c ulimit -c unlimited; cd /oracle/crs/log/node1/cssd; /oracle/crs

oracle 21216    1  0 14:52:28 ?          0:00 /oracle/crs/opmn/bin/ons -d

oracle 21217 21216  0 14:52:28 ?          0:00 /oracle/crs/opmn/bin/ons -d

oracle 17771 17642  0 14:50:48 ?          0:00 /bin/sh -c cd /oracle/crs/log/node1/cssd/oclsmon; ulimit -c unlimited; /ora

oracle 17773 17771  0 14:50:48 ?          0:00 /oracle/crs/bin/oclsmon.bin

root 17449    1  0 14:50:47 ?          0:01 /oracle/crs/bin/crsd.bin reboot

 

root@node2 # ps -ef|grep crs|grep -v grep

oracle 18212 18211  0 14:47:28 ?          0:00 /oracle/crs/bin/ocssd.bin

oracle 27467 27466  0 14:52:25 ?          0:00 /oracle/crs/opmn/bin/ons -d

oracle 25252 17886  0 14:51:16 ?          0:00 /oracle/crs/bin/evmlogger.bin -o /oracle/crs/evm/log/evmlogger.info -l /oracle/

oracle 27466    1  0 14:52:25 ?          0:00 /oracle/crs/opmn/bin/ons -d

oracle 18191 18180  0 14:47:28 ?          0:00 /oracle/crs/bin/oclsmon.bin

oracle 17886    1  0 14:47:27 ?          0:00 /oracle/crs/bin/evmd.bin

oracle 18180 18092  0 14:47:28 ?       0:00 /bin/sh -c cd /oracle/crs/log/node2/cssd/oclsmon; ulimit -c unlimited; /ora

root 17889    1  0 14:47:27 ?          0:00 /oracle/crs/bin/crsd.bin reboot

 oracle 18211 18093  0 14:47:28 ?          0:00 /bin/sh -c ulimit -c unlimited; cd /oracle/crs/log/node2/cssd; /oracle/crs

从现在node2上的进程就能看出,执行完vipca.sh后,会多出三个后台进程。

 

root@node1 # crs_stat -t

Name          Type          Target   State    Host       

------------------------------------------------------------

ora....c03.gsd application   ONLINE   ONLINE   node1  

ora....c03.ons application   ONLINE   ONLINE   node1  

ora....c03.vip application   ONLINE   ONLINE   node1  

ora....c04.gsd application   ONLINE   ONLINE   node2  

ora....c04.ons application   ONLINE   ONLINE   node2  

ora....c04.vip application   ONLINE   ONLINE   node1

 

 

4. 安装数据库软件(binary)时需在最后一步:执行$ORACLE_HOME/root.sh

 

root@node2 #$ORACLE_HOME/root.sh

Running Oracle10 root.sh script...

 

The following environment variables are set as:

   ORACLE_OWNER= oracle

   ORACLE_HOME= /oracle/10g

 

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

  Copying dbhome to /usr/local/bin ...

The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y

  Copying oraenv to /usr/local/bin ...

The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y

  Copying coraenv to /usr/local/bin ...

 

Creating /var/opt/oracle/oratab file...

Entries will be added to the /var/opt/oracle/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.

 

该脚本的作用在于在指定的目录(默认为/usr/local/bin)下创建dbhome,oraenv,coraenv,在/var/opt/oracle/里创建oratab文件。

 

root@node2# ls –rlt /usr/local/bin

total 18

-rwxr-xr-x  1 oracle  root       2428 Apr 2 15:07 dbhome

-rwxr-xr-x  1 oracle  root       2560 Apr 2 15:07 oraenv

-rwxr-xr-x  1 oracle  root       2857 Apr 2 15:07 coraenv

 

root@node2 # ls –rlt /var/opt/oracle/

total 10

-rw-r--r--  1 root    root         55 Apr 2 14:42 oraInst.loc

drwxrwxr-x  5 root    root        512 Apr 2 14:47 oprocd

drwxr-xr-x  3 root    root        512 Apr 2 14:47 scls_scr

-rw-r--r--  1 root    oinstall     48 Apr 2 14:47 ocr.loc

-rw-rw-r--  1 oracle  root        678 Apr 2 15:07 oratab

 

root@node1 # /oracle/10g/root.sh

Running Oracle10 root.sh script...

 

The following environment variables are set as:

   ORACLE_OWNER= oracle

   ORACLE_HOME= /oracle/10g

 

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

  Copying dbhome to /usr/local/bin ...

The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y

  Copying oraenv to /usr/local/bin ...

The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y

  Copying coraenv to /usr/local/bin ...

 

Creating /var/opt/oracle/oratab file...

Entries will be added to the /var/opt/oracle/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.

时间: 2025-01-30 06:51:09

RAC安装时需要执行4个脚本及意义的相关文章

Oracle RAC安装时需要执行4个脚本及意义

RAC安装时需要执行4个脚本 1) $ORACLE_BASE/oraInventory/orainstRoot.sh (clusterware 结束时执行) 2) $CRS_HOME/root.sh (clusterware 结束时执行) 3) $CRS_HOME/bin/vipca.sh(该脚本是在第二个节点执行$CRS_HOME/root.sh时被自动调用) 4) $ORACLE_HOME/root.sh (安装完数据库以后执行) 1. orainstRoot.sh 脚本 1.1 orain

【转】RAC安装时,报The specified nodes are not clusterable 的解决方法

RAC安装时,报The specified nodes are not clusterable 的解决方法   在安装RAC clusterware 在添加完结点后报错误:       The specified nodes are not clusterable. The following error was returned by the operating system: null       以前也装过几个测试的rac的环境, 该遇到的问题也都遇到过了. 以前遇到这个问题是hosts

win7 cygwin-win7在cygwin安装时,执行ssh-host-config的warning

问题描述 win7在cygwin安装时,执行ssh-host-config的warning win7在cygwin安装时,执行ssh-host-config的warning.adding ssh to c:windowssystem32driversservice failed 不知道是哪里错误.在网上找了半天也没解决掉. 解决方案 有可能是文件系统权限问题,以管理员权限运行安装程序看看.

如何在Linux启动时自动执行命令或脚本

我一直很好奇,在启动 Linux 系统并登录的过程中到底发生了什么事情.按下开机键或启动一个虚拟机,你就启动了一系列事件,之后会进入到一个功能完备的系统中,有时,这个过程不到一分钟.当你注销或者关机时,也是这样. 更有意思的是,在系统启动以及用户登录或注销时,还可以让系统执行特定的操作. 本文,我们将探讨一下在 Linux 操作系统中实现这些目标的传统方法. 注意:我们假定使用的是 Bash 作为登录及注销的主 Shell.如果你使用的是其他 Shell,那么有些方法可能会无效.如果有其他的疑问

如何在 Linux 启动时自动执行命令或脚本

在启动时执行 Linux 脚本 有两种传统的方法可以实现在启动时执行命令或脚本: 方法 #1 - 使用 cron 任务 除了常用格式(分 / 时 / 日 / 月 / 周)外,cron 调度器还支持 @reboot 指令.这个指令后面的参数是脚本(启动时要执行的那个脚本)的绝对路径. 然而,这种方法需要注意两点: a) cron 守护进程必须处于运行状态(通常情况下都会运行),同时 b) 脚本或 crontab 文件必须包含需要的环境变量(如果有的话,参考 StackOverflow 获取更多详细

Oracle 11g RAC安装时的错误提示:Failed to create or upgrade OLR

对于Oracle 11g RAC 的安装,与Oracle 10g(clusterware)类似,grid 安装完毕后需要执行orainstroot.sh和root.sh,如果是AMD芯片,Oracle说不认识啊,那就要恭喜一下你又多了一次patch的亲密接触,这个错误提示是Failed to create or upgrade OLR.客官,中招了?接着往下看... 1.安装时的环境 操作系统(Oracle linux 5.5 32bit) [root@node1 ~]# cat /etc/is

Oracle 11g RAC安装时的INS-30507错误:Empty ASM disk group

最近的Oracle 11g RAC安装碰到了INS-30507错误,也就是在grid安装到创建ASM磁盘组的时候找不到任何候选磁盘,google了N多安装指导也没有找到蛛丝马迹.如果你碰到这个问题,不妨往下瞧. 1.错误信息与解释 SEVERE: [FATAL] [INS-30507] Empty ASM disk group. CAUSE: No disks were selected from a managed ASM disk group. ACTION: Select appropri

【RAC】RAC安装错误手工卸载

[RAC]RAC安装错误手工卸载                    一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 的系列blog于去年10月份更新完毕,但是少了个内容就是如何卸载rac,因为rac的安装不可能一次成功,有时候可能需要折腾多次,这样的话就需要清除之前装进来的一些东西,清除的内容如下,步骤先后没有关系,至于使用oracle专门的卸载包来卸载这里就不演示了.     注意,以下命令在2个节点均需要执行,当然有

安装Oracle 11g RAC R2时的Linux DNS配置

Oracle 11g RAC 集群中引入了SCAN(Single Client Access Name)的概念,也就是指集群的单客户端访问名称.SCAN 这个特性为客户端提供了单一的主机名,用于访问集群中运行的 Oracle 数据库.如果您在集群中添加或删除节点,使用 SCAN 的客户端无需更改自己的 TNS 配置.无论集群包含哪些节点,SCAN 资源及其关联的 IP 地址提供了一个稳定的名称供客户端进行连接使用.在Oracle 11g grid 安装时即要求为该特性配置DNS解析方式或GNS解