ITPub博客

首页 > 数据库 > Oracle > RAC11g创建Service实现Failover

RAC11g创建Service实现Failover

原创 Oracle 作者:SmartWilson 时间:2015-06-11 11:02:32 0 删除 编辑
Oracle版本:Oracle11g R2 x86企业版(RAC)
操作系统:OEL 5.4

一般我们实现RAC节点上的故障转移,可以在客户端的tnsnames.ora文件当中,或者在服务器中配置Service实现故障转移功能;

我们可以通过srvctl命令创建Service,例子如下:

1.首先我们确保crs服务全部online
[grid@rac1 admin]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....ER.lsnr ora....er.type ONLINE    ONLINE    rac1        
ora....N1.lsnr ora....er.type ONLINE    ONLINE    rac2        
ora.ONE.dg     ora....up.type ONLINE    ONLINE    rac1        
ora.THREE.dg   ora....up.type ONLINE    ONLINE    rac1        
ora.TWO.dg     ora....up.type ONLINE    ONLINE    rac1        
ora.asm        ora.asm.type   ONLINE    ONLINE    rac1        
ora.eons       ora.eons.type  ONLINE    ONLINE    rac1        
ora.gsd        ora.gsd.type   ONLINE    ONLINE    rac1        
ora....network ora....rk.type ONLINE    ONLINE    rac1        
ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    rac1        
ora.ons        ora.ons.type   ONLINE    ONLINE    rac1        
ora....SM1.asm application    ONLINE    ONLINE    rac1        
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora.rac1.gsd   application    ONLINE    ONLINE    rac1        
ora.rac1.ons   application    ONLINE    ONLINE    rac1        
ora.rac1.vip   ora....t1.type ONLINE    ONLINE    rac1        
ora....SM2.asm application    ONLINE    ONLINE    rac2        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        
ora.rac2.gsd   application    ONLINE    ONLINE    rac2        
ora.rac2.ons   application    ONLINE    ONLINE    rac2        
ora.rac2.vip   ora....t1.type ONLINE    ONLINE    rac2        
ora.racdb.db   ora....se.type ONLINE    ONLINE    rac1        
ora....ry.acfs ora....fs.type ONLINE    ONLINE    rac1        
ora.scan1.vip  ora....ip.type ONLINE    ONLINE    rac2 

2.利用srvctl命令创建Service,首先我们可以通过直接输入srvctl命令查看用法,之后输入命令$ srvctl add service后发现不知道怎样写参数,可以在后面加-h,参考下面红字
[grid@rac1 admin]$ srvctl 
Usage: srvctl []
    commands: enable|disable|start|stop|relocate|status|add|remove|modify|getenv|setenv|unsetenv|config
    objects: database|instance|service|nodeapps|vip|asm|diskgroup|listener|srvpool|server|scan|scan_listener|oc4j|home|filesystem|gns
For detailed help on each command and object and its options use:
  srvctl -h or
  srvctl -h
[grid@rac1 admin]$ srvctl add service -h 

3.根据以上命令补充参数值,发现报错信息,原因是需要在oracle用戶下创建该Service
[grid@rac1 admin]$ srvctl add service -d RACDB -s service1 -r RACDB1,RACDB2 -P BASIC -e SELECT -m BASIC
PRCD-1026 : Failed to create service service1 for database RACDB
PRKH-1014 : Current user grid is not the same as oracle owner oracle of oracle home /u01/app/oracle/product/11.2.0/db_1.

4.创建Service
[grid@rac1 admin]$ su - oracle
[oracle@rac1 ~]$ srvctl add service -d RACDB -s service1 -r RACDB1,RACDB2 -P BASIC -e SELECT -m BASIC

5.此时可以查看crs服务状态,发现新增了一个服务,如下红字
[grid@rac1 admin]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....ER.lsnr ora....er.type ONLINE    ONLINE    rac1        
ora....N1.lsnr ora....er.type ONLINE    ONLINE    rac2        
ora.ONE.dg     ora....up.type ONLINE    ONLINE    rac1        
ora.THREE.dg   ora....up.type ONLINE    ONLINE    rac1        
ora.TWO.dg     ora....up.type ONLINE    ONLINE    rac1        
ora.asm        ora.asm.type   ONLINE    ONLINE    rac1        
ora.eons       ora.eons.type  ONLINE    ONLINE    rac1        
ora.gsd        ora.gsd.type   ONLINE    ONLINE    rac1        
ora....network ora....rk.type ONLINE    ONLINE    rac1        
ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    rac1        
ora.ons        ora.ons.type   ONLINE    ONLINE    rac1        
ora....SM1.asm application    ONLINE    ONLINE    rac1        
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora.rac1.gsd   application    ONLINE    ONLINE    rac1        
ora.rac1.ons   application    ONLINE    ONLINE    rac1        
ora.rac1.vip   ora....t1.type ONLINE    ONLINE    rac1        
ora....SM2.asm application    ONLINE    ONLINE    rac2        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        
ora.rac2.gsd   application    ONLINE    ONLINE    rac2        
ora.rac2.ons   application    ONLINE    ONLINE    rac2        
ora.rac2.vip   ora....t1.type ONLINE    ONLINE    rac2        
ora.racdb.db   ora....se.type ONLINE    ONLINE    rac1        
ora....ce1.svc ora....ce.type OFFLINE   OFFLINE               
ora....ry.acfs ora....fs.type ONLINE    ONLINE    rac1        
ora.scan1.vip  ora....ip.type ONLINE    ONLINE    rac2

