Friday, March 06, 2009

srvctl start service; PRKP-1030 : Failed to start the service...ORA-44305: service ... is running


After I stoped  S01 service on node4 by srvctl command-line. It's OK .

$ srvctl stop service -d DB -s S01 -i DB4

After that, I need to start S01 service on this (node4) node (DB4)

$ srvctl start service -d DB -s S01 -i DB4
PRKP-1030 : Failed to start the service S01.
CRS-0215: Could not start resource 'ora.DB.S01.DB4.srv'

that's make me!... confused. So, I tried another idea... (try to force stop)

$ srvctl stop  service -d DB -s S01 -i DB4
PRKP-1065 : Service S01 is already stopped on instance DB4.

$ srvctl stop  service -d DB -s S01 -i DB4 -f 
PRKP-1065 : Service S01 is already stopped on instance DB4.

$ srvctl start service -d DB -s S01 -i DB4
PRKP-1030 : Failed to start the service S01.
CRS-0215: Could not start resource 'ora.DB.S01.DB4.srv'

that's not help me anything.

Check... Use "crs_stat"
ora.DB.S01.DB3.srv                         ONLINE     ONLINE on node03  
ora.DB.S01.DB4.srv                         ONLINE     OFFLINE on node04  
ora.DB.S01.cs                                ONLINE     ONLINE on node03  

So, I had some idea... I checked imon_DB.log file at $ORACLE_HOME/log/hostname/racg/* PATH on node, I used "srvctl start service -d DB -s S01 -i DB4"

2009-03-06 15:33:34.912: [    RACG][1273112928] [28413][1273112928][ora.DB.S01.DB4.srv]: clsrcsnstartsrv: service name S01 already exists
2009-03-06 15:33:34.913: [    RACG][1273112928] [28413][1273112928][ora.DB.S01.DB4.srv]: CLSR-0002: Oracle error encountered while executing clsrcsnstartsrv : execute2
2009-03-06 15:33:34.913: [    RACG][1273112928] [28413][1273112928][ora.DB.S01.DB4.srv]: ORA-44305: service S01 is running
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "SYS.DBMS_SERVICE", line 444
ORA-06512: at "SYS.DBMS_SERVICE", line 365

ORA-44305: service S01 is running 

What's going on?

So, I connected database on DB4 instance (node4)

$ env | grep ORACLE_SID
ORACLE_SID=DB4

$ sqlplus / as sysdba

SQL>  select instance_name from v$instance; 

INSTANCE_NAME
----------------
DB4

SQL> show parameter service_name 

NAME                                 TYPE        VALUE
------------------------- ----------- --------
service_names                        string      S01, DB

Oh, This Instance  has S01 service online

My idea used DBMS_SERVICE.STOP_SERVICE to stop service (S01) on this instance.

SQL> exec DBMS_SERVICE.STOP_SERVICE('S01','DB4');

PL/SQL procedure successfully completed.

SQL> show parameter  service_name  

NAME                                 TYPE        VALUE
------------------------- ----------- --------
service_names                        string      DB

And then use "srvctl" command to start again...
$ srvctl start service -d DB -s S01 -i DB4

Wow, It worked... no error

And then check...

Use "crs_stat"

ora.DB.S01.DB3.srv                         ONLINE     ONLINE on node03  
ora.DB.S01.DB4.srv                         ONLINE     ONLINE on node04  
ora.DB.S01.cs                                ONLINE     ONLINE on node03  

And...

$ sqlplus / as sysdba

SQL>  select instance_name from v$instance; 

INSTANCE_NAME
----------------
DB4

SQL> show parameter service_name 

NAME                                 TYPE        VALUE
------------------------- ----------- --------
service_names                        string      S01, DB

... It's OK, thanks OCP & OCE help me this idea!

Enjoy!



5 comments:

Anand said...

YOU ROCK!
I had the same problem and dbms_service.stop_service WORKED LIKE A CHARM...

THANK YOU VERY MUCH DUDE>>.

-Anand

Surachart said...

@Anand

I hope this can help.
If it' can not help.. we might check some bug about "database service" name on oracle support.

Alexandru Tica said...

I had the same problem and following the instructions from your article fixed the issue. Thanks a lot!

Anonymous said...

Same probleme reolved. Thank you very much its help a lot.

Anonymous said...

This has Helped Thanks

-Ravindra