在之前的文章《Oracle Restart启动数据库实例故障一例》(http://space.itpub.net/17203031/viewspace-774622)中,笔者解决了一个由于使用create pfile from 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" 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

2、分析和思考

一起冷静想想~

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

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

一个比较常见的问题案例是:如果我们把启动参数改错了,启动不了了,那么怎么办?标准的做法是通过create pfile from spfile,拿到一个文本格式的参数pfile。在里面修改启动参数,纠正错误。启动时候,使用startup pfile=xxx使用“指定的pfile”启动数据库实例,再通过create spfile from pfile将变化固化下来。

Oracle Restart提供的配置参数spfile其实是很诡异的。从直观上看,好像是有startup数据库实例,后面可以自己去指定参数文件,类似于startup spfile=xxx的作用。但是实际上,startup是不支持spfile这样的参数的。

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

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

网络上有一种方法,说的是如果我们需要指定一个spfile启动文件的时候,应该怎么做。答案是建立一个空的pfile文件,里面直接指定SPFILE参数的文件位置。

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

3、配置ASM上SPFILE启动

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

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

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

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  887 Sep 29 09:31 initora11g.ora.bk

-rw-r----- 1 oracle asmadmin   24 Sep 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

在里面要完成两件事情,一个是将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   41 Oct 18 10:07 initora11g.ora

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

-rw-r----- 1 oracle asmadmin   24 Sep 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 pfile from spfile创建出来的,默认的SPFILE=XXX的内容被覆盖。而Oracle Restart不能识别这种非转接内容文件,所以报错。

Oracle ASM存储Spfile解析相关推荐

  1. oracle 11gr2 单机数据库使用asm,RHEL7上安装11gR2单机使用ASM存储搭建Physical Standby笔记...

    参考文献 一.背景介绍 接到需求要安装单机使用ASM存储的数据库,原本以为是轻车熟路的事情,emm,世界上哪有那么多轻松的活给你干,废话少说,进主题吧. 二. 关于安装思路 一直以来搭建的都是RAC+ ...

  2. oracle asm 缺省用户,oracle asm自动存储使用及管理说明(下)

    接上篇:oracle asm自动存储使用及管理说明(上) 六.文件及tempate 1.数据文件命名含义 SQL> select file_name from dba_data_files; F ...

  3. 安装oracle 11g 使用ASM存储 详细

    操作系统 suse 11企业版 配置ASMlib,官方文档地址参考 http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/11g/r ...

  4. linux 存储映射lun 给_在Linux中针对物理磁盘和LUN映射Oracle ASM磁盘

    本文可帮助你查找哪个ASM磁盘映射到哪个Linux分区或DM设备. 前言 如果你作为Linux管理员长时间退出工作,你可能已经了解了ASM,Device Mapper Multipathing(DM- ...

  5. Oracle ASM 详解 收藏

    Oracle ASM 详解 ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也 ...

  6. Oracle物理存储结构--文件

    原文地址:[基础]Oracle物理存储结构--文件作者:诗意方式 1 数据文件 3.查询数据文件参数 要将数据文件置为脱机状态,可以通过下列语句实现,如将SCOTT对象的数据文件置为脱机状态: SQL ...

  7. Oracle ASM 详解

    ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也是由实例和文件组成, 也可以 ...

  8. 深入了解Oracle ASM(一):基础概念

    ASM基础概念   任何转载请注明源地址,否则追究法律责任!:http://www.askmaclean.com/archives/know-oracle-asm.html   相关文章链接: Asm ...

  9. cp oracle,Oracle ASM使用asmcmd中的cp命令来执行远程复制

    Oracle ASM使用asmcmd中的cp命令来执行远程复制 cp命令的语法如下: cp src_file [--target target_type] [--service service_nam ...

最新文章

  1. Tensorflow::Session 释放内存
  2. 英特尔在中国投资55亿美元非易失性存储项目投产
  3. G6 图可视化引擎——入门教程——绘制 Tutorial 案例
  4. 数据结构与算法 pdf_整理一个月完成的数据结构与算法PDF和测试代码免费拿
  5. 全栈深度学习第1期:如何启动一个机器学习项目?
  6. 黄章爆料魅族16s/16s Plus更多信息 无线充电已做到24W
  7. 韩顺平Java课程:第7章作业13题
  8. 数据结构(王道计算机考研笔记)
  9. matpower学习笔记
  10. 中职网络安全大赛攻防阶段加固(仅供参考!!!)
  11. 单片机:红外遥控实验(内含红外遥控介绍+硬件原理+软件编程+配置环境)
  12. iir滤波器的基本网络结构_(IIR)滤波器的基本结构-Read.ppt
  13. js 点击文本框,预览选择图片
  14. SDL应用之三种字库
  15. 记录:google map谷歌地图自定义叠加层overlay流程
  16. 23230118英语学习
  17. 良知、职业道德及其他
  18. ctf从零到入门0x04:(转载)ctf中最全的(脑洞大开的加密方法)
  19. HiBench算法简介
  20. python中for无限循环_关于循环:在Python中从1循环到无穷大

热门文章

  1. mtk平台android编译命令,MTK 常见的编译命令
  2. 脱胎于沃尔沃的Polestar 2浮出水面,它真能挑战Model 3吗?
  3. python语言设计二级教程答案2019_全国计算机等级考试二级教程2019年版——Python语言程序设计参考答案...
  4. 宏基台式计算机编号,ACER如何查询型号名称序列号SNID?
  5. 推荐系统基础03:矩阵分解与FM
  6. sundayplayer第一版本开放源代码
  7. 【眼见为实】数据库并发问题 封锁协议 隔离级别
  8. Cookie,sessionstorage,localstorage,Token ,JWT,session的区别
  9. fastDfs+tracker+nginx在Centos7上配置文件服务器
  10. 数据采集时总提示未登录_做电商必须学会这一招!教你用爬虫工具免费采集网易考拉商品数据...