大约RAC下一个spfile分析_整理在_2014.4.17

说明:文章来源于网络

第一篇:RAC下SPFILE文件改动

在RAC下spfile位置的改动与单节点环境不全然一致,有些地方须要特别注意,否则可能改动会失败。

以下用一个样例说明:SPFILE放在ASM中一个不对的文件夹(+ARCH)中,如今想把它放在另外一个文件夹(+DBSYS)下。

下面是详细步骤:

1. 原spfile位置

SQL> show parameter spfile

NAME TYPE VALUE

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

spfile string +ARCH/dwrac/spfiledwrac.ora

2. 拷贝spfile到其它文件夹

因为在ASM中。不能直接cp,须要通过迂回的办法实现。

sys@dwrac2> create pfile='/tmp/pfile.ora'from spfile;

File created.

sys@dwrac2> createspfile='+DBSYS/dwrac/spfiledwrac.ora' from pfile='/tmp/pfile.ora';

File created.

3. 改动全部节点$ORACLE_HOME/dbs/init下的參数文件

[oracle@dwdb04 dbs]$ vi initdwrac2.ora

SPFILE='+ARCH/dwrac/spfiledwrac.ora'

==>

SPFILE='+DBSYS/dwrac/spfiledwrac.ora'

4. 通过sqlplus方式重新启动实例

sys@dwrac2> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

sys@dwrac2> startup

ORACLE instance started.

Total System Global Area 5.2429E+10 bytes

Fixed Size 2193872 bytes

Variable Size 3707766320 bytes

Database Buffers 4.8671E+10 bytes

Redo Buffers 48136192 bytes

Database mounted.

Database opened.

sys@dwrac2> show parameter spfile

NAME TYPE VALUE

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

spfile string +DBSYS/dwrac/spfiledwrac.ora

能够发现,spfile已经改动成功。

5. 可是假设用过srvctl重新启动数据库。发现spfile又变回来了:

[oracle@dwdb02 dbs]$ srvctl stop instance-d dwrac -i dwrac1,dwrac2,dwrac3,dwrac4

[oracle@dwdb02 dbs]$ srvctl start instance-d dwrac -i dwrac1,dwrac2,dwrac3,dwrac4

[oracle@dwdb02 dbs]$ sqlplus "/assysdba"

sys@dwrac2> show parameter spfile

NAME TYPE VALUE

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

spfile string +ARCH/dwrac/spfiledwrac.ora

6. 原因及解决

这是为什么呢?实际上在RAC环境中,我们很多其它时候是用srvctl来管理RAC资源,而srvctl的信息来自ocr,包含spfile的位置信息。我们刚才那样做尽管改动了參数文件的位置,可是ocr并不知道,它还用原来的文件启动数据库。

我们能够用srvctl查看数据库的配置信息来确认:

[oracle@dwdb01 dbs]$ srvctl config database-d dwrac -a

dwdb01 dwrac1 /oracle/product/10.2.0/db

dwdb02 dwrac2 /oracle/product/10.2.0/db

dwdb03 dwrac3 /oracle/product/10.2.0/db

dwdb04 dwrac4 /oracle/product/10.2.0/db

DB_UNIQUE_NAME: dwrac

DB_NAME: dwrac

ORACLE_HOME: /oracle/product/10.2.0/db

SPFILE: +ARCH/dwrac/spfiledwrac.ora

DOMAIN: null

DB_ROLE: null

START_OPTIONS: null

POLICY: AUTOMATIC

ENABLE FLAG: DB ENABLED

能够看到,SPFILE的位置指向是+ARCH。

解决方法是通过srvctl改动SPFILE的位置。

[oracle@dwdb01 dbs]$ srvctl modify database-d dwrac -p '+DBSYS/dwrac/spfiledwrac.ora'

[oracle@dwdb01 dbs]$ srvctl config database-d dwrac -a

dwdb01 dwrac1 /oracle/product/10.2.0/db

dwdb02 dwrac2 /oracle/product/10.2.0/db

dwdb03 dwrac3 /oracle/product/10.2.0/db

dwdb04 dwrac4 /oracle/product/10.2.0/db

DB_UNIQUE_NAME: dwrac

DB_NAME: dwrac

ORACLE_HOME: /oracle/product/10.2.0/db

SPFILE: +DBSYS/dwrac/spfiledwrac.ora

DOMAIN: null

DB_ROLE: null

START_OPTIONS: null

POLICY: AUTOMATIC

ENABLE FLAG: DB ENABLED

