DBCA建库rac环境不能创建rac库问题处理

0    68    1

👉 本文共约18880个字,系统预计阅读时间或需71分钟。

【故障处理】DBCA建库诡异问题处理--rac环境不能创建rac库

前言部分

导读和注意事项

各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~:

① dbca静默创建rac库

② Inventory目录作用及其2种重建方法(重点)

③ rac环境dbca工具不能创建rac库的解决办法

④ dbca静默建库常见问题处理

⑤ 重建CRS集群环境执行root.sh脚本

故障分析及解决过程

故障环境介绍

项目source db
db 类型RAC
db version11.2.0.4
db 存储ASM
OS版本及kernel版本AIX 64位 6.1.0.0

故障发生现象及报错信息

小麦苗采用dbca -silent+nodeinifo创建rac库,原来用的好好的命令,结果在这个rac环境上创建出来的库成了单实例的,很是郁闷,,,,且看故障发生的现象:

ZFZHLHRDB1:oracle:/oracle>dbca -silent -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \

> -gdbname raclhr -sid raclhr \

> -sysPassword oracle -systemPassword lhr \

> -datafileDestination 'DATA/' -recoveryAreaDestination 'DATA/' \

> -redoLogFileSize 50 \

> -storageType ASM -asmsnmpPassword lhr -diskGroupName 'DATA' \

> -characterset ZHS16GBK -nationalCharacterSet AL16UTF16 \

> -sampleSchema true \

> -automaticMemoryManagement true -totalMemory 2048 \

> -databaseType OLTP \

> -emConfiguration NONE \

> -nodeinfo ZFZHLHRDB1,ZFZHLHRDB2

Copying database files

1% complete

3% complete

10% complete

17% complete

24% complete

35% complete

Creating and starting Oracle instance

37% complete

42% complete

47% complete

52% complete

53% complete

56% complete

58% complete

Registering database with Oracle Restart

64% complete

Completing Database Creation

68% complete

71% complete

75% complete

85% complete

96% complete

100% complete

Look at the log file "/oracle/app/oracle/cfgtoollogs/dbca/raclhr/raclhr.log" for further details.

ZFZHLHRDB1:oracle:/oracle>more /oracle/app/oracle/cfgtoollogs/dbca/raclhr/raclhr.log

Copying database files

DBCA_PROGRESS : 1%

DBCA_PROGRESS : 3%

DBCA_PROGRESS : 10%

DBCA_PROGRESS : 17%

DBCA_PROGRESS : 24%

DBCA_PROGRESS : 31%

DBCA_PROGRESS : 35%

Creating and starting Oracle instance

DBCA_PROGRESS : 37%

DBCA_PROGRESS : 42%

DBCA_PROGRESS : 47%

DBCA_PROGRESS : 52%

DBCA_PROGRESS : 53%

DBCA_PROGRESS : 56%

DBCA_PROGRESS : 58%

Registering database with Oracle Restart

DBCA_PROGRESS : 64%

Completing Database Creation

DBCA_PROGRESS : 68%

DBCA_PROGRESS : 71%

DBCA_PROGRESS : 75%

DBCA_PROGRESS : 85%

DBCA_PROGRESS : 96%

DBCA_PROGRESS : 100%

Database creation complete. For details check the logfiles at:

/oracle/app/oracle/cfgtoollogs/dbca/raclhr.

Database Information:

Global Database Name:raclhr

System Identifier(SID):raclhr

ZFZHLHRDB1:oracle:/oracle>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Tue Jul 5 17:17:42 2016

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

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and Real Application Testing options

SYS@raclhr> show parameter cluster

NAME TYPE VALUE

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

cluster_database boolean FALSE

cluster_database_instances integer 1

cluster_interconnects string

大家看到这里的安装百分比是1%->3%->10%-17%.....,而rac库创建的时候进度百分比应该是1%->3%->9%-15%.....,如下图所示:

DBCA建库rac环境不能创建rac库问题处理

Copying database files

1% complete

3% complete

9% complete

15% complete

21% complete

30% complete

Creating and starting Oracle instance

32% complete

36% complete

40% complete

44% complete

45% complete

48% complete

50% complete

Creating cluster database views

52% complete

70% complete

Completing Database Creation

73% complete

76% complete

85% complete

94% complete

100% complete

Look at the log file "/oracle/app/oracle/cfgtoollogs/dbca/raclhr/raclhr.log" for further details.

若是11.2.0.3环境的话:

RAC过程:

1% complete

3% complete

30% complete

Creating and starting Oracle instance

32% complete

36% complete

40% complete

44% complete

45% complete

48% complete

50% complete

Creating cluster database views

52% complete

70% complete

Completing Database Creation

73% complete

76% complete

85% complete

94% complete

100% complete

单实例过程:

1% complete

3% complete

35% complete

Creating and starting Oracle instance

37% complete

42% complete

47% complete

52% complete

53% complete

56% complete

58% complete

Registering database with Oracle Restart

64% complete

Completing Database Creation

68% complete

71% complete

75% complete

85% complete

96% complete

100% complete

接下来小麦苗尝试了如下的几种方式:①dbca采用响应文件的形式,②dbca图形界面的方式,都是同样的情况。

我的环境dbca图形界面的第一张图:

DBCA建库rac环境不能创建rac库问题处理

而正常rac环境下dbca图形界面的第一步图应该是:

DBCA建库rac环境不能创建rac库问题处理

以上都是目前出现的问题,初步预估是哪个配置文件出错了,dbca不能判断集群环境。

故障分析及解决过程