6.将其服务打开
[grid@rac1 admin]$ srvctl start service -d RACDB -s service1

**在启动的同时,我们可以查看全部节点的alert日志,发现会回显以下内容
Thu Jun 11 10:47:24 2015
ALTER SYSTEM SET service_names='service1' SCOPE=MEMORY SID='RACDB1';
Thu Jun 11 10:47:24 2015
ALTER SYSTEM SET service_names='service1' SCOPE=MEMORY SID='RACDB2';
[grid@rac1 admin]$ crs_stat -t 再次查看信息发现该服务已经ONLINE
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....ER.lsnr ora....er.type ONLINE    ONLINE    rac1        
ora....N1.lsnr ora....er.type ONLINE    ONLINE    rac2        
ora.ONE.dg     ora....up.type ONLINE    ONLINE    rac1        
ora.THREE.dg   ora....up.type ONLINE    ONLINE    rac1        
ora.TWO.dg     ora....up.type ONLINE    ONLINE    rac1        
ora.asm        ora.asm.type   ONLINE    ONLINE    rac1        
ora.eons       ora.eons.type  ONLINE    ONLINE    rac1        
ora.gsd        ora.gsd.type   ONLINE    ONLINE    rac1        
ora....network ora....rk.type ONLINE    ONLINE    rac1        
ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    rac1        
ora.ons        ora.ons.type   ONLINE    ONLINE    rac1        
ora....SM1.asm application    ONLINE    ONLINE    rac1        
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora.rac1.gsd   application    ONLINE    ONLINE    rac1        
ora.rac1.ons   application    ONLINE    ONLINE    rac1        
ora.rac1.vip   ora....t1.type ONLINE    ONLINE    rac1        
ora....SM2.asm application    ONLINE    ONLINE    rac2        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        
ora.rac2.gsd   application    ONLINE    ONLINE    rac2        
ora.rac2.ons   application    ONLINE    ONLINE    rac2        
ora.rac2.vip   ora....t1.type ONLINE    ONLINE    rac2        
ora.racdb.db   ora....se.type ONLINE    ONLINE    rac1        
ora....ce1.svc ora....ce.type ONLINE    ONLINE    rac1        
ora....ry.acfs ora....fs.type ONLINE    ONLINE    rac1        
ora.scan1.vip  ora....ip.type ONLINE    ONLINE    rac2


7.查看该Service信息
[grid@rac1 admin]$ srvctl config service -d RACDB -s service1
Service name: service1
Service is enabled
Server pool: RACDB_service1
Cardinality: 2
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: false
Failover type: SELECT
Failover method: BASIC
TAF failover retries: 0
TAF failover delay: 0
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: BASIC
Preferred instances: RACDB1,RACDB2
Available instances: 

8.查看监听信息,发现该Service已经注册到监听当中

[grid@rac1 admin]$ lsnrctl status


LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 11-JUN-2015 10:50:01


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


Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                11-JUN-2015 10:37:34
Uptime                    0 days 0 hr. 12 min. 28 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/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=**)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=**)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "RACDB" has 1 instance(s).
  Instance "RACDB1", status READY, has 1 handler(s) for this service...
Service "RACDBXDB" has 1 instance(s).
  Instance "RACDB1", status READY, has 1 handler(s) for this service...
Service "service1" has 1 instance(s).
  Instance "RACDB1", status READY, has 1 handler(s) for this service...
The command completed successfully

9.接下来我们只需要在客户端上的tnsnames.ora文件中配置该TNS name信息即可,如下
[oracle@rac1 admin]$ more tnsnames.ora 
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.or
a
# Generated by Oracle configuration tools.
RACDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = **)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = RACDB)
    )
  )

RACDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = **)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = service1)
    )
  )

10.之后就可以通过该TNS远程随机连接到节点上
[oracle@rac1 admin]$ sqlplus sys/oracle@racdb1 as sysdba


Finish!

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30220976/viewspace-1695375/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论