[oracle@dwdb01 dbs]$ srvctl stop database-d dwrac

[oracle@dwdb01 dbs]$ srvctl start database-d dwrac

sys@dwrac2> show parameter spfile

NAME TYPE VALUE

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

spfile string +DBSYS/dwrac/spfiledwrac.ora

能够看到。此时Oracle是用新的spfile启动的。

7.总结

在RAC环境下改动spfile:

1. 须要改动$ORACLE_HOME/dbs下的相关文件,指向新文件

2. 须要用srvctl改动config信息,指向新文件

第二篇:Oracle ASM存储Spfile解析

下面来自论坛:

在之前的文章《Oracle Restart启动数据库实例故障一例》(http://space.itpub.net/17203031/viewspace-774622)中,笔者攻克了一个因为使用create pfilefrom spfile引起的Restart无法启动数据库实例的故障。

严格的说,笔者并没有全然将其解决。主要体如今Spfile的使用和存放上。

1、问题简述

Oracle Database安装在ASM存储的时候。默认都是使用ASM保存Spfile參数文件。

与早期的pfile文件不同,Spfile是具有二进制格式。可以支持部分參数的动态调整。

所以,我们出现故障的时候,发现Restart的配置信息中包含了ASM中的Spfile參数内容。

[oracle@SimpleLinux ~]$ srvctl config database -d ora11g

Database unique name: ora11g

Database name:

Oracle home: /u01/app/oracle/product/11.2.0/db_1

Oracle user: oracle

Spfile: +DATA/ORA11G/spfileora11g.ora

Domain:

Start options: open

Stop options: immediate

Database role: PRIMARY

Management policy: AUTOMATIC

Database instance: ora11g

Disk Groups: DATA,RECO

Services:

我们之前的修复方法。就是将spfile内容置空,让数据库实例启动使用默认路径$ORACLE_HOME/dbs的spfile和pfile參数进行检索。

SQL> show parameter spfile

NAME                                TYPE        VALUE

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

spfile                              string     /u01/app/oracle/product/11.2.0

/db_1/dbs/spfileora11g.ora

可是此时,我们在ASM路径上是存在spfile上的。

ASMCMD> pwd

+DATA/ORA11G

ASMCMD> ls

CONTROLFILE/

DATAFILE/

ONLINELOG/

PARAMETERFILE/

TEMPFILE/

spfileora11g.ora

在这样的情况下。假设配置了ASM文件夹的spfile启动标志,启动Restart会报错。

[oracle@SimpleLinux ~]$ srvctl modify database -d ora11g-p +DATA/ora11g/spfileora11g.ora

[oracle@SimpleLinux ~]$ srvctl start database -d ora11g

PRCR-1079 : Failed to start resource ora.ora11g.db

CRS-5010: Update of configuration file "/u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora"failed: details at "(:CLSN00014:)" in"/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log"

CRS-5017: The resource action "ora.ora11g.db start" encounteredthe following error:

CRS-5010: Update of configuration file"/u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora" failed:details at "(:CLSN00014:)" in "/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log"

. For details refer to "(:CLSN00107:)" in"/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log".

CRS-2674: Start of 'ora.ora11g.db' on 'simplelinux' failed

2、分析和思考

一起冷静想想~

Pfile和spfile是參数文件经历的两个阶段。在umount阶段,Oracle是通过參数$ORACLE_HOME和$ORACLE_SID进行文件夹定位,定位到$ORACLE_HOME/dbs或者$ORACLE_HOME/database,到里面寻找制定规则的參数文件。

Oracle首先会去寻找Spfile,之后才会去找Pfile。我们通过create spfile和create pfile能够实现两者的转化。

一个比較常见的问题案例是:假设我们把启动參数改错了,启动不了了。那么怎么办?标准的做法是通过create pfilefrom spfile。拿到一个文本格式的參数pfile。在里面改动启动參数,纠正错误。

启动时候,使用startuppfile=xxx使用“指定的pfile”启动数据库实例,再通过create spfile from pfile将变化固化下来。

Oracle Restart提供的配置參数spfile事实上是非常诡异的。

从直观上看。好像是有startup数据库实例,后面能够自己去指定參数文件。类似于startupspfile=xxx的作用。可是实际上,startup是不支持spfile这种參数的。

假设这个參数是用于指定。那么在Restart启动的时候我们已经设置争取的spfile位置。指定位置上面也有文件。可是根本没有效果。Oracle还是寻找參数文件。

那么,就仅仅有一种可能性:即使Oracle使用Restart启动,也不是依靠指定的spfile。还是依照原有的规则执行。

网络上有一种方法,说的是假设我们须要指定一个spfile启动文件的时候,应该怎么做。

答案是建立一个空的pfile文件。里面直接指定SPFILE參数的文件位置。

综合几种思路,我们能够设想到Spfile保存在ASM里面,同一时候让Restart和sqlplus启动时候能够訪问到ASMSpfile的方法。

3、配置ASM上SPFILE启动

首先是创建出ASM上的spfile。注意:创建spfile的时候一定是从pfile创建,所以须要转换一下。

SQL> startuppfile=/u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora

ORACLE instance started.

Total System Global Area  263639040bytes

Fixed Size                  1344312bytes

Variable Size             134221000bytes

Database Buffers          125829120bytes

Redo Buffers                2244608bytes

Database mounted.

Database opened.

SQL> show parameter spfile

NAME                                TYPE        VALUE

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

spfile                               string

SQL> create spfile='+DATA/ORA11G/spfileora11g.ora'from pfile;

File created.

此时,我们在ASM里面能够看到生成的spfile二进制文件。

ASMCMD> ls -l

Type           Redund  Striped Time             Sys  Name

Y    CONTROLFILE/

Y    DATAFILE/

Y    ONLINELOG/

Y    PARAMETERFILE/

Y    TEMPFILE/

N   spfileora11g.ora => +DATA/ORA11G/PARAMETERFILE/spfile.267.829130539

第二部是创建维护一个“转发”參数文件。

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

[oracle@SimpleLinux ~]$ cd $ORACLE_HOME

[oracle@SimpleLinux db_1]$ cd dbs

[oracle@SimpleLinux dbs]$ ls -l

total 28

-rw-rw---- 1 oracle asmadmin 1544 Sep 12 12:58 hc_ora11g.dat

-rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora

-rwxr-x--- 1 oracle oinstall  959 Oct 18 09:51 initora11g.ora

-rwxrwx--- 1 oracle oinstall  887Sep 29 09:31 initora11g.ora.bk

-rw-r----- 1 oracle asmadmin   24Sep 12 12:58 lkORA11G

-rw-r----- 1 oracle oinstall 1536 Sep 12 13:11 orapwora11g

-rw-r----- 1 oracle asmadmin 2560 Oct 18 09:57spfileora11g.ora

在里面要完毕两件事情,一个是将dbs文件夹以下的spfile删除。由于根据Oracle启动的原则。是先找spfile,之后再找pfile。第二件是改动文本參数文件,作为转发。

[oracle@SimpleLinux dbs]$ mv spfileora11g.ora spfileora11g.ora.bk

[oracle@SimpleLinux dbs]$ cat initora11g.ora

SPFILE='+DATA/ora11g/spfileora11g.ora’ –注意:不能包含*前缀或者SID前缀

[oracle@SimpleLinux dbs]$ ls -l

total 28

-rw-rw---- 1 oracle asmadmin 1544 Sep 12 12:58 hc_ora11g.dat

-rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora

-rwxr-x--- 1 oracle oinstall   41Oct 18 10:07 initora11g.ora

-rwxrwx--- 1 oracle oinstall  887Sep 29 09:31 initora11g.ora.bk

-rw-r----- 1 oracle asmadmin   24Sep 12 12:58 lkORA11G

-rw-r----- 1 oracle oinstall 1536 Sep 12 13:11 orapwora11g

-rw-r----- 1 oracle asmadmin 2560 Oct 18 09:57 spfileora11g.ora.bk

使用srvctl关闭和启动数据库。

[oracle@SimpleLinux dbs]$ srvctl start database -d ora11g

[oracle@SimpleLinux dbs]$ srvctl config database -d ora11g

Database unique name: ora11g

Database name:

Oracle home: /u01/app/oracle/product/11.2.0/db_1

Oracle user: oracle

Spfile: +DATA/ora11g/spfileora11g.ora

Domain:

Start options: open

Stop options: immediate

Database role: PRIMARY

Management policy: AUTOMATIC

Database instance: ora11g

Disk Groups: DATA,RECO

Services:

[oracle@SimpleLinux dbs]$ srvctl status database -d ora11g

Database is running.

数据库中,spfile參数被设置为ASM路径。

SQL> show parameter spfile;

NAME                                 TYPE        VALUE

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

spfile                              string     +DATA/ora11g/spfileora11g.ora

故障彻底解决。

4、结论

综合上面的实验。我们能够看到ASM下Spfile使用的方法。ASM下的Spfile并非抛弃原有的启动规则。而是借助原有的pfile进行了目标转接。之后笔者查看MOS中的相应方案。官方推荐的也是这种做法。

这样就须要一个前提,就是dbs或者database文件夹中不能包含spfile。假设包含了。Oracle设置的转接机制就被替换掉了。

还有一个问题是我们一直看到的错误提示信息,提示參数文件initora11g.ora格式不能识别。笔者的理解是。原始的文件是笔者使用create pfilefrom spfile创建出来的,默认的SPFILE=XXX的内容被覆盖。

而Oracle Restart不能识别这样的非转接内容文件,所以报错。

第三篇:Oracle Restart启动数据库实例故障一例

网络整理:


Oracle Restart是11gR2中推出的重要高可用(HighAvailability)特性。

在Single Instance情况下。Clusterware形成一个可用性维护框架,Oracle组件服务都是在这个维护管理框架上进行管理。

Oracle Restart从职责上负责双方面的功能,一个是Oracle各个服务组件的自己主动启动。鉴于组件间复杂的依赖关系,使用Restart自己主动的进行启动顺序调节是比較好的一种策略。还有一个功能是高可用支持,假设某一个组件意外被终止执行,比方异常中断,Oracle Restart是能够定期的检查“治下”组件的生存情况,一旦检查出问题就会进行自己主动的启动。

眼下单实例Oracle使用Oracle Restart支持的组件内容有:监听器Listener、Oracle实例和数据库、ASM实例、ASM磁盘组、数据库服务Service和ONS(OracleNotification Service)。

本篇记录笔者遇到的一个故障场景,不甚复杂,和行业大牛们大作不敢相比。

权当思路记录。留待须要的朋友不时之需。

1、问题故障出现

在一台11gR2的Oracle上,笔者部署了单实例ASM实例和磁盘组结构。而且在上面部署了SingleInstance Oracle。因为是測试使用,笔者在上面进行过一些測试和实验,今天启动server之后,发现问题。

grid@SimpleLinux simplelinux]$ uptime

