本篇主要介绍笔者遇到的一个数据库启动加载过程中出现的问题。同官方MOS推荐的策略相比,有一些不同之处。记录下来,留待需要的朋友待查使用。
1、问题说明
笔者环境是Oracle 单实例+Grid Infrastructure,版本号为11.2.0.4。由于安全原因,从MOS上下载了最新的安全补丁和升级补丁。升级之后的版本为11.2.0.4.6。
但是,在升级最后步骤——执行SQL脚本环节,出现了一些问题。
SQL*Plus: Release 11.2.0.4.0 Production on Mon May 25 16:08:57 2015
Copyright (c) 1982, 2013, Oracle.? All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 2087780352 bytes
Fixed Size? ? ? ? ? ? ? ? ? 2254824 bytes
Variable Size? ? ? ? ? ? 553650200 bytes
Database Buffers? ? ? ? 1526726656 bytes
Redo Buffers? ? ? ? ? ? ? ? 5148672 bytes
ORA-00205: error in identifying control file, check alert log for more info
从提示信息角度看,Oracle在经历启动nomount阶段之后,在定位control file的过程中出现了问题。
老实说,虽然是测试环境,但是笔者还是比较惊慌的。于是尝试使用srvctl集群件启动策略。
[grid@NCR-Standby-Asm ~]$ srvctl start database -d sicsstb
PRCC-1014 : sicsstb was already running
PRCR-1004 : Resource ora.sicsstb.db is already running
PRCR-1079 : Failed to start resource ora.sicsstb.db
CRS-5702: Resource 'ora.sicsstb.db' is already running on 'ncr-standby-asm'
2、问题分析
首先确认系统是否可以使用srvctl启动,判断一下GI上面各种资源resource状态。
[grid@NCR-Standby-Asm ~]$ srvctl stop database -d sicsstb
[grid@NCR-Standby-Asm ~]$ srvctl status asm
ASM is running on ncr-standby-asm
[grid@NCR-Standby-Asm ~]$ crsctl stat res -t -init
--------------------------------------------------------------------------------
NAME? ? ? ? ? TARGET? STATE? ? ? ? SERVER? ? ? ? ? ? ? ? ? STATE_DETAILS? ? ? ?
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
? ? ? ? ? ? ? ONLINE? ONLINE? ? ? ncr-standby-asm? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
ora.LISTENER.lsnr
? ? ? ? ? ? ? ONLINE? ONLINE? ? ? ncr-standby-asm? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
ora.RECO.dg
? ? ? ? ? ? ? ONLINE? ONLINE? ? ? ncr-standby-asm? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
ora.asm
? ? ? ? ? ? ? ONLINE? ONLINE? ? ? ncr-standby-asm? ? ? ? ? Started? ? ? ? ? ? ?
ora.ons
? ? ? ? ? ? ? OFFLINE OFFLINE? ? ? ncr-standby-asm? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
? ? ? 1? ? ? ? ONLINE? ONLINE? ? ? ncr-standby-asm? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
ora.diskmon
? ? ? 1? ? ? ? OFFLINE OFFLINE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
ora.evmd
? ? ? 1? ? ? ? ONLINE? ONLINE? ? ? ncr-standby-asm? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
ora.sicsstb.db
? ? ? 1? ? ? ? OFFLINE OFFLINE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Instance Shutdown? ?
[grid@NCR-Standby-Asm ~]$ srvctl start database -d sicsstb
[grid@NCR-Standby-Asm ~]$?
[oracle@NCR-Standby-Asm ~]$ cd $ORACLE_HOME/rdbms/admin
[oracle@NCR-Standby-Asm admin]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Mon May 25 16:14:00 2015
Copyright (c) 1982, 2013, Oracle.? All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
笔者猜测,这个故障和ASM相关。按照逐步抽丝剥茧的思路,先从数据库日志入手(找到失败启动的那次动作)。
Mon May 25 16:09:28 2015
MMON started with pid=17, OS id=4151?
Mon May 25 16:09:28 2015
MMNL started with pid=18, OS id=4153?
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
starting up 1 shared server(s) ...
NOTE: initiating MARK startup?
Starting background process MARK
ORACLE_BASE from environment = /u02/app/oracle
Mon May 25 16:09:28 2015
MARK start