天天看點

Oracle 11g R2 RAC:使用 DBMS_SERVICE 包管理 service 資源

Summary of DBMS_SERVICE Subprograms

Table 130-5 DBMS_SERVICE Package Subprograms

Subprogram Description
CREATE_SERVICE Procedure Creates service
DELETE_SERVICE Procedure Deletes service
DISCONNECT_SESSION Procedure Disconnects service
MODIFY_SERVICE Procedure Modifies service
START_SERVICE Procedure Activates service
STOP_SERVICE Procedure Stops service

1、使用 DBMS_SERVICE 建立 service 資源

Syntax

DBMS_SERVICE.CREATE_SERVICE(
   service_name        IN VARCHAR2, 
   network_name        IN VARCHAR2,
   goal                IN NUMBER DEFAULT NULL,
   dtp                 IN BOOLEAN DEFAULT NULL,
   aq_ha_notifications IN BOOLEAN DEFAULT NULL,
   failover_method     IN VARCHAR2 DEFAULT NULL,
   failover_type       IN VARCHAR2 DEFAULT NULL,
   failover_retries    IN NUMBER DEFAULT NULL,
   failover_delay      IN NUMBER DEFAULT NULL,
   clb_goal            IN NUMBER DEFAULT NULL,
   edition             IN VARCHAR2 DEFAULT NULL);
      
--The network name of the service as used in SQLNet connect descriptors for client connections. This is limited to the NET          service_names                 character set (see Oracle Database Net Services Reference).      
示例:      
set linesize 200
 col name for a20
 col network_name for a20      
begin
       
DBMS_SERVICE.CREATE_SERVICE(service_name=>'ractest3',      
network_name=>'ractest3',      
failover_method=>dbms_service.failover_method_basic,      
failover_type=>dbms_service.failover_type_select,      
failover_retries=>180,      
failover_delay=>5);      
end;      
/      
使用 dbms_service 存儲過程建立 service 資源時無法知道 service 服務的首選節點清單、備用節點清單,因為這些屬性是由 clusterware 管理和控制的。      
2、使用 DBMS_SERVICE 修改 service 資源      
begin      
DBMS_SERVICE.MODIFY_SERVICE(service_name=>'ractest3',      
failover_method=>dbms_service.failover_method_basic,      
failover_method=>dbms_service.failover_type_session);      
end;      
/      
3、使用 DBMS_SERVICE 啟動 service 資源
begin      
DBMS_SERVICE.START_SERVICE(service_name=>'ractest3',instance_name=>'rac1');      
end;      
/      
通過上述方法啟動 service 資源後,可以通過如下方式檢視 service 狀态:      
[[email protected] admin]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 14-AUG-2013 22:27:11

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                14-AUG-2013 19:59:06
Uptime                    0 days 2 hr. 28 min. 5 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/11.2.0/grid/network/admin/listener.ora
Listener Log File         /u01/app/grid/diag/tnslsnr/rac1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.8.21)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.8.11)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "rac" has 1 instance(s).
  Instance "rac1", status READY, has 1 handler(s) for this service...
Service "racXDB" has 1 instance(s).
  Instance "rac1", status READY, has 1 handler(s) for this service...
Service "ractest3" has 1 instance(s).
  Instance "rac1", status READY, has 1 handler(s) for this service...
The command completed successfully      
SQL>  select * from gv$services where name='ractest3';

   INST_ID SERVICE_ID NAME        NAME_HASH NETWORK_NAME         CREATION_DATE       CREATION_DATE_HASH GOAL         D AQ_ CLB_G
---------- ---------- ---------- ---------- -------------------- ------------------- ------------------ ------------ - --- -----
         1          7 ractest3   3415106618 ractest3             2013-08-14 22:12:02         2590462208 NONE         N NO  LONG      
4、使用 DBMS_SERVICE 停止 service 資源      
begin      
DBMS_SERVICE.STOP_SERVICE(service_name=>'ractest3',instance_name=>'rac1');      
end;      
/      
[[email protected] admin]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 14-AUG-2013 22:32:09

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                14-AUG-2013 19:59:06
Uptime                    0 days 2 hr. 33 min. 3 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/11.2.0/grid/network/admin/listener.ora
Listener Log File         /u01/app/grid/diag/tnslsnr/rac1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.8.21)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.8.11)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "rac" has 1 instance(s).
  Instance "rac1", status READY, has 1 handler(s) for this service...
Service "racXDB" has 1 instance(s).
  Instance "rac1", status READY, has 1 handler(s) for this service...
The command completed successfully      
5、使用 DBMS_SERVICE 删除 service 資源      
begin      
DBMS_SERVICE.DELETE_SERVICE(service_name=>'ractest3');      
end;      
/      
SQL> begin
  2  DBMS_SERVICE.DELETE_SERVICE(service_name=>'ractest3');
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> select * from gv$services where name='ractest3';

no rows selected      
注意:使用 DBMS_SERVICE 包建立的 service 資源無法注冊到 OCR 中,是以無法通過 srvctl 等工具對這些不存在的      
資源進行管理,當 RAC 節點出現故障時,這些資源也無法随 VIP failover 到幸存的節點上。      
srvctl 對 service 的管理以及 clusterware 對 service 的高可用性切換都是基于一定的規則調用 dbms_service 包實作的。      
轉載請注明作者出處及原文連結,否則将追究法律責任:

作者:xiangsir

原文連結:http://blog.csdn.net/xiangsir/article/details/9973037

QQ:444367417

MSN:[email protected]