13:58:13 up 2:24, 1 user, load average: 0.03, 0.02, 0.00

[grid@SimpleLinux simplelinux]$ ps -ef |grep pmon

grid      3212    1  0 11:35 ?        00:00:01 asm_pmon_+ASM

grid    27724 27685  0 13:58 pts/0    00:00:00 grep pmon

依据标准的Oracle Restart配置。ASM实例、ASM磁盘组和数据库实例都是在Restart管理范围,应该是随着server启动而自己主动启动。

可是从实际情况看。ASM实例已经自己主动启动,数据库实例没有启动。

同RAC结构一样。Restart也是借助server启动过程中,以ohasd为首的高可用守护进程进行步步启动动作。

这样的情况下,查看日志信息是最好的选择,看看那个环节出现故障。

[grid@SimpleLinux simplelinux]$ pwd

/u01/app/grid/product/11.2.0/grid/log/simplelinux

[grid@SimpleLinux simplelinux]$ ls -l |grep alert

-rw-rw---- 1 grid oinstall 14494Oct 17 11:35 alertsimplelinux.log

对grid和clusterware的日志,都是保留在$ORACLE_HOME/log下的文件夹从中。Alert<sid>.log是主日志,也是检查的起始点。一般是里面发现的问题,进行进一步的分析动作。

