The -f option of srvctl would failover the running services to another instance, before shutting down the instance.
Usage: srvctl stop instance -d <db_unique_name> {-n <node_name> | -i <inst_name_list>} [-o <stop_options>] [-f]
-d <db_unique_name> Unique name for the database
-n <node_name> Node name
-i "<inst,...>" Comma separated instance names
-o <stop_options> Options to shutdown command (e.g. NORMAL,TRANSACTIONAL, IMMEDIATE, or ABORT)
-f This option fails the running services over to another instance. <<<<
-h Print usage
Example:
$ srvctl status database -d <DBNAME>
Instance v11202_2 is running on node <hostname1>
Instance v11202_1 is running on node <hostname2>
$ srvctl status service -d <DBNAME>
Service v11202_svc is running on nodes: <hostname2>
---------------不加-f 停不了
srvctl add service -d cdb -s pdb_srv -pdb pdb -preferred cdb1 -available cdb2 这样建的话并不会切换
[oracle@rac1 ~]$ srvctl stop instance -d cdb -n rac1
PRCD-1131 : Failed to stop database cdb and its services on nodes rac1
PRCR-1133 : Failed to stop database cdb and its running services
PRCR-1132 : Failed to stop resources using a filter
CRS-2974: unable to act on resource 'ora.cdb.db' on server 'rac1' because that would require stopping or relocating resource 'ora.cdb.pdb_srv.svc' but the appropriate force flag was not specified
[oracle@rac1 ~]$ srvctl stop instance -d cdb -n rac1 -f
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
--------------
$ srvctl stop instance -d <DBNAME> -i v11202_1 -f
<< after shutdown >>
$ srvctl status database -d <DBNAME>
Instance v11202_2 is running on node <hostname1>
Instance v11202_1 is not running on node <hostname2>
$ srvctl status service -d <DBNAME>
Service v11202_svc is running on nodes: <hostname1>
GOAL
NOTE: In the images, examples and document that follow, user details, cluster names, hostnames, directory paths, filenames, etc. represent a fictitious sample (and are used to provide an illustrative example only). Any similarity to actual persons, or entities, living or dead, is purely coincidental and not intended in any manner.
Sometimes user might want to start some of the pdbs in only one node for the following concern:
1. User wants to reduce the load by not open the pdbs on both nodes.
2. User wants some of the pdbs be activated on other nodes if the node they are running crashed.
SOLUTION
User can create service for a particular pdb, let it run at preferred cdb instance, and let it to be able to failover to available cdb instance.
For example, there is one RAC system with two nodes: at node#1 , cdb db instance is orcl1, at node#2, cdb db instance is orcl2. There is pluggable database pdb1 at the cdb.
User can create a service for this pdb, to let it run(open) at orcl1 instance, but not run (mount) at orcl2 instance:
$ srvctl add service -d orcl -s pdbtest -pdb pdb1 -preferred orcl1 -available orcl2
Here, the service name is pdbtest, and if this service started, then pdb1 will be opened only at orcl1 , if the orcl1 cdb instance crashed, then the service will failover to another node, in another word, this pdb1 will be opened at cdb instance orcl2 at another node.
Start Service
The following is the command to start this service:
$ srvctl start service -db orcl -service pdbtest
When client application access the service via SCAN listener, then the connect request will be directed only to the preferred node.
The pdb can be opened by the starting of the service:
Before service starting:
At node#1:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
At node#2:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
After service starting:
At node#1:
$ srvctl start service -d orcl -s pdbtest
At node#1:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO <-------- Changed
SQL>
At node#2:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED <-------- Not changed
SQL>
Service Failover
There are two types of failover: planned failover , unplanned failover.
Planned failover
If user want to make a planned failover (relocate), then a relocate operation can be done as the follows:
$ srvctl relocate service -db orcl -service pdbtest -oldinst orcl1 -newinst orcl2
This will failover the pdb service pdbtest from orcl1 cdb instance on node#1 to orcl2 cdb instance on node#2.
The test result is as following:
At node#1:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
SQL>
At node#2:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
SQL>
At node#1:
$ srvctl relocate service -db orcl -service pdbtest -oldinst orcl1 -newinst orcl2
At node#1:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO <==== still alive
SQL>
At node#2:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO <---- Changed
SQL>
The fact that the relocate operation does not close the pdb at the original node, is expected behavior.----带起了第二个 不关闭第一个,如果不做relocate 整个srv就关闭了。 必须要先relocate
If user wants the the pdb at node#1 to be closed, user need to stop the pdb on node#1 manually, eg: execute "alter pluggable database pdb1 close" on node#1.
After the relocate operation, we can see that the service shift to the other node(available node):
Service status before relocate:
$ crsctl stat res -t
ora.orcl.pdbtest.svc
1 ONLINE ONLINE node1 STABLE
Service status after relocate:
$ crsctl stat res -t
ora.orcl.pdbtest.svc
1 ONLINE ONLINE node2 <<<< STABLE
Now, when client application access the service via SCAN listener, then the connect request will be directed only to the available instance (here it is orcl2). --orcl1反正也没有service呀
Unplanned Failover
If the node on which this pdb is running on crashes, then the service will failover to other node (available node), and the pdb will also be opened on this available node. We can simulate this by killing PMON process to see the effect:
At Node#1:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
At Node#2:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
SQL>
At Node#1:
$ crsctl stat res -t
ora.orcl.pdbtest.svc
1 ONLINE ONLINE node1 STABLE
At Node#1:
# ps -ef | grep pmon
oracle 1269214 1 0 00:43 ? 00:00:00 ora_pmon_orcl1
# kill -9 1269214 <---- killing the pmon process to make orcl1 instance crash
At Node#2:
$ crsctl stat res -t
ora.orcl.pdbtest.svc
1 ONLINE ONLINE node2 <<< STABLE <---- service shifted to node#2
At Node#2:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO <-------- failover occurred
SQL>
After a while, let us check node#1 :
At Node#1:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED <=== CDB restarted by cluster, but pdb not opened.
SQL>
Please note, that each of the following operation, is regarded as planned shutdown, so failover of the service / pdb will not occur.
SQL>alter pluggable database pdb close abort;
$ srvctl stop instance -d orcl -i orcl1 -f
But user can use "srvctl stop instance -d orcl -i orcl1 -force -failover" to make the service failover to the available node.
[oracle@rac1 ~]$ srvctl start service -d cdb
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 10181 9482 0 02:22 pts/0 00:00:00 grep --color=auto pmon
oracle 25763 1 0 02:06 ? 00:00:00 ora_pmon_cdb1
[oracle@rac1 ~]$ kill -9 25763
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb2
[oracle@rac1 ~]$ srvctl stop service -d cdb
[oracle@rac1 ~]$ s
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Feb 4 02:22:59 2024
Version 19.20.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.20.0.0.0
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE YES
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.20.0.0.0
[oracle@rac1 ~]$ srvctl start service -d cdb
PRCR-1120 : Resources are already running.
CRS-5702: Resource 'ora.cdb.pdb_srv.svc' is already running on 'rac1'
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 10519 1 0 02:22 ? 00:00:00 ora_pmon_cdb1
oracle 12069 9482 0 02:24 pts/0 00:00:00 grep --color=auto pmon
[oracle@rac1 ~]$ kill -9 10519
-----------node2 自动READ WRITE
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
SQL> alter pluggable database pdb close abort;
Pluggable database altered.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
SQL>
------------------node2 上测试
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.20.0.0.0
[oracle@rac2 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb2
[oracle@rac2 ~]$ ps -ef|grep pmon
oracle 6356 1 0 02:16 ? 00:00:00 ora_pmon_cdb2
grid 7131 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM2
oracle 19028 14218 0 02:29 pts/0 00:00:00 grep --color=auto pmon
[oracle@rac2 ~]$ kill -9 6356
[oracle@rac2 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac2 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac2 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac2 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac2 ~]$
------node1 自动起来了
[oracle@rac1 ~]$ s
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Feb 4 02:28:07 2024
Version 19.20.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.20.0.0.0
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE YES
SQL> alter pluggable database pdb close abort;
Pluggable database altered.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB MOUNTED
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
SQL>
------------------PDB飞来飞去除非在mount到read write的时候报错,不需要重新连接-------------------
----------------- CDB开启时 srv切换另一个CDB上也是不需要重新连接--------------------------------------
----------------- CDB关闭时 等待CDB自动重启过程中 srv 重启后连接要重连了,可能和超时有关---
--------------------------------上面是PDB 的情况, 下面是CDB关闭的情况
-------------------------------CDB关闭的话SRV 不会切换!!!
---------------node 2 关闭不会切换
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is running on node rac1
Instance cdb2 is not running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 8893 1 0 01:25 ? 00:00:00 ora_pmon_cdb1
oracle 9908 9482 0 01:26 pts/0 00:00:00 grep --color=auto pmon
[oracle@rac1 ~]$ kill -9 8893
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is not running on node rac1
Instance cdb2 is not running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is running on node rac1
Instance cdb2 is not running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1 自动启动后回到原来状态
---------------node 2 开启会切换
[oracle@rac1 ~]$ srvctl start instance -d cdb -i cdb2
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is running on node rac1
Instance cdb2 is running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 10077 1 0 01:26 ? 00:00:00 ora_pmon_cdb1
oracle 12371 9482 0 01:29 pts/0 00:00:00 grep --color=auto pmon
[oracle@rac1 ~]$ kill -9 10077
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb2
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb2----保持不变,需要重启或者relocate
[oracle@rac1 ~]$ srvctl stop service -d cdb
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl start service -d cdb
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
-------------------重复
[oracle@rac1 ~]$ srvctl stop instance -d cdb -i cdb2 -o abort
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is running on node rac1
Instance cdb2 is not running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 13057 1 0 01:30 ? 00:00:00 ora_pmon_cdb1
oracle 14961 9482 0 01:31 pts/0 00:00:00 grep --color=auto pmon
[oracle@rac1 ~]$ kill -9 13057
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is not running on node rac1
Instance cdb2 is not running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is running on node rac1
Instance cdb2 is not running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ srvctl start instance -d cdb -i cdb2
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is running on node rac1
Instance cdb2 is running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 15298 1 0 01:31 ? 00:00:00 ora_pmon_cdb1
oracle 17093 9482 0 01:33 pts/0 00:00:00 grep --color=auto pmon
[oracle@rac1 ~]$ kill -9 15298
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb2
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is not running on node rac1
Instance cdb2 is running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is running on node rac1
Instance cdb2 is running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb2
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb2
[oracle@rac1 ~]$
----------------------服务不在,kill pmon后 这次node1 等很久才重启
Service pdb_srv is running on instance(s) cdb2
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is running on node rac1
Instance cdb2 is running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 17272 1 0 01:33 ? 00:00:00 ora_pmon_cdb1
oracle 29639 9482 0 01:44 pts/0 00:00:00 grep --color=auto pmon
[oracle@rac1 ~]$ kill -9 17272
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 29822 9482 0 01:44 pts/0 00:00:00 grep --color=auto pmon
。
。
。
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 30113 9482 0 01:45 pts/0 00:00:00 grep --color=auto pmon
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is not running on node rac1
Instance cdb2 is running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$
Instance cdb1 is not running on node rac1
Instance cdb2 is running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ srvctl start service -d cdb -----服务不能再次启动来带动node1,
PRCR-1120 : Resources are already running.
CRS-5702: Resource 'ora.cdb.pdb_srv.svc' is already running on 'rac2'
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is not running on node rac1--------------一直都不再重启了,10分钟后才由GRID启动
Instance cdb2 is running on node rac2
Instance cdb3 is running on node rac3
===========================================================
2024-02-03 12:44:40.822000 -05:00
License high water mark = 8
USER(prelim) (ospid: 29711): terminating the instance
2024-02-03 12:44:41.893000 -05:00
Instance terminated by USER(prelim), pid = 29711
2024-02-03 12:57:38.889000 -05:00
Starting ORACLE instance (normal) (OS id: 5012)
****************************************************
Sys-V shared memory will be used for creating SGA
****************************************************
**********************************************************************
Dump of system resources acquired for SHARED GLOBAL AREA (SGA)
Domain name: system.slice/ohasd.service
Per process system memlock (soft) limit = UNLIMITED
Expected per process system memlock (soft) limit to lock
instance MAX SHARED GLOBAL AREA (SGA) into memory: 2274M
Available system pagesizes:
4K, 2048K
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is running on node rac1
Instance cdb2 is running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$
------------------ instance 重启 -f后也不会自动切换服务的---------------
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is running on node rac1
Instance cdb2 is running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb2
[oracle@rac1 ~]$ srvctl stop service -d cdb
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl start service -d cdb
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ srvctl stop service -d cdb
[oracle@rac1 ~]$ srvctl start service -d cdb
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac2 ~]$ srvctl start service -d cdb-------------在2机上重启服务也是node1上启动服务oracle@rac2 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac2 ~]$
[oracle@rac1 ~]$ srvctl stop instance -d cdb -i cdb1 -o abort
PRCD-1131 : Failed to stop database cdb and its services on nodes rac1
PRCR-1133 : Failed to stop database cdb and its running services
PRCR-1132 : Failed to stop resources using a filter
CRS-2974: unable to act on resource 'ora.cdb.db' on server 'rac1' because that would require stopping or relocating resource 'ora.cdb.pdb_srv.svc' but the appropriate force flag was not specified
[oracle@rac1 ~]$ srvctl stop instance -d cdb -i cdb1 -o abort -f
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ srvctl relocate service -db cdb -service pdb_srv -oldinst cdb1 -newinst cdb2
[oracle@rac1 ~]$ srvctl stop instance -d cdb -i cdb2 -o abort
PRCD-1131 : Failed to stop database cdb and its services on nodes rac2
PRCR-1133 : Failed to stop database cdb and its running services
PRCR-1132 : Failed to stop resources using a filter
CRS-2974: unable to act on resource 'ora.cdb.db' on server 'rac2' because that would require stopping or relocating resource 'ora.cdb.pdb_srv.svc' but the appropriate force flag was not specified
[oracle@rac1 ~]$ srvctl stop instance -d cdb -i cdb2 -o abort -f
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
-----------------kill -9 导致service 切换,即使node2时关闭的,但是其后会切回来---
--------------------------1 正常切换后再自动切回
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb2
[oracle@rac1 ~]$ srvctl stop service -d cdb
[oracle@rac1 ~]$ srvctl start service -d cdb
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
---
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is running on node rac1
Instance cdb2 is running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 12272 1 0 02:24 ? 00:00:00 ora_pmon_cdb1
oracle 19120 9482 0 02:34 pts/0 00:00:00 grep --color=auto pmon
[oracle@rac1 ~]$ kill -9 12272
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 19374 9482 0 02:34 pts/0 00:00:00 grep --color=auto pmon
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is not running on node rac1
Instance cdb2 is running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb2
---------------
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 19642 9482 0 02:35 pts/0 00:00:00 grep --color=auto pmon
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb2
[oracle@rac1 ~]$ srvctl start database -d cdb
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb2
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is running on node rac1
Instance cdb2 is running on node rac2
Instance cdb3 is running on node rac3
---------------------2 node2 关闭下的切换 如果node1起早了也需要做 切换
[oracle@rac1 ~]$ srvctl stop instance -d cdb -i cdb2 -o abort
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 19894 1 0 02:35 ? 00:00:00 ora_pmon_cdb1
oracle 27107 9482 0 02:39 pts/0 00:00:00 grep --color=auto pmon
[oracle@rac1 ~]$ kill -9 19894
[oracle@rac1 ~]$ srvctl start instance -d cdb -i cdb2
[oracle@rac1 ~]$ srvctl status service -d cdb--------node1先起来了
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb2
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 27172 1 0 02:39 ? 00:00:00 ora_pmon_cdb1
oracle 31445 9482 0 02:46 pts/0 00:00:00 grep --color=auto pmon
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1-----切了两次
-------REPEAT--------------
[oracle@rac1 ~]$ srvctl stop instance -d cdb -i cdb2 -o abort
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is running on node rac1
Instance cdb2 is not running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ ps -ef|grep pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 13057 1 0 01:30 ? 00:00:00 ora_pmon_cdb1
oracle 14961 9482 0 01:31 pts/0 00:00:00 grep --color=auto pmon
[oracle@rac1 ~]$ kill -9 13057
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is not running on node rac1
Instance cdb2 is not running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.-------------两个node都没开,srv失败
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status database -d cdb
Instance cdb1 is running on node rac1
Instance cdb2 is not running on node rac2
Instance cdb3 is running on node rac3
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1----node1 先起来了
----------------------3------------
[oracle@rac1 ~]$ srvctl stop instance -d cdb -i cdb2 -o abort
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ ps -ef|grep pmon
oracle 820 9482 0 02:49 pts/0 00:00:00 grep --color=auto pmon
grid 7182 1 0 Feb03 ? 00:00:00 asm_pmon_+ASM1
oracle 27172 1 0 02:39 ? 00:00:00 ora_pmon_cdb1
[oracle@rac1 ~]$ kill -9 27172
[oracle@rac1 ~]$ srvctl start instance -d cdb -i cdb2
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb2---node2先起来
--------------------4---------------重启后变回默认
[root@rac1 ~]# crsctl stop cluster -all
CRS-2673: Attempting to stop 'ora.crsd' on 'rac3'
[root@rac1 ~]# crsctl start cluster -all
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is not running.
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1
[oracle@rac1 ~]$ srvctl status service -d cdb
Service pdb_srv is running on instance(s) cdb1