说明:通过在RAC中新增四个监听服务,来实现通过不同服务名连接到不同的实例。
注意:不配置DNS而使用SCAN IP时,通过客户机连接RAC服务器时,需要在客户机的hosts文件中配置一下SCAN IP以及VIP的条目。
如果只配置SCAN IP未配置VIP的条目,会报错:ORA-12545: Connect failed because target host or object does not exist
客户机通过SCAN连接RAC数据库的步骤是:SCAN IP LISTENER接收到连接请求时,会根据 LBA 算法将该客户端的连接请求,转发给对应的instance上的VIP LISTENER。
client -> scan listener -> local listener
SCAN IP的介绍
1.查看并使用srvctl来增加服务名
[oracle@bysrac1 ~]$
crs_stat -t
-bash: crs_stat: command not found
[oracle@bysrac1 ~]$
su – grid
Password:
[grid@bysrac1 ~]$
lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 – Production on 24-OCT-2013 09:41:36
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 24-OCT-2013 09:24:34
Uptime 0 days 0 hr. 17 min. 2 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /g01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File /g01/app/grid/diag/tnslsnr/bysrac1/listener/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.221)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.226)(PORT=1521)))
Services Summary…
Service “+ASM” has 1 instance(s).
Instance “+ASM1”, status READY, has 1 handler(s) for this service…
Service “bysrac” has 1 instance(s).
Instance “bysrac1”, status READY, has 1 handler(s) for this service…
The command completed successfully
使用srvctl向监听中增加 jiaoyi ,fengkong,caiwu,jiesuan四个服务–要用ORACLE用户
[grid@bysrac1 ~]$ srvctl add service -d bysrac -s jiaoyi -r “bysrac1”
PRCD-1026 : Failed to create service jiaoyi for database bysrac
PRKH-1014 : Current user grid is not the same as oracle owner oracle of oracle home /u01/app/oracle/product/11.2.0/dbhome_1.
[grid@bysrac1 ~]$ exit
logout
[oracle@bysrac1 ~]$ srvctl add service -d bysrac -s jiaoyi -r “bysrac1”
[oracle@bysrac1 ~]$
srvctl add service -d bysrac -s fengkong -r “bysrac2”
[oracle@bysrac1 ~]$
srvctl add service -d bysrac -s caiwu -r “bysrac1”
[oracle@bysrac1 ~]$
srvctl add service -d bysrac -s jiesuan -r “bysrac2”
[oracle@bysrac1 ~]$ su – grid
Password:
[grid@bysrac1 ~]$
crs_stat -t 可以看到新增的四个服务已经存在,但还是OFFLINE状态。
Name Type Target State Host
————————————————————
ora….MBAK.dg ora….up.type OFFLINE OFFLINE
ora….DATA.dg ora….up.type ONLINE ONLINE bysrac1
ora….SMDG.dg ora….up.type ONLINE ONLINE bysrac1
ora….ER.lsnr ora….er.type ONLINE ONLINE bysrac1
ora….N1.lsnr ora….er.type ONLINE ONLINE bysrac2
ora.asm ora.asm.type ONLINE ONLINE bysrac1
ora….iwu.svc ora….ce.type OFFLINE OFFLINE
ora.bysrac.db ora….se.type ONLINE ONLINE bysrac1
ora….ong.svc ora….ce.type OFFLINE OFFLINE
ora….oyi.svc ora….ce.type OFFLINE OFFLINE
ora….uan.svc ora….ce.type OFFLINE OFFLINE
ora….SM1.asm application ONLINE ONLINE bysrac1
ora….C1.lsnr application ONLINE ONLINE bysrac1
ora….ac1.gsd application OFFLINE OFFLINE
ora….ac1.ons application ONLINE ONLINE bysrac1
ora….ac1.vip ora….t1.type ONLINE ONLINE bysrac1
ora….SM2.asm application ONLINE ONLINE bysrac2
ora….C2.lsnr application ONLINE ONLINE bysrac2
ora….ac2.gsd application OFFLINE OFFLINE
ora….ac2.ons application ONLINE ONLINE bysrac2
ora….ac2.vip ora….t1.type ONLINE ONLINE bysrac2
ora.eons ora.eons.type ONLINE ONLINE bysrac1
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora….network ora….rk.type ONLINE ONLINE bysrac1
ora.oc4j ora.oc4j.type OFFLINE OFFLINE
ora.ons ora.ons.type ONLINE ONLINE bysrac1
ora.scan1.vip ora….ip.type ONLINE ONLINE bysrac2
启动新增的四个监听的服务
[grid@bysrac1 ~]$
crs_start ora.bysrac.jiaoyi.svc
Attempting to start `ora.bysrac.jiaoyi.svc` on member `bysrac1`
Start of `ora.bysrac.jiaoyi.svc` on member `bysrac1` succeeded.
[grid@bysrac1 ~]$
crs_start ora.bysrac.fengkong.svc
Attempting to stop `ora.bysrac.db` on member `bysrac2`
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory
Process ID: 0
Session ID: 0 Serial number: 0
Stop of `ora.bysrac.db` on member `bysrac2` succeeded.
Attempting to start `ora.bysrac.db` on member `bysrac2`
Start of `ora.bysrac.db` on member `bysrac2` succeeded.
Attempting to start `ora.bysrac.jiesuan.svc` on member `bysrac2`
Start of `ora.bysrac.jiesuan.svc` on member `bysrac2` succeeded.
Attempting to start `ora.bysrac.fengkong.svc` on member `bysrac2`
Start of `ora.bysrac.fengkong.svc` on member `bysrac2` succeeded.
[grid@bysrac1 ~]$
crs_start ora.bysrac.caiwu.svc
Attempting to start `ora.bysrac.caiwu.svc` on member `bysrac1`
Start of `ora.bysrac.caiwu.svc` on member `bysrac1` succeeded.
[grid@bysrac1 ~]$
crs_start ora.bysrac.jiesuan.svc
CRS-5702: Resource ‘ora.bysrac.jiesuan.svc’ is
already running on ‘bysrac2’
CRS-0223: Resource ‘ora.bysrac.jiesuan.svc’ has placement error.
再来查询各资源和服务状态
[grid@bysrac1 ~]$ crs_stat -t
Name Type Target State Host
————————————————————
ora….MBAK.dg ora….up.type OFFLINE OFFLINE
ora….DATA.dg ora….up.type ONLINE ONLINE bysrac1
ora….SMDG.dg ora….up.type ONLINE ONLINE bysrac1
ora….ER.lsnr ora….er.type ONLINE ONLINE bysrac1
ora….N1.lsnr ora….er.type ONLINE ONLINE bysrac2
ora.asm ora.asm.type ONLINE ONLINE bysrac1
ora….iwu.svc ora….ce.type ONLINE ONLINE bysrac1
ora.bysrac.db ora….se.type ONLINE ONLINE bysrac1
ora….ong.svc ora….ce.type ONLINE ONLINE bysrac2
ora….oyi.svc ora….ce.type ONLINE ONLINE bysrac1
ora….uan.svc ora….ce.type ONLINE ONLINE bysrac2
ora….SM1.asm application ONLINE ONLINE bysrac1
ora….C1.lsnr application ONLINE ONLINE bysrac1
ora….ac1.gsd application OFFLINE OFFLINE
ora….ac1.ons application ONLINE ONLINE bysrac1
ora….ac1.vip ora….t1.type ONLINE ONLINE bysrac1
ora….SM2.asm application ONLINE ONLINE bysrac2
ora….C2.lsnr application ONLINE ONLINE bysrac2
ora….ac2.gsd application OFFLINE OFFLINE
ora….ac2.ons application ONLINE ONLINE bysrac2
ora….ac2.vip ora….t1.type ONLINE ONLINE bysrac2
ora.eons ora.eons.type ONLINE ONLINE bysrac1
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora….network ora….rk.type ONLINE ONLINE bysrac1
ora.oc4j ora.oc4j.type OFFLINE OFFLINE
ora.ons ora.ons.type ONLINE ONLINE bysrac1
ora.scan1.vip ora….ip.type ONLINE ONLINE bysrac2
至此在RAC配置服务并启动的操作完成。
#########################################################################
2.下面需要在tnsnames.ora文件中进行配置
[oracle@bysrac1 ~]$ cd $ORACLE_HOME/network/
[oracle@bysrac1 network]$ ls
admin doc install jlib lib log mesg tools trace
[oracle@bysrac1 network]$ cd admin/
[oracle@bysrac1 admin]$ ls
samples shrept.lst tnsnames.ora
[oracle@bysrac1 admin]$ vi tnsnames.ora
编辑结果如下:–主要增加了新增的四个服务的连接串
借助RAC的SCAN,可以只指定服务名而不显式指定实例,由SCAN来根据配置的服务名指定的实例,最终通过监听的服务名定位到具体的实例。
BYSRAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = bysrac-cluster-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = bysrac)
)
)
caiwu =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = bysrac-cluster-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = caiwu)
)
)
jiaoyi =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = bysrac-cluster-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = jiaoyi)
)
)
fengkong =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = bysrac-cluster-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = fengkong)
)
)
jiesuan =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = bysrac-cluster-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = jiesuan)
)
)
"tnsnames.ora" 53L, 1266C written
这里未在RAC的另一节点上修改,可以直接把此tnsnames.ora文件SSH传送过去即可。
#######################################################
3.登陆测试,可以实现通过不同服务登陆不同实例
[oracle@bysrac1 admin]$
sqlplus bys/bys@caiwu
BYS@ caiwu>select instance_name from v$instance;
INSTANCE_NAME
----------------
bysrac1
###############################################
[oracle@bysrac1 admin]$ sqlplus bys/bys@jiaoyi
BYS@ jiaoyi>select instance_name from v$instance;
INSTANCE_NAME
----------------
bysrac1
############################################
[oracle@bysrac1 admin]$ sqlplus bys/bys@jiesuan
BYS@ jiesuan>select instance_name from v$instance;
INSTANCE_NAME
----------------
bysrac2
##############################################
[oracle@bysrac1 admin]$ sqlplus bys/bys@fengkong
BYS@ fengkong>select instance_name from v$instance;
INSTANCE_NAME
----------------
bysrac2
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net