[ohasd(2744)]CRS-2767:Resource staterecovery not attempted for 'ora.diskmon' as its target state is OFFLINE

2013-10-17 11:35:34.373

[cssd(3130)]CRS-1601:CSSD Reconfigurationcomplete. Active nodes are simplelinux .

2013-10-17 11:35:50.094

[/u01/app/grid/product/11.2.0/grid/bin/oraagent.bin(3072)]CRS-5010:Updateof configuration file "/u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora"failed: details at "(:CLSN00014:)"
in"/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log"

2013-10-17 11:35:55.645

[/u01/app/grid/product/11.2.0/grid/bin/oraagent.bin(3072)]CRS-5010:Updateof configuration file"/u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora" failed:details at "(:CLSN00014:)"
in"/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log"

2013-10-17 11:35:55.806

[ohasd(2744)]CRS-2807:Resource'ora.ora11g.db' failed to start automatically.

我们定位到了问题片段。从上面标红的内容看。Clusterware在启动dismon服务之后,试图启动数据库,也就是ora.ora11g.db。在訪问一个參数文件(注意是pfile)过程中,发现问题。

进一步检查指出的oraagent_grid.log日志,也没有过多的信息提示。

2013-10-17 11:35:50.049:[ora.ora11g.db][3013430160] {0:0:2} [start] sclsnInstAgent::sUpdateOratab fileupdated with dbName ora11g value /u01/app/oracle/product/11.2.0/db_1:N

