Wrong Dependency Caused Failure of Database Startup on 11.2 (文档 ID 1481896.1)
适用范围
Oracle Database - EnterpriseEdition - Version 11.2.0.1 and later
Information in this documentapplies to any platform.
适用11.2.0.1之后的企业版的所有平台
症状
将数据库的数据迁移到新的磁盘组,迁移完成后数据库打不开。
改变
数据库的数据文件移动到新的asm磁盘组,旧的磁盘组被破坏。
产生原因
从视图中验证所有数据文件都已经迁移到新的磁盘组,但是数据库的资源概要文件
仍然保留着数据库旧的磁盘组的依赖关系,当完成迁移后打开数据库,会等待这些旧的磁盘组挂载。
From the output of belowcommand,
crsctl stat res ora.acmdmp.db-p
NAME=ora.acmdmp.db
TYPE=ora.database.type
ACL=owner:oracle:rwx,pgrp:dba:rwx,other::r--
ACTION_FAILURE_TEMPLATE=
ACTION_SCRIPT=
ACTIVE_PLACEMENT=1
AGENT_FILENAME=%CRS_HOME%/bin/oraagent%CRS_EXE_SUFFIX%
AUTO_START=restore
CARDINALITY=3
CHECK_INTERVAL=1
CHECK_TIMEOUT=600
CLUSTER_DATABASE=true
DB_UNIQUE_NAME=acmdmp
DEFAULT_TEMPLATE=PROPERTY(RESOURCE_CLASS=database)PROPERTY(DB_UNIQUE_NAME= CONCAT(PARSE(%NAME%, ., 2), %USR_ORA_DOMAIN%, .))ELEMENT(INSTANCE_NAME= %GEN_USR_ORA_INST_NAME%)
DEGREE=1
DESCRIPTION=Oracle Databaseresource
ENABLED=1
FAILOVER_DELAY=0
FAILURE_INTERVAL=60
FAILURE_THRESHOLD=1
GEN_AUDIT_FILE_DEST=/u01/app/oracle/admin/acmdmp/adump
GEN_USR_ORA_INST_NAME=
GEN_USR_ORA_INST_NAME@SERVERNAME(plxdacdm301)=acmdmp1
GEN_USR_ORA_INST_NAME@SERVERNAME(plxdacdm302)=acmdmp2
GEN_USR_ORA_INST_NAME@SERVERNAME(plxdacdm303)=acmdmp3
HOSTING_MEMBERS=
INSTANCE_FAILOVER=0
LOAD=1
LOGGING_LEVEL=1
MANAGEMENT_POLICY=AUTOMATIC
NLS_LANG=
NOT_RESTARTING_TEMPLATE=
OFFLINE_CHECK_INTERVAL=0
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
PLACEMENT=restricted
PROFILE_CHANGE_TEMPLATE=
RESTART_ATTEMPTS=2
ROLE=PRIMARY
SCRIPT_TIMEOUT=60
SERVER_POOLS=ora.acmdmp
SPFILE=+DATA_MART/acmdmp/spfileacmdmp.ora
START_DEPENDENCIES=hard(ora.DATA_MART.dg,ora.FLASH_MART.dg,ora.DATA.dg,ora.FLASH.dg)weak(type:ora.listener.type,global:type:ora.scan_listener.type,uniform:ora.ons,uniform:ora.eons)pullup(ora.DATA_MART.dg,ora.FLASH_MART.dg)
START_TIMEOUT=600
STATE_CHANGE_TEMPLATE=
STOP_DEPENDENCIES=hard(intermediate:ora.asm,shutdown:ora.DATA_MART.dg,shutdown:ora.FLASH_MART.dg,shutdown:ora.DATA.dg,shutdown:ora.FLASH.dg)
STOP_TIMEOUT=600
UPTIME_THRESHOLD=1h
USR_ORA_DB_NAME=acmdmp
Where OLD diskgroups wereDATA and FLASH
and New diskgroup wereDATA_MART and FLASH_MART
解决方案
1. Remove the dependency fromdatabase resource and remove those old diskgroup resource from this clusterusing crsctl command,
移走它们的依赖关系
crsctl modify resourceora.acmdmp.db -attr "hard(ora.DATA_MART.dg,ora.FLASH_MART.dg)weak(type:ora.listener.type,global:type:ora.scan_listener.type,uniform:ora.ons,uniform:ora.eons)pullup(ora.DATA_MART.dg,ora.FLASH_MART.dg) "
crsctl modify resourceora.acmdmp.db -attr "STOP_DEPENDENCIES=hard(intermediate:ora.asm,shutdown:ora.DATA_MART.dg,shutdown:ora.FLASH_MART.dg)"
Then remove those resources
移走这两个磁盘组
srvctl remove diskgroup -gdata
srvctl remove diskgroup -gfra
2. Then open the databaseusing sqlplus/srvctl .
重新打开数据库