起初小麦苗以为是集群出现了问题,在万般无奈的情况下执行root.sh重建了集群,按照以前的经验,这个终极大招执行后集群肯定可以恢复到正常的情况下,结果呢?结果还是令小麦苗很伤心,情况依旧没有解决。重新执行root.sh的命令如下(注:重新执行root.sh并不会清掉db的数据):

ocrconfig -showbackup

ocrconfig -manualbackup

$ORACLE_HOME/crs/install/rootcrs.pl -deconfig -force -verbose

ls -l $ORACLE_BASE/Clusterware/ckptGridHA*

find $ORACLE_HOME/gpnp/* -type f

find $ORACLE_HOME/gpnp/* -type f -exec rm -rf {} \;

$ORACLE_HOME/crs/install/rootcrs.pl -deconfig -force -verbose -lastnode -keepdg

ls -l $ORACLE_BASE/Clusterware/ckptGridHA*

find $ORACLE_HOME/gpnp/* -type f

find $ORACLE_HOME/gpnp/* -type f -exec rm -rf {} \;

ipcs

$ORACLE_HOME/root.sh

/oracle/app/11.2.0/grid/perl/bin/perl -I/oracle/app/11.2.0/grid/perl/lib -I/oracle/app/11.2.0/grid/crs/install /oracle/app/11.2.0/grid/crs/install/rootcrs.pl

ipcs

$ORACLE_HOME/root.sh

---crs的配置文件

---$ORACLE_HOME/crs/install/crsconfig_params

-- GRID

export DISPLAY=22.188.216.132:0.0

$ORACLE_HOME/crs/config/config.sh

这个终极大招已经使用过了,问题没有解决只能说明不是权限的问题,也不是集群的问题,而是DB环境的问题。

于是硬着头皮分析分析dbca的日志,dbca创建库的时候日志在:11g:$ORACLE_BASE/cfgtoollogs/dbca , 10g:$ORACLE_HOME/cfgtoollogs/dbca

ZFZHLHRDB1:oracle:/oracle>cd /oracle/app/oracle/cfgtoollogs/dbca/raclhr

total 15592

-rw-r----- 1 oracle dba 1454 Jul 05 16:56 CloneRmanRestore.log

-rw-r----- 1 oracle dba 182 Jul 05 16:52 DetectOption.log

-rw-r----- 1 oracle dba 43191 Jul 05 16:59 cloneDBCreation.log

-rw-r----- 1 oracle dba 48 Jul 05 16:59 lockAccount.log

-rw-r----- 1 oracle dba 18557 Jul 05 16:59 mkplug_v3_raclhr.log

-rw-r----- 1 oracle dba 1630 Jul 05 16:59 postDBCreation.log

-rw-r----- 1 oracle dba 16 Jul 05 16:59 postScripts.log

-rw-r----- 1 oracle dba 718 Jul 05 16:51 raclhr.log

-rw-r----- 1 oracle dba 738 Jul 05 17:00 raclhr0.log

-rw-r----- 1 oracle dba 1476 Jul 05 17:00 raclhr_creation_checkpoint.xml

-rw-r----- 1 oracle dba 1454 Jul 05 16:55 rmanRestoreDatafiles.sql

-rw-r----- 1 oracle dba 7716864 Jul 05 16:56 tempControl.ctl

-rw-r----- 1 oracle dba 155662 Jul 05 17:00 trace.log

-rw-r----- 1 oracle asmadmin 2258 Jul 05 16:57 tts_example_imp.log

里边有trace.log文件,拿到手,搜了下cluster,发现一个错误:

[main] [ 2016-07-05 17:37:30.694 GMT+08:00 ] [HAUtils.getDefaultListenerProperties:1666] PRCR-1001 : Resource ora.LISTENER.lsnr does not exist

PRCR-1001 : Resource ora.LISTENER.lsnr does not exist

at oracle.cluster.impl.common.SoftwareModuleImpl.crsResource(SoftwareModuleImpl.java:776)

at oracle.cluster.impl.nodeapps.ListenerImpl.crsResource(ListenerImpl.java:1107)

ora.LISTENER.lsnr该资源不存在,那就手动创建该资源:

ZFZHLHRDB1:grid:/home/grid>netca -silent -responsefile $ORACLE_HOME/assistants/netca/netca.rsp

Parsing command line arguments:

Parameter "silent" = true

Parameter "responsefile" = /oracle/app/11.2.0/grid/assistants/netca/netca.rsp

Done parsing command line arguments.

Oracle Net Services Configuration:

Profile configuration complete.

ListenerException: Could not create Listener: TNS-04414: File error

Error: null

Check the trace file for details: /oracle/app/grid/cfgtoollogs/netca/trace_GridHome1-1607055PM5133.log

Oracle Net Services configuration failed. The exit code is 1

报错了,应该是监听已经存在了,重新添加进crs中:

ZFZHLHRDB1:grid:/oracle/app/11.2.0/grid/network/admin>crsctl stat res -t

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

NAME TARGET STATE SERVER STATE_DETAILS

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

Local Resources

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

ora.DATA.dg

ONLINE ONLINE ZFZHLHRDB1

ONLINE ONLINE ZFZHLHRDB2

ora.LISTENER_LHRDG.lsnr

ONLINE ONLINE ZFZHLHRDB1

ONLINE ONLINE ZFZHLHRDB2

ora.asm

ONLINE ONLINE ZFZHLHRDB1 Started

ONLINE ONLINE ZFZHLHRDB2 Started

ora.gsd

OFFLINE OFFLINE ZFZHLHRDB1

OFFLINE OFFLINE ZFZHLHRDB2

ora.net1.network

ONLINE ONLINE ZFZHLHRDB1

ONLINE ONLINE ZFZHLHRDB2

ora.ons

ONLINE ONLINE ZFZHLHRDB1

ONLINE ONLINE ZFZHLHRDB2

ora.registry.acfs

ONLINE ONLINE ZFZHLHRDB1

ONLINE ONLINE ZFZHLHRDB2

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

Cluster Resources

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

ora.LISTENER_SCAN1.lsnr

1 ONLINE ONLINE ZFZHLHRDB1

ora.cvu

1 ONLINE ONLINE ZFZHLHRDB2

ora.myrac.db

1 ONLINE ONLINE ZFZHLHRDB1 Open

ora.oc4j

1 ONLINE ONLINE ZFZHLHRDB2

ora.oraesdb.db

1 ONLINE OFFLINE Instance Shutdown

2 ONLINE OFFLINE

ora.oraeskdb.db

1 ONLINE ONLINE ZFZHLHRDB1 Open,Readonly

2 OFFLINE OFFLINE Instance Shutdown

ora.scan1.vip

1 ONLINE ONLINE ZFZHLHRDB1

ora.ZFZHLHRDB1.vip

1 ONLINE ONLINE ZFZHLHRDB1

ora.ZFZHLHRDB2.vip

1 ONLINE ONLINE ZFZHLHRDB2

ZFZHLHRDB1:grid:/oracle/app/11.2.0/grid/network/admin>srvctl add listener -l LISTENER -p 1521 -o $ORACLE_HOME

ZFZHLHRDB1:grid:/oracle/app/11.2.0/grid/network/admin>crsctl stat res -t

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

NAME TARGET STATE SERVER STATE_DETAILS

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

Local Resources

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

ora.DATA.dg

ONLINE ONLINE ZFZHLHRDB1

ONLINE ONLINE ZFZHLHRDB2

ora.LISTENER.lsnr

OFFLINE OFFLINE ZFZHLHRDB1

OFFLINE OFFLINE ZFZHLHRDB2

ora.LISTENER_LHRDG.lsnr

ONLINE ONLINE ZFZHLHRDB1

ONLINE ONLINE ZFZHLHRDB2

ora.asm

ONLINE ONLINE ZFZHLHRDB1 Started

ONLINE ONLINE ZFZHLHRDB2 Started

ora.gsd

OFFLINE OFFLINE ZFZHLHRDB1

OFFLINE OFFLINE ZFZHLHRDB2

ora.net1.network

ONLINE ONLINE ZFZHLHRDB1

ONLINE ONLINE ZFZHLHRDB2

ora.ons

ONLINE ONLINE ZFZHLHRDB1

ONLINE ONLINE ZFZHLHRDB2

ora.registry.acfs

ONLINE ONLINE ZFZHLHRDB1

ONLINE ONLINE ZFZHLHRDB2

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

Cluster Resources

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

ora.LISTENER_SCAN1.lsnr

1 ONLINE ONLINE ZFZHLHRDB1

ora.cvu

1 ONLINE ONLINE ZFZHLHRDB2

ora.oc4j

1 ONLINE ONLINE ZFZHLHRDB2

ora.oraesdb.db

1 ONLINE OFFLINE Instance Shutdown

2 ONLINE OFFLINE

ora.oraeskdb.db

1 ONLINE ONLINE ZFZHLHRDB1 Open,Readonly

2 OFFLINE OFFLINE Instance Shutdown

ora.scan1.vip

1 ONLINE ONLINE ZFZHLHRDB1

ora.ZFZHLHRDB1.vip

1 ONLINE ONLINE ZFZHLHRDB1

ora.ZFZHLHRDB2.vip

1 ONLINE ONLINE ZFZHLHRDB2

ZFZHLHRDB1:grid:/home/grid>crsctl stop res ora.LISTENER.lsnr

CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'ZFZHLHRDB2'

CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'ZFZHLHRDB1'

CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'ZFZHLHRDB1' succeeded

CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'ZFZHLHRDB2' succeeded

ZFZHLHRDB1:grid:/home/grid>crsctl start res ora.LISTENER.lsnr

CRS-2672: Attempting to start 'ora.LISTENER.lsnr' on 'ZFZHLHRDB2'

CRS-2672: Attempting to start 'ora.LISTENER.lsnr' on 'ZFZHLHRDB1'

CRS-2676: Start of 'ora.LISTENER.lsnr' on 'ZFZHLHRDB1' succeeded

CRS-2676: Start of 'ora.LISTENER.lsnr' on 'ZFZHLHRDB2' succeeded

原本以为就是这个原因导致的,结果添加完ora.LISTENER.lsnr后还是单实例的,郁闷。。。更郁闷的是第二次创建后,trace文件中已经没有任何错误了,无论搜error或fail都搜不到,但是创建的数据库还是单实例,,,第二次创建的日志:

有种深深的挫败感,于是解决同事碰到的那个DG问题,参考:http://blog.itpub.net/26736162/viewspace-2121688/时间就这样过了2天,到了7月8号,手头又没什么事情了,想起来dbca这个问题,想来想去还是得从日志入手,老子一行一行的看,总能看出点东西来,但这次我比对的看,就是找一个dbca可以创建rac的环境,生成日志来分析差异,结果令我震惊了。

当小麦苗看到第5行的日志的时候,发现一个null的问题,Current Version From Inventory: null,截图如下:

错误环境截图:

DBCA建库rac环境不能创建rac库问题处理

而正常环境的rac是这个样子的:

DBCA建库rac环境不能创建rac库问题处理

可以看到正常环境下,可以获取到Homeinfo和Current Version From Inventory的值,当看到Inventory这个词的时候我就想我已经找到问题的答案了。应该是Inventory这个目录出现了问题,标准点的说法应该是/oracle/app/oraInventory/ContentsXML/inventory.xml这个文件的内容有问题了。Inventory目录存放的是Oracle软件安装的目录信息,Oracle升级也需要这个目录,执行opatch lspatches也需要这个目录。oraInventory目录的位置在/etc/oraInst.loc中记录,11g中我们可以通过$ORACLE_HOME/oui/bin/attachHome.sh来重建这个目录。

在其中的1个节点上分别用oracle和grid来执行:

The user is root. Oracle Universal Installer cannot continue installation if the user is root.

: A file or directory in the path name does not exist.

ZFLHRDB1:root:/oracle/app/oraInventory>su - grid

Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB. Actual 8192 MB Passed

The inventory pointer is located at /etc/oraInst.loc

The inventory is located at /oracle/app/oraInventory

'AttachHome' was successful.

ZFLHRDB1:grid:/home/grid>cd /oracle/app/oraInventory/ContentsXML

ZFLHRDB1:grid:/oracle/app/oraInventory/ContentsXML>more inv*

\<?xml version="1.0" standalone="yes" ?>

\<!-- Copyright (c) 1999, 2013, Oracle and/or its affiliates.

All rights reserved. -->

\<!-- Do not modify the contents of this file by hand. -->

\<INVENTORY>

\<VERSION_INFO>

\<SAVED_WITH>11.2.0.4.0\</SAVED_WITH>

\<MINIMUM_VER>2.1.0.6.0\</MINIMUM_VER>

\</VERSION_INFO>

\<HOME_LIST>

\<HOME NAME="Ora11g_gridinfrahome1" LOC="/oracle/app/11.2.0/grid" TYPE="O" IDX="1" CRS="true">

\<NODE_LIST>

\<NODE NAME="ZFLHRDB1"/>

\<NODE NAME="ZFLHRDB2"/>

\</NODE_LIST>

\</HOME>

\</HOME_LIST>

\<COMPOSITEHOME_LIST>

\</COMPOSITEHOME_LIST>

\</INVENTORY>

ZFLHRDB1:root:/oracle/app/oraInventory>su - oracle

Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB. Actual 8192 MB Passed

The inventory pointer is located at /etc/oraInst.loc

The inventory is located at /oracle/app/oraInventory

'AttachHome' was successful.

ZFLHRDB1:oracle:/oracle>cd /oracle/app/oraInventory/ContentsXML

ZFLHRDB1:oracle:/oracle/app/oraInventory/ContentsXML>more inv*

\<?xml version="1.0" standalone="yes" ?>

\<!-- Copyright (c) 1999, 2013, Oracle and/or its affiliates.

All rights reserved. -->

\<!-- Do not modify the contents of this file by hand. -->

\<INVENTORY>

\<VERSION_INFO>

\<SAVED_WITH>11.2.0.4.0\</SAVED_WITH>

\<MINIMUM_VER>2.1.0.6.0\</MINIMUM_VER>

\</VERSION_INFO>

\<HOME_LIST>

\<HOME NAME="Ora11g_gridinfrahome1" LOC="/oracle/app/11.2.0/grid" TYPE="O" IDX="1" CRS="true">

\<NODE_LIST>

\<NODE NAME="ZFLHRDB1"/>

\<NODE NAME="ZFLHRDB2"/>

\</NODE_LIST>

\</HOME>

\<HOME NAME="DbHome1" LOC="/oracle/app/oracle/product/11.2.0/db" TYPE="O" IDX="2">

\<NODE_LIST>

\<NODE NAME="ZFLHRDB1"/>

\<NODE NAME="ZFLHRDB2"/>

\</NODE_LIST>

\</HOME>

\</HOME_LIST>

\<COMPOSITEHOME_LIST>

\</COMPOSITEHOME_LIST>

\</INVENTORY>

重建Inventory这个目录后重新执行建库脚本:

ZFZHLHRDB1:oracle:/oracle>dbca -silent -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \

> -gdbname racdb -sid racdb \

-gdbname racdb -sid racdb \

> -sysPassword lhr -systemPassword lhr \

> -datafileDestination 'DATA/' -recoveryAreaDestination 'DATA/' \

> -redoLogFileSize 50 \

> -storageType ASM -asmsnmpPassword lhr -diskGroupName 'DATA' \

> -characterset ZHS16GBK -nationalCharacterSet AL16UTF16 \

> -sampleSchema true \

> -automaticMemoryManagement true -totalMemory 2048 \

> -databaseType OLTP \

> -emConfiguration NONE \

> -nodelist ZFZHLHRDB1,ZFZHLHRDB2

Copying database files

1% complete

3% complete

9% complete

15% complete

21% complete

30% complete

Creating and starting Oracle instance

32% complete

36% complete

40% complete

44% complete

45% complete

48% complete

50% complete

Creating cluster database views

52% complete

70% complete

Completing Database Creation

73% complete

76% complete

85% complete

94% complete

100% complete

Look at the log file "/oracle/app/oracle/cfgtoollogs/dbca/racdb/racdb.log" for further details.

已经正常了,唉,o(︶︿︶)o 唉,折腾了这么久原来是这个文件的问题,至于新环境为啥这个目录的配置文件不全,这个估计得追溯到rac的安装过程了,这个就不去纠结了。

模拟让故障重现

我们再来看看/oracle/app/oraInventory/ContentsXML/inventory.xml文件的内容:

ZFZHLHRDB1:oracle:/oracle>more /oracle/app/oraInventory/ContentsXML/inventory.xml

\<?xml version="1.0" standalone="yes" ?>

\<!-- Copyright (c) 1999, 2013, Oracle and/or its affiliates.

All rights reserved. -->

\<!-- Do not modify the contents of this file by hand. -->

\<INVENTORY>

\<VERSION_INFO>

\<SAVED_WITH>11.2.0.4.0\</SAVED_WITH>

\<MINIMUM_VER>2.1.0.6.0\</MINIMUM_VER>

\</VERSION_INFO>

\<HOME_LIST>

\<HOME NAME="GridHome1" LOC="/oracle/app/11.2.0/grid" TYPE="O" IDX="1" CRS="true">

\<NODE_LIST>

\<NODE NAME="ZFZHLHRDB1"/>

\<NODE NAME="ZFZHLHRDB2"/>

\</NODE_LIST>

\</HOME>

\<HOME NAME="DbHome1" LOC="/oracle/app/oracle/product/11.2.0/db" TYPE="O" IDX="2">

\<NODE_LIST>

\<NODE NAME="ZFZHLHRDB1"/>

\<NODE NAME="ZFZHLHRDB2"/>

\</NODE_LIST>

\</HOME>

\</HOME_LIST>

\<COMPOSITEHOME_LIST>

\</COMPOSITEHOME_LIST>

\</INVENTORY>

对了,看仔细了,文件中有2个部分,若把蓝色字体的部分删掉,或者把/oracle/app/oraInventory/ContentsXML/inventory.xml的权限修改为root用户,那么执行dbca的时候将又回到单库的时代,原来dbca会从这里去获取是否集群环境,小麦苗阅读了dbca这个shell脚本,无奈最后发现是调用的java,但java这是个二进制文件不是shell脚本,所以就无法知道到底从哪里获取的集群环境信息。

小麦苗已亲自测试过,各位朋友测试过了吗????

关于重建Inventory目录的2种办法

重建Inventory目录的时候,生成的log文件在/oracle/app/oraInventory/logs下。

方法一:$ORACLE_HOME/oui/bin/attachHome.sh

这篇文档中提到有一个脚本$ORACLE_HOME/oui/bin/attachHome.sh可以重建Inventory目录,但是我们可以看到在不同的用户下(grid和oracle),其OHOME的变量值不同,所以若单独创建可以执行该脚本即可。

ZFLHRDB1:grid:/home/grid>more $ORACLE_HOME/oui/bin/attachHome.sh

#!/bin/sh

OHOME=/oracle/app/11.2.0/grid

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

OHOMENAME=Ora11g_gridinfrahome1

CUR_DIR=\pwd\

cd $OHOME/oui/bin

./runInstaller -detachhome ORACLE_HOME=$OHOME ORACLE_HOME_NAME=$OHOMENAME $* > /dev/null 2>&1

./runInstaller -attachhome ORACLE_HOME=$OHOME ORACLE_HOME_NAME=$OHOMENAME $*

cd $CUR_DIR

ZFLHRDB1:root:/oracle/app>su - oracle

ZFLHRDB1:oracle:/oracle>more $ORACLE_HOME/oui/bin/attachHome.sh

#!/bin/sh

OHOME=/oracle/app/oracle/product/11.2.0/db

OHOMENAME=DbHome1

CUR_DIR=\pwd\

cd $OHOME/oui/bin

./runInstaller -detachhome ORACLE_HOME=$OHOME ORACLE_HOME_NAME=$OHOMENAME $* > /dev/null 2>&1

./runInstaller -attachhome ORACLE_HOME=$OHOME ORACLE_HOME_NAME=$OHOMENAME $*

cd $CUR_DIR

备份2个节点的Inventory目录,并重建空的Inventory目录,然后分别在grid和oracle用户下执行$ORACLE_HOME/oui/bin/attachHome.sh命令即可,注意只需要在其中的一个节点上执行即可。

The user is root. Oracle Universal Installer cannot continue installation if the user is root.

: A file or directory in the path name does not exist.

ZFLHRDB1:root:/oracle/app/oraInventory>su - grid

Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB. Actual 8192 MB Passed

The inventory pointer is located at /etc/oraInst.loc

The inventory is located at /oracle/app/oraInventory

'AttachHome' was successful.

ZFLHRDB1:grid:/home/grid>cd /oracle/app/oraInventory/ContentsXML

ZFLHRDB1:grid:/oracle/app/oraInventory/ContentsXML>more inv*

\<?xml version="1.0" standalone="yes" ?>

\<!-- Copyright (c) 1999, 2013, Oracle and/or its affiliates.

All rights reserved. -->

\<!-- Do not modify the contents of this file by hand. -->

\<INVENTORY>

\<VERSION_INFO>

\<SAVED_WITH>11.2.0.4.0\</SAVED_WITH>

\<MINIMUM_VER>2.1.0.6.0\</MINIMUM_VER>

\</VERSION_INFO>

\<HOME_LIST>

\<HOME NAME="Ora11g_gridinfrahome1" LOC="/oracle/app/11.2.0/grid" TYPE="O" IDX="1" CRS="true">

\<NODE_LIST>

\<NODE NAME="ZFLHRDB1"/>

\<NODE NAME="ZFLHRDB2"/>

\</NODE_LIST>

\</HOME>

\</HOME_LIST>

\<COMPOSITEHOME_LIST>

\</COMPOSITEHOME_LIST>

\</INVENTORY>

ZFLHRDB1:root:/oracle/app/oraInventory>su - oracle

Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB. Actual 8192 MB Passed

The inventory pointer is located at /etc/oraInst.loc

The inventory is located at /oracle/app/oraInventory

'AttachHome' was successful.

ZFLHRDB1:oracle:/oracle>cd /oracle/app/oraInventory/ContentsXML

ZFLHRDB1:oracle:/oracle/app/oraInventory/ContentsXML>more inv*

\<?xml version="1.0" standalone="yes" ?>

\<!-- Copyright (c) 1999, 2013, Oracle and/or its affiliates.

All rights reserved. -->

\<!-- Do not modify the contents of this file by hand. -->

\<INVENTORY>

\<VERSION_INFO>

\<SAVED_WITH>11.2.0.4.0\</SAVED_WITH>

\<MINIMUM_VER>2.1.0.6.0\</MINIMUM_VER>

\</VERSION_INFO>

\<HOME_LIST>

\<HOME NAME="Ora11g_gridinfrahome1" LOC="/oracle/app/11.2.0/grid" TYPE="O" IDX="1" CRS="true">

\<NODE_LIST>

\<NODE NAME="ZFLHRDB1"/>

\<NODE NAME="ZFLHRDB2"/>

\</NODE_LIST>

\</HOME>

\<HOME NAME="DbHome1" LOC="/oracle/app/oracle/product/11.2.0/db" TYPE="O" IDX="2">

\<NODE_LIST>

\<NODE NAME="ZFLHRDB1"/>

\<NODE NAME="ZFLHRDB2"/>

\</NODE_LIST>

\</HOME>

\</HOME_LIST>

\<COMPOSITEHOME_LIST>

\</COMPOSITEHOME_LIST>

\</INVENTORY>

方法二:集群下统一创建

可以去小麦苗的云盘下载该文档:

根据MOS(MOS:413939.1)的介绍,重建Inventory的步骤:

ZFLHRDB2:oracle:/oracle>more /etc/oraInst.loc

inventory_loc=/oracle/app/oraInventory

inst_group=dba

ZFLHRDB2:oracle:/oracle>cd /oracle/app/oraInventory

total 24

drwxrwx--- 2 grid dba 256 Jul 08 13:42 ContentsXML

drwxrwx--- 2 grid dba 4096 Jul 08 10:41 logs

-rw-rw---- 1 grid dba 54 Jul 01 10:45 oraInst.loc

-rwxrwx--- 1 grid dba 1630 Mar 05 2012 orainstRoot.sh

ZFLHRDB2:oracle:/oracle/app/oraInventory>cd ContentsXML

total 24

-rw-rw---- 1 grid dba 329 Jul 08 10:42 comps.xml

-rwxrwxrwx 1 oracle dba 757 Jul 08 12:45 inventory.xml

-rw-rw---- 1 grid dba 292 Jul 08 10:42 libs.xml

ZFLHRDB2:oracle:/oracle/app/oraInventory/ContentsXML>more inventory.xml

\<?xml version="1.0" standalone="yes" ?>

\<!-- Copyright (c) 1999, 2013, Oracle and/or its affiliates.

All rights reserved. -->

\<!-- Do not modify the contents of this file by hand. -->

\<INVENTORY>

\<VERSION_INFO>

\<SAVED_WITH>11.2.0.4.0\</SAVED_WITH>

\<MINIMUM_VER>2.1.0.6.0\</MINIMUM_VER>

\</VERSION_INFO>

\<HOME_LIST>

\<HOME NAME="GridHome1" LOC="/oracle/app/11.2.0/grid" TYPE="O" IDX="1" CRS="true">

\<NODE_LIST>

\<NODE NAME="ZFLHRDB1"/>

\<NODE NAME="ZFLHRDB2"/>

\</NODE_LIST>

\</HOME>

\<HOME NAME="DbHome1" LOC="/oracle/app/oracle/product/11.2.0/db" TYPE="O" IDX="2">

\<NODE_LIST>

\<NODE NAME="ZFLHRDB1"/>

\<NODE NAME="ZFLHRDB2"/>

\</NODE_LIST>

\</HOME>

\</HOME_LIST>

\<COMPOSITEHOME_LIST>

\</COMPOSITEHOME_LIST>

\</INVENTORY>

接下来分别备份2个节点的Inventory目录,并重建空的Inventory目录:

ZFLHRDB2:root:/oracle/app>mv oraInventory oraInventory.orig

ZFLHRDB2:root:/oracle/app>echo $ORACLE_HOME

/oracle/app/11.2.0/grid

total 0

drwxr-xr-x 3 root dba 256 Jul 01 10:29 11.2.0

drwxr-xr-x 7 grid dba 256 Jul 07 18:20 grid

drwxrwx--- 4 grid dba 256 Jul 08 10:42 oraInventory.orig

drwxr-xr-x 9 oracle dba 256 Jul 07 19:19 oracle

ZFLHRDB2:root:/oracle/app>cp -R oraInventory.orig oraInventory

ZFLHRDB2:root:/oracle/app>cd oraInventory

total 24

drwxr-x--- 2 root system 256 Jul 11 14:43 ContentsXML

drwxr-x--- 2 root system 4096 Jul 11 14:43 logs

-rw-r----- 1 root system 54 Jul 11 14:43 oraInst.loc

-rwxr-x--- 1 root system 1630 Jul 11 14:43 orainstRoot.sh

ZFLHRDB2:root:/oracle/app/oraInventory>rm -rf *

ZFLHRDB2:root:/oracle/app/oraInventory>cd ..

total 0

drwxr-xr-x 3 root dba 256 Jul 01 10:29 11.2.0

drwxr-xr-x 7 grid dba 256 Jul 07 18:20 grid

drwxr-x--- 2 root system 256 Jul 11 14:43 oraInventory

drwxrwx--- 4 grid dba 256 Jul 08 10:42 oraInventory.orig

drwxr-xr-x 9 oracle dba 256 Jul 07 19:19 oracle

ZFLHRDB2:root:/oracle/app>chown grid.dba oraInventory

total 0

drwxr-xr-x 3 root dba 256 Jul 01 10:29 11.2.0

drwxr-xr-x 7 grid dba 256 Jul 07 18:20 grid

drwxr-x--- 2 grid dba 256 Jul 11 14:43 oraInventory

drwxrwx--- 4 grid dba 256 Jul 08 10:42 oraInventory.orig

drwxr-xr-x 9 oracle dba 256 Jul 07 19:19 oracle

ZFLHRDB2:root:/oracle/app>chmod 775 oraInventory

total 0

drwxr-xr-x 3 root dba 256 Jul 01 10:29 11.2.0

drwxr-xr-x 7 grid dba 256 Jul 07 18:20 grid

drwxrwxr-x 2 grid dba 256 Jul 11 14:43 oraInventory

drwxrwx--- 4 grid dba 256 Jul 08 10:42 oraInventory.orig

drwxr-xr-x 9 oracle dba 256 Jul 07 19:19 oracle

以下命令用grid用户在节点一执行即可,节点二自动创建:

ZFLHRDB1:grid:/home/grid>$ORACLE_HOME/oui/bin/runInstaller -silent -ignoreSysPrereqs \

> -attachHome ORACLE_HOME="/oracle/app/11.2.0/grid" ORACLE_HOME_NAME="GridHome1" \

> LOCAL_NODE="ZFLHRDB1" CLUSTER_NODES="{ZFLHRDB1,ZFLHRDB2}" CRS=true

Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB. Actual 8192 MB Passed

The inventory pointer is located at /etc/oraInst.loc

The inventory is located at /oracle/app/oraInventory

'AttachHome' was successful.

====》GRID_HOME创建成功,接下来创建ORACLE_HOME

ZFLHRDB1:grid:/home/grid>$ORACLE_HOME/oui/bin/runInstaller -silent -ignoreSysPrereqs \

> -attachHome ORACLE_HOME="/oracle/app/oracle/product/11.2.0/db" ORACLE_HOME_NAME="DbHome1" \

> LOCAL_NODE="ZFLHRDB1" CLUSTER_NODES="{ZFLHRDB1,ZFLHRDB2}"

Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB. Actual 8192 MB Passed

The inventory pointer is located at /etc/oraInst.loc

The inventory is located at /oracle/app/oraInventory

'AttachHome' was successful.

====》2个节点均创建成功

ZFLHRDB2:root:/oracle/app/oraInventory/ContentsXML>more inv*

\<?xml version="1.0" standalone="yes" ?>

\<!-- Copyright (c) 1999, 2013, Oracle and/or its affiliates.

All rights reserved. -->

\<!-- Do not modify the contents of this file by hand. -->

\<INVENTORY>

\<VERSION_INFO>

\<SAVED_WITH>11.2.0.4.0\</SAVED_WITH>

\<MINIMUM_VER>2.1.0.6.0\</MINIMUM_VER>

\</VERSION_INFO>

\<HOME_LIST>

\<HOME NAME="GridHome1" LOC="/oracle/app/11.2.0/grid" TYPE="O" IDX="1" CRS="true">

\<NODE_LIST>

\<NODE NAME="ZFLHRDB1"/>

\<NODE NAME="ZFLHRDB2"/>

\</NODE_LIST>

\</HOME>

\<HOME NAME="DbHome1" LOC="/oracle/app/oracle/product/11.2.0/db" TYPE="O" IDX="2">

\<NODE_LIST>

\<NODE NAME="ZFLHRDB1"/>

\<NODE NAME="ZFLHRDB2"/>

\</NODE_LIST>

\</HOME>

\</HOME_LIST>

\<COMPOSITEHOME_LIST>

\</COMPOSITEHOME_LIST>

\</INVENTORY>

注意的2点:

a-Do not try attachHome in all the nodes, which may corrupt the inventory and it results in OUI-10197:Unable to create a new Oracle Home at /u01/app/oracle/product/10.2.0/crs_1. Oracle Home already exists at this location. Select another location. Attaching Home in one node will be propagated to other nodes.

b-Make absolutely sure you are have backed up the original inventory before starting this procedure, so that you can revert if necessary.

方法三:直接修改/u01/app/oraInventory/ContentsXML/inventory.xml的内容

若是Inventory目录的其它文件是好的,只有/u01/app/oraInventory/ContentsXML/inventory.xml的内容中缺少数据库的部分,我们可以直接修改该文件加入需要的内容即可。

正确的配置应该是:

ZFZHLHRDB1:oracle:/oracle>more /oracle/app/oraInventory/ContentsXML/inventory.xml

\<?xml version="1.0" standalone="yes" ?>

\<!-- Copyright (c) 1999, 2013, Oracle and/or its affiliates.

All rights reserved. -->

\<!-- Do not modify the contents of this file by hand. -->

\<INVENTORY>

\<VERSION_INFO>

\<SAVED_WITH>11.2.0.4.0\</SAVED_WITH>

\<MINIMUM_VER>2.1.0.6.0\</MINIMUM_VER>

\</VERSION_INFO>

\<HOME_LIST>

\<HOME NAME="GridHome1" LOC="/oracle/app/11.2.0/grid" TYPE="O" IDX="1" CRS="true">

\<NODE_LIST>

\<NODE NAME="ZFZHLHRDB1"/>

\<NODE NAME="ZFZHLHRDB2"/>

\</NODE_LIST>

\</HOME>

\<HOME NAME="DbHome1" LOC="/oracle/app/oracle/product/11.2.0/db" TYPE="O" IDX="2">

\<NODE_LIST>

\<NODE NAME="ZFZHLHRDB1"/>

\<NODE NAME="ZFZHLHRDB2"/>

\</NODE_LIST>

\</HOME>

\</HOME_LIST>

\<COMPOSITEHOME_LIST>

\</COMPOSITEHOME_LIST>

\</INVENTORY>

可以将缺少的RAC部分添加进去即可。

故障处理总结

rac环境不能创建rac库

在集群环境中, dbca不能创建rac库,那很可能就是/oracle/app/oraInventory/ContentsXML/inventory.xml文件中丢失了db部分的内容,我们可以使用$ORACLE_HOME/oui/bin/attachHome.sh来重建该目录,或手动修改该文件。

若执行attachHome.sh报如下的错误,那么删除/oracle/app/oraInventory/ContentsXML下的3个文件后继续执行即可。

org.xml.sax.SAXParseException: \<Line 1, Column 1>: XML-20108: (Fatal Error) Start of root element expected.

at oracle.xml.parser.v2.XMLError.flushErrorHandler(XMLError.java:415)

其它dbca静默建库常见错误的解决办法

The Oracle system identifier(SID) "xxx" already exists. Specify another SID

用root用户编辑/etc/oratab,删除相应的记录: xxx:/u01/oracle:N ,保存退出问题解决。

The cluster database(DB_NAME) "racdb" already exists. Please specify another DB_NAME.

原因:说明集群环境中已经有racdb这个数据库了。

解决办法:若数据库无用了,可以dbca -silent -deleteDatabase -sourceDB racdb来删除数据库,若数据库不能启动,则可以直接从crs中删除数据库的注册信息:srvctl remove db -d racdb -f后重新运行脚本即可。

DBCA建库报错CRS-2566 PRCR-1071 PRCR-1006

PRCR-1006 : Failed to add resource ora.lhrdg.db for lhrdg

PRCR-1071 : Failed to register or update resource ora.lhrdg.db

CRS-2566: User 'oracle' does not have sufficient permissions to operate on resource 'ora.LISTENER_LHRDG.lsnr', which is part of the dependency specification.

DBCA_PROGRESS : 100%

权限不对,应该用grid来创建监听:srvctl config listener -l LISTENER_LHRDG -a

具体参考我的blog:http://blog.itpub.net/26736162/viewspace-2114484/

用到的SQL集合

RAC建库脚本:

dbca -silent -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \

-gdbname racdb -sid racdb \

-sysPassword lhr -systemPassword lhr \

-datafileDestination 'DATA/' -recoveryAreaDestination 'DATA/' \

-redoLogFileSize 50 \

-storageType ASM -asmsnmpPassword lhr -diskGroupName 'DATA' \

-characterset ZHS16GBK -nationalCharacterSet AL16UTF16 \

-sampleSchema true \

-automaticMemoryManagement true -totalMemory 2048 \

-databaseType OLTP \

-emConfiguration NONE \

-nodelist ZFLHRDB1,ZFLHRDB2

静默创建监听:netca -silent -responsefile $ORACLE_HOME/assistants/netca/netca.rsp

添加监听:srvctl add listener -l LISTENER -p 1521 -o $ORACLE_HOME

oraInventory目录:/oracle/app/oraInventory/ContentsXML/inventory.xml

重建的话,方法一: 备份2个节点的Inventory目录,并重建空的Inventory目录,然后分别在grid和oracle用户下执行$ORACLE_HOME/oui/bin/attachHome.sh命令即可,注意只需要在其中的一个节点上执行即可。方法二,在grid用户下执行:

$ORACLE_HOME/oui/bin/runInstaller -silent -ignoreSysPrereqs \

-attachHome ORACLE_HOME="/oracle/app/11.2.0/grid" ORACLE_HOME_NAME="GridHome1" \

LOCAL_NODE="ZFLHRDB1" CLUSTER_NODES="{ZFLHRDB1,ZFLHRDB2}" CRS=true

$ORACLE_HOME/oui/bin/runInstaller -silent -ignoreSysPrereqs \

-attachHome ORACLE_HOME="/oracle/app/oracle/product/11.2.0/db" ORACLE_HOME_NAME="DbHome1" \

LOCAL_NODE="ZFLHRDB1" CLUSTER_NODES="{ZFLHRDB1,ZFLHRDB2}"

重新执行root.sh脚本:

ocrconfig -showbackup

ocrconfig -manualbackup

$ORACLE_HOME/crs/install/rootcrs.pl -deconfig -force -verbose

ls -l $ORACLE_BASE/Clusterware/ckptGridHA*

find $ORACLE_HOME/gpnp/* -type f

find $ORACLE_HOME/gpnp/* -type f -exec rm -rf {} \;

$ORACLE_HOME/crs/install/rootcrs.pl -deconfig -force -verbose -lastnode -keepdg

ls -l $ORACLE_BASE/Clusterware/ckptGridHA*

find $ORACLE_HOME/gpnp/* -type f

find $ORACLE_HOME/gpnp/* -type f -exec rm -rf {} \;

ipcs

$ORACLE_HOME/root.sh

/oracle/app/11.2.0/grid/perl/bin/perl -I/oracle/app/11.2.0/grid/perl/lib -I/oracle/app/11.2.0/grid/crs/install /oracle/app/11.2.0/grid/crs/install/rootcrs.pl

ipcs

$ORACLE_HOME/root.sh

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

14 + 3 =

 

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部