2013-10-17 11:35:50.049:[ora.ora11g.db][3013430160] {0:0:2} [start] sclsnInstAgent::sUpdateOratab CSSunlock

2013-10-17 11:35:50.090:[ora.ora11g.db][3013430160] {0:0:2} [start] (:CLSN00014:)Failed to open file/u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora

2013-10-17 11:35:50.091: [   AGENT][3013430160] {0:0:2}UserErrorException: Locale is

2013-10-17 11:35:50.091:[ora.ora11g.db][3013430160] {0:0:2} [start] clsnUtils::error Exception type=2string=

CRS-5010: Update of configuration file"/u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora" failed:details at "(:CLSN00014:)" in "/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log"

从信息上看,是对pfile没有可以打开。

2、一次不成功的尝试

从日志信息上,看到是不可以打开文本參数控制文件。

初步推測是文件权限原因,以下进行检查。

[grid@SimpleLinux oraagent_grid]$ cd/u01/app/oracle/product/11.2.0/db_1/dbs/

[grid@SimpleLinux dbs]$ ls -l

total 20

-rw-rw---- 1 oracle asmadmin 1544 Sep 1212:58 hc_ora11g.dat

-rw-r--r-- 1 oracle oinstall 2851 May15  2009 init.ora

-rw-r----- 1 oracle oinstall  887 Sep 29 09:31 initora11g.ora

-rw-r----- 1 oracle asmadmin   24 Sep 12 12:58 lkORA11G

-rw-r----- 1 oracle oinstall 1536 Sep 1213:11 orapwora11g

[grid@SimpleLinux dbs]$ id oracle

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

[grid@SimpleLinux dbs]$ id grid

uid=501(grid) gid=500(oinstall)groups=500(oinstall),501(dba),600(asmadmin),601(asmoper),602(asmdba)

权限内容是oracle用户读写、组用户读。

从权限上看,grid和oracle读取和改动的问题不算特别严重。可是还是进行測试尝试。

[oracle@SimpleLinux dbs]$ chmod 770initora11g.ora

[oracle@SimpleLinux dbs]$ ls -l

total 20

-rw-rw---- 1 oracle asmadmin 1544 Sep 1212:58 hc_ora11g.dat

-rw-r--r-- 1 oracle oinstall 2851 May15  2009 init.ora

-rwxrwx--- 1 oracle oinstall  887 Sep 29 09:31 initora11g.ora

-rw-r----- 1 oracle asmadmin   24 Sep 12 12:58 lkORA11G

-rw-r----- 1 oracle oinstall 1536 Sep 1213:11 orapwora11g

尝试启动数据库。

[grid@SimpleLinux ~]$ srvctl start database-d ora11g

PRCR-1079 : Failed to startresource ora.ora11g.db

CRS-5010: Update of configurationfile "/u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora" failed:details at "(:CLSN00014:)" in"/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log"

CRS-5017: The resource action"ora.ora11g.db start" encountered the following error:

CRS-5010: Update of configurationfile "/u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora" failed:details at "(:CLSN00014:)" in"/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log"

. For details refer to"(:CLSN00107:)" in "/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log".

CRS-2674: Start of'ora.ora11g.db' on 'simplelinux' failed

启动失败。那么,试着使用传统sqlplus命令行方式启动是否可行?

