CRS: Resource in UNKNOWN state and srvctl Cannot Start/Stop Resource_845709.1

rongshiyuan發表於2014-12-19

CRS: Resource in UNKNOWN state and srvctl Cannot Start/Stop the Resource (Doc ID 845709.1)


In this Document

Goal
Solution
  Community Discussions

References

Applies to:

Oracle Database - Enterprise Edition - Version 10.2.0.1 to 11.1.0.7 [Release 10.2 to 11.1]
Information in this document applies to any platform.

Goal

A resource status is showing as UNKNOWN in crs_stat -t output :

$ crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora....d1.inst application    ONLINE    UNKNOWN              <<< ora....d2.inst application    ONLINE    ONLINE    stella2
ora.prod.db    application    ONLINE    ONLINE    stella2
ora....od1.srv application    OFFLINE   OFFLINE

...


When the resource state is UNKNOWN, srvctl cannot start or stop the resource.  It fails with the following errors:

$ srvctl start instance -d prod-i prod1
PRKP-1001 : Error starting instance prod1 on node oradb1
CRS-1028: Dependency analysis failed because of:
CRS-0223: Resource 'ora.prod.prod1.inst' has placement error.


After the failed srvctl command, the crsd.log will show an error:

Human intervention required to resume its availability.


Even running srvctl status on the resource can error:

$ srvctl status database -d prod
PRKO-2015 : Error in checking condition of instance on node: oradb1
PRKO-2015 : Error in checking condition of instance on node: oradb2


These errors are all due to the resource state of UNKNOWN.

Solution

The UNKNOWN state can often be resolved by bringing the resource offline using crs_stop.

Note: crs_stop and crs_start are NOT supported for use on ora.* resources, unless you are explicitly instructed to use them by an Oracle support analyst, or following this note's steps EXACTLY. 

Improper use of crs_stop and crs_start can corrupt your OCR.


Any CRS resource can be in an UNKNOWN state, including vip, gsd, database, or instances.  The following uses an instance resource as an example.

1. Find the proper name for your instance resource.  To find it, do "crs_stat -u | grep inst", this will give the names of all instance resources in the OCR.

$ crs_stat -u | grep inst
NAME=ora.V102.V1021.inst
NAME=ora.V102.V1022.inst
NAME=ora.prod.prod1.inst
NAME=ora.prod.prod2.inst


Pick the instance associated with the node and database in question.
For example, for a database named prod and instance named prod1, the resource name will be "ora.prod.prod1.inst".


2.  Before you go any further, make sure that you have a recent backup of your OCR.
You can check on your OCR automatic backups with the command "ocrconfig -showbackup":

$ ocrconfig -showbackup

oradb1 2009/06/19 07:35:28 /u01/app/oracle/product/10gR2/crs/cdata/temp

oradb1 2009/06/19 03:35:26 /u01/app/oracle/product/10gR2/crs/cdata/temp

oradb1 2009/06/18 23:35:25 /u01/app/oracle/product/10gR2/crs/cdata/temp

oradb1 2009/06/18 03:35:20 /u01/app/oracle/product/10gR2/crs/cdata/temp

oradb1 2009/06/02 07:01:26 /u01/app/oracle/product/10gR2/crs/cdata/temp


If no backup exists, then create one using ocrconfig -export, following the instructions in the documentation:

Oracle??? Database Oracle Clusterware and Oracle Real Application Clusters Administration and Deployment Guide - 10g Release 2 (10.2)


3. Restore the instance resource to OFFLINE with this command:

crs_stop [instance resource name]

eg:

$ crs_stop ora.prod.prod1.inst


Note: if the instance is online then this command will stop it.



4. Check that instance status is now OFFLINE instead of UNKNOWN

$ crs_stat -u ora.prod.prod1.inst
NAME=ora.prod.prod1.inst
TYPE=application
TARGET=OFFLINE
STATE=OFFLINE



5. If the instance status is OFFLINE, then you can try again to start it with srvctl.

6. If the startup fails again, then open a SR and provide Oracle Support with the following information:

a) Gather a trace by using the following script:

script /tmp/trace1.out
env
crs_stat -u ora.prod.prod1.inst
crs_stop ora.prod.prod1.inst
crs_stat -u ora.prod.prod1.inst
export SRVM_TRACE=TRUE
srvctl start instance -d prod -i prod1
export SRVM_TRACE=
crs_stat -u ora.prod.prod1.inst
exit


(Replace "ora.prod.prod1.inst" with the name of your actual instance resource; replace prod with the name of your database and prod1 with the name of your instance).

The trace log will be found in /tmp/trace1.out.

b) latest crsd.log from this node

c) the resource log for this instance from $CRS_HOME/log/<>/racg

d) ls -l of $ORACLE_HOME/log/<>/racg

Community Discussions

Still have questions? Use the communities window below to search for similar discussions or start a new discussion on this subject.

Note: Window is the LIVE community not a screenshot.

Click here to open in main browser window


References

NOTE:1469600.1 - CRS-2503: Resource 'ora.' is in UNKNOWN state and must be stopped first
 

Document Details

 
Rate this document Email link to this documentOpen document in new windowPrintable Page
Type:
Status:
Last Major Update:
Last Update:
HOWTO
PUBLISHED
Jun 26, 2014
Jun 26, 2014
     
 

Related Products

 
Oracle Database - Enterprise Edition
     
 

Document References

 
     
 

Recently Viewed

 
     

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17252115/viewspace-1372906/,如需轉載,請註明出處,否則將追究法律責任。

相關文章