[oracle@SimpleLinux ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.3.0 Production onThu Oct 17 14:17:11 2013

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

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup

ORACLE instance started.

Total System Global Area  263639040 bytes

Fixed Size                  1344312 bytes

Variable Size             134221000 bytes

Database Buffers          125829120 bytes

Redo Buffers                2244608 bytes

Database mounted.

Database opened.

SQL> quit

Disconnected from Oracle Database 11gEnterprise Edition Release 11.2.0.3.0 - Production

With the Partitioning, Automatic StorageManagement, OLAP, Data Mining

and Real Application Testing options

[oracle@SimpleLinux ~]$ ps -ef | grep pmon

grid     3212     1  0 11:35 ?

00:00:02 asm_pmon_+ASM

oracle  27979     1  0 14:17 ?        00:00:00 ora_pmon_ora11g

oracle  28106 27921  0 14:17 pts/0    00:00:00 grep pmon

[oracle@SimpleLinux ~]$ srvctl statusdatabase -d ora11g

Database is running.

启动成功,使用sqlplus命令行能够启动,可是Oracle Restart启动就会失败。那么问题在哪儿?

3、Spfile vs. Pfile

从直观上看。Oracle Restart启动的时候是希望訪问到參数文件pfile。

从直观的感觉上,好像被替代非常长时间的pfile为什么会被提及。利用已经启动的数据库实例。看一下当前使用的是什么參数文件。

SQL> show parameter spfile

NAME                                 TYPE        VALUE

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

spfile                               string

SQL>

当前启动是利用pfile启动的。刚刚我们对$ORACLE_HOME/dbs的检索也没有看到spfile文件。Oracle启动过程中,是默认先依据环境变量“拼凑”的路径查找spfile,之后才是pfile。系统spfile參数为空,说明当前使用的是pfile。

可是,相应到Oracle Restart里面的启动信息,似乎有些区别。

[grid@SimpleLinux ~]$ srvctl configdatabase -d ora11g

Database unique name: ora11g

Database name: ora11g

Oracle home:/u01/app/oracle/product/11.2.0/db_1

Oracle user: oracle

Spfile:+DATA/ora11g/spfileora11g.ora

Domain:

Start options: open

Stop options: immediate

Database role: PRIMARY

Management policy: AUTOMATIC

Database instance: ora11g

Disk Groups: DATA,RECO

Services:

明显出现不同。这个时候,笔者想起之前进行过实验。在ASM环境下进行spfile和pfile的生成操作。怀疑是这个过程中,存在Restart和实例信息的不匹配。

想出了另外一种修复策略。

SQL> create spfile from pfile;

File created.

SQL> startup force

ORACLE instance started.

Total System Global Area  263639040 bytes

Fixed Size                  1344312 bytes

Variable Size             134221000 bytes

Database Buffers          125829120 bytes

Redo Buffers                2244608 bytes

Database mounted.

Database opened.

SQL> show parameter spfile

NAME                                 TYPE        VALUE

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

spfile                               string      /u01/app/oracle/product/11.2.0

/db_1/dbs/spfileora11g.ora

设置恢复现有的spfile作为启动參数文件。

试图让Restart和实例信息一致。

[oracle@SimpleLinux ~]$ srvctl modifydatabase -d ora11g-p /u01/app/oracle/product/11.2.0/db_1/dbs/spfileora11g.ora

[oracle@SimpleLinux ~]$ srvctl configdatabase -d ora11g

Database unique name: ora11g

Database name: ora11g

Oracle home:/u01/app/oracle/product/11.2.0/db_1

Oracle user: oracle

Spfile: /u01/app/oracle/product/11.2.0/db_1/dbs/spfileora11g.ora

Domain:

Start options: open

Stop options: immediate

Database role: PRIMARY

Management policy: AUTOMATIC

Database instance: ora11g

Disk Groups: DATA,RECO

Services:

实验启动,故障依旧。

[oracle@SimpleLinux tmp]$ srvctl startdatabase -d ora11g

PRCR-1079 : Failed to start resourceora.ora11g.db

CRS-5010: Update of configuration file"/u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora"failed: details at "(:CLSN00014:)" in"/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log"

CRS-5017: The resource action"ora.ora11g.db start" encountered the following error:

CRS-5010: Update of configuration file"/u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora" failed:details at "(:CLSN00014:)" in"/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log"

. For details refer to"(:CLSN00107:)" in"/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log".

CRS-2674: Start of 'ora.ora11g.db' on'simplelinux' failed

第二次修复尝试以失败告终,Oracle Restart依旧寻找那个pfile。可是笔者获得了方向,就是系统问题在于Restart中对数据库启动參数文件的不一致。

4、问题解决

Oracle Restart是一个非常复杂的体系。在没有经验和资料的情况下,笔者也不能证明说是Oracle Bug之类的。

一种思路能够进行尝试。

对于Oracle Restart。各种组件都是在上面可插拔的。

依据须要,我们能够进行动态的配置注冊过程。从之前的情况看,数据库本身是没有问题的,应该就是配置过程中的故障。那么,modify配置是有问题的。可不能够将database ora11g剔除出Restart体系,之后再加入过来。

Srvctl的add和remove命令能够帮助我们实现功能。

并且在add过程中,仅仅有-o參数是强制的。输入ORACLE_HOME文件夹。

[oracle@SimpleLinux dbs]$ srvctl removedatabase -d ora11g

Remove the database ora11g? (y/[n]) y

[oracle@SimpleLinux dbs]$
srvctl add database -d ora11g -o/u01/app/oracle/product/11.2.0/db_1

[oracle@SimpleLinux dbs]$ srvctl configdatabase -d ora11g

Database unique name: ora11g

Database name:

Oracle home: /u01/app/oracle/product/11.2.0/db_1

Oracle user: oracle

Spfile:

Domain:

Start options: open

Stop options: immediate

Database role: PRIMARY

Management policy: AUTOMATIC

Database instance: ora11g

Disk Groups:

Services:

Spfile为空。试着又一次启动。

[oracle@SimpleLinux dbs]$ srvctl start database -d ora11g

[oracle@SimpleLinux dbs]$ ps -ef | greppmon

grid     3215     1  0 14:47 ?

00:00:00 asm_pmon_+ASM

oracle    5265    1  0 15:22 ?        00:00:00 ora_pmon_ora11g

oracle   5386  3578  0 15:22 pts/0    00:00:00 grep pmon

[oracle@SimpleLinux dbs]$ srvctl configdatabase -d ora11g

Database unique name: ora11g

Database name:

Oracle home:/u01/app/oracle/product/11.2.0/db_1

Oracle user: oracle

Spfile:

Domain:

Start options: open

Stop options: immediate

Database role: PRIMARY

Management policy: AUTOMATIC

Database instance: ora11g

Disk Groups: DATA,RECO

Services:

启动成功。最后尝试看看reboot系统时。是否能自己主动启动。

--又一次启动系统

[root@SimpleLinux simplelinux]# ps -ef | grep pmon

grid      3213     1  015:27 ?        00:00:00 asm_pmon_+ASM

oracle    3270     1  015:27 ?        00:00:00 ora_pmon_ora11g

root      3336  3042  015:27 pts/0    00:00:00 grep pmon

[grid@SimpleLinux ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 17-OCT-2013 15:32:07

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

STATUS of the LISTENER

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

Alias                     LISTENER

Version                   TNSLSNRfor Linux: Version 11.2.0.3.0 - Production

Start Date               17-OCT-2013 15:27:06

Uptime                    0 days 0hr. 5 min. 0 sec

Trace Level               off

Security                  ON: LocalOS Authentication

SNMP                      OFF

Listener Parameter File  /u01/app/grid/product/11.2.0/grid/network/admin/listener.ora

Listener Log File        /u01/app/grid/diag/tnslsnr/SimpleLinux/listener/alert/log.xml

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=SimpleLinux.localdomain)(PORT=1521)))

Services Summary...

Service "+ASM" has 1 instance(s).

Instance "+ASM", statusREADY, has 1 handler(s) for this service...

Service "ora11g" has 1 instance(s).

Instance"ora11g", status READY, has 1 handler(s) for this service...

Service "ora11gXDB" has 1 instance(s).

Instance "ora11g",status READY, has 1 handler(s) for this service...

The command completed successfully

SQL> show parameter spfile

NAME                                 TYPE        VALUE

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

spfile                              string     /u01/app/oracle/product/11.2.0/db_1/dbs/spfileora11g.ora

问题解决。

5、结论和反思

从直观的感觉看,这应该是Restart和原有命令协调的一个故障。

原有create pfile之后,Restart似乎不可以支持pfile的启动了。另外。在修复过程中,我们始终看到不能对spfile改动參数生效。也是一个疑惑点。

可以肯定的是。在加入数据库ora11g的时候。没有明白指定启动spfile的位置,那么应该是进入了自己主动检索文件夹spfile-pfile的过程。

所以系统得到修复。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

分析RAC下一个SPFILE整合的三篇文章的文件更改的更多相关文章

  1. 三篇文章了解 TiDB 技术内幕——说计算

    在这我们将关系模型简单理解为 Table 和 SQL 语句,那么问题变为如何在 KV 结构上保存 Table 以及如何在 KV 结构上运行 SQL 语句. 假设我们有这样一个表的定义: CREATE ...

  2. 三篇文章带你极速入门php(三)之php原生实现登陆注册

    看下成果 ps:纯天然h5,绝不添加任何添加剂(css)以及化学成分(js)(<( ̄ ﹌  ̄)我就是喜欢纯天然,不接受任何反驳) 关于本文 用原生的php和html做了一个登陆注册,大概是可以窥 ...

  3. 三篇文章了解 TiDB 技术内幕 —— 谈调度

    任何一个复杂的系统,用户感知到的都只是冰山一角,数据库也不例外. 前两篇文章介绍了 TiKV.TiDB 的基本概念以及一些核心功能的实现原理,这两个组件一个负责 KV 存储,一个负责 SQL 引擎,都 ...

  4. 三篇文章了解 TiDB 技术内幕 - 说存储(转)

    引言 数据库.操作系统和编译器并称为三大系统,可以说是整个计算机软件的基石.其中数据库更靠近应用层,是很多业务的支撑.这一领域经过了几十年的发展,不断的有新的进展. 很多人用过数据库,但是很少有人实现 ...

  5. TIDB4 —— 三篇文章了解 TiDB 技术内幕 - 谈调度

    原文地址:https://pingcap.com/blog-cn/tidb-internal-3/ 为什么要进行调度 先回忆一下第一篇文章提到的一些信息,TiKV 集群是 TiDB 数据库的分布式 K ...

  6. jq最新前三篇文章高亮显示

    /*---------最新前三篇文章高亮显示-------------*/ function latest(){ var color_arr=new Array( "blue", ...

  7. rac下一个/tmp/bootstrap权限问题

    原创作品,离 "深蓝blog" 博客,欢迎转载,请务必注明转载如下源,否则追究其版权责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/ar ...

  8. TIDB3 —— 三篇文章了解 TiDB 技术内幕 - 说计算

    原文地址:https://pingcap.com/blog-cn/tidb-internal-2/ 关系模型到 Key-Value 模型的映射 在这我们将关系模型简单理解为 Table 和 SQL 语 ...

  9. 阅读了这三篇文章,你也就基本理解了ASP.NET Core MVC框架的工作原理

    <200行代码,7个对象--让你了解ASP.NET Core框架的本质>让很多读者对ASP.NET Core管道有深刻的理解,知道了ASP.NET Core框架针对每个请求的处理流程.在过 ...

随机推荐

  1. Struts的ONGL

    1.什么是OGNL OGNL它是Object Graphic Navigation Language(对象图导航语言)缩写,    它是一个开源项目. Struts2框架使用OGNL作为默认的表达式语 ...

  2. iOS8推送消息的回复处理速度

    iOS8我们有一个新的通知中心,我们有一个新的通报机制.当在屏幕的顶部仅需要接收一个推拉向下,你可以看到高速接口,天赋并不需要输入应用程序的操作.锁定屏幕,用于高速处理可以推动项目. 推送信息,再次提 ...

  3. oracle存储过程的例子

    oracle存储过程的例子 分类: 数据(仓)库及处理 2010-05-03 17:15 1055人阅读 评论(2)收藏 举报 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的 ...

  4. 浅谈http请求数据分析

    前段时间,我一个朋友给我打了个电话.说是现在在搞网络销售,问我能不能帮他整个自动发帖机.说实在的,以前没有弄过这块,我就跟他讲我试试看吧,能不能成不能保证.毕竟是搞程序的嘛,自学的能力还是有滴.经过一 ...

  5. NAT( 网络地址转换) 实现

    NAT基本介绍: 网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术.是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型 ...

  6. Web API Test Client 1.2.0

    使用方法 1 安装 matthewcv.WebApiTestClient 到你的Web API 项目 PM> Install-Package matthewcv.WebApiTestClient ...

  7. linux进程通信之共享内存

    共享内存同意两个或多个进程共享一给定的存储区,由于数据不须要来回复制,所以是最快的一种进程间通信机制.共享内存能够通过mmap()映射普通文件(特殊情况下还能够採用匿名映射)机制实现,也能够通过系统V ...

  8. 迅雷云加速开放平台c#demo

    迅雷云加速开放平台c#demo.很多人很遇到下载文件的问题.这个例子是调用迅雷云加速开放平台的dll,进行下载,速度很快,下载过程中可以获取到很全的下载信息,比如下载速度,进度,完成状态等. 例子中带 ...

  9. scrot-0.8

    相关库下载地址:         www.sunfreeware.com/programlistsparc10.html tar -zxvf scrot-0.8.tar.gzcd scrot-0.8. ...

  10. 写hive sql和shell脚本时遇到几个蛋疼的问题!

    错误一: Hive的where后不能用字段的别名, 错误二: hive的groupby中不能用自己定义函数,否则报错(用嵌套select取代) 错误三: 运行:$ ./hive_game_operat ...