查看RAC的资源,与SCAN IP 有关系的有2个地方:SCAN 和SCAN LISTENER. 如果安装RAC的时候没有配置SCN IP, 那么可以手工的使用srvctl 命令来进行添加。
1 添加SCAN
[root@www.cndba.cn ~]# srvctl add scan -h
将 SCAN VIP 添加到 Oracle Clusterware。
用法: srvctl add scan -n <scan_name> [-k <network_number>] [-S <subnet>/<netmask>[/if1[|if2|...]]]
-n <scan_name> 域名限定的 SCAN 名
-k <net_num> 网络编号 (默认编号为 1)
-S <subnet>/<netmask>/[if1[|if2...]] 网络的 NET 地址说明
-h 输出用法
[root@www.cndba.cn ~]# srvctl add scan -n rac-scan
2 添加SCAN LISTENER
[root@www.cndba.cn ~]# srvctl add scan_listener -h
添加监听指定端点的 SCAN 监听程序。
用法: srvctl add scan_listener [-l <lsnr_name_prefix>] [-s] [-p [TCP:]<port>[/IPC:<key>][/NMP:<pipe_name>][/TCPS:<s_port>] [/SDP:<port>]]
-l <lsnr_prefix> SCAN 监听程序名称前缀
-s 跳过端口检查
-p [TCP:]<port>[/IPC:<key>][/NMP:<pipe_name>][/TCPS:<s_port>] [/SDP:<port>] SCAN 监听程序端点
-h 输出用法
[root@www.cndba.cn ~]# srvctl add scan_listener
3 确认添加
6 配置SCAN 监听服务
[root@www.cndba.cn ~]# srvctl start scan
[root@www.cndba.cn ~]# srvctl start scan_listener
[grid@www.cndba.cn admin]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.LISTENER.lsnr
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.OCR.dg
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.asm
ONLINE ONLINE rac1 Started
ONLINE ONLINE rac2 Started
ora.gsd
OFFLINE OFFLINE rac1
OFFLINE OFFLINE rac2
ora.net1.network
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.ons
ONLINE ONLINE rac1
ONLINE ONLINE rac2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac2
ora.n9db.db
1 ONLINE ONLINE rac1 Open
2 ONLINE ONLINE rac2 Open
ora.rac1.vip
1 ONLINE ONLINE rac1
ora.rac2.vip
1 ONLINE ONLINE rac2
ora.scan1.vip
1 ONLINE ONLINE rac2
[grid@www.cndba.cn admin]$
[grid@www.cndba.cn admin]$ srvctl config scan
SCAN 名称: rac-scan, 网络: 1/10.24.30.0/255.255.255.240/bond0
SCAN VIP 名称: scan1, IP: /rac-scan/10.24.30.6
[grid@www.cndba.cn admin]$ srvctl config scan_listener
SCAN 监听程序 LISTENER_SCAN1 已存在。端口: TCP:1521
[grid@www.cndba.cn admin]$
4 在不同节点之间relocate SCAN
[grid@www.cndba.cn rac2]$ srvctl relocate scan_listener -n rac1 -i 1
5 修改SCNA IP地址
先修改/etc/hosts文件:
192.163.3.253 rac-scan
用root进行修改:
[root@www.cndba.cn ~]# srvctl modify scan -n rac-scan
检查修改结果:
[root@www.cndba.cn ~]# srvctl config scan
6 配置SCAN 监听服务
[grid@www.cndba.cn admin]$ lsnrctl status LISTENER_SCAN1
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 25-MAY-2017 00:36:46
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
STATUS of the LISTENER
------------------------
Alias LISTENER_SCAN1
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 24-MAY-2017 23:49:55
Uptime 0 days 0 hr. 46 min. 50 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/gridsoft/11.2.0/network/admin/listener.ora
Listener Log File /u01/gridsoft/11.2.0/log/diag/tnslsnr/rac2/listener_scan1/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.24.30.6)(PORT=1521)))
The listener supports no services
The command completed successfully
[grid@www.cndba.cn admin]$
注意,到这一步虽然SCAN 已经配置成功,但是在监听中并看不到服务的信息。 这是因为还没有配置LOCAL_LISTENER和REMOTE_LISTENER参数。
在Oracle 用户的$ORACLE_HOME/network/admin/tnsnames.ora 文件中添加如下内容:
NODE2_LOCAL=
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
NODE1_LOCAL=
(ADDRESS = (PROTOCOL = TCP)(HOST= rac1-vip)(PORT = 1521))
DAVE_REMOTE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=rac-scan)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST=rac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST=rac2-vip)(PORT = 1521))
)
)
测试:
$ tnsping node2_local
$ tnsping dave_remote
设置local_listener 参数
sql > alter system set LOCAL_LISTENER='NODE2_LOCAL' scope=both sid='orcl2';
sql> alter system set REMOTE_LISTENER='DAVE_REMOTE' scope=both sid='*';
SQL> alter system register;
System altered.
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
listener_networks string
local_listener string NODE1_LOCAL
remote_listener string DAVE_REMOTE
再次查看监听状态,就可以看到服务了:
[grid@www.cndba.cn ~]$ lsnrctl status LISTENER_SCAN1
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 25-MAY-2017 00:47:42
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
STATUS of the LISTENER
------------------------
Alias LISTENER_SCAN1
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 25-MAY-2017 00:42:38
Uptime 0 days 0 hr. 5 min. 3 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/gridsoft/11.2.0/network/admin/listener.ora
Listener Log File /u01/gridsoft/11.2.0/log/diag/tnslsnr/rac2/listener_scan1/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.24.30.6)(PORT=1521)))
Services Summary...
Service "N9DB" has 2 instance(s).
Instance "N9DB1", status READY, has 1 handler(s) for this service...
Instance "N9DB2", status READY, has 1 handler(s) for this service...
Service "N9DBXDB" has 2 instance(s).
Instance "N9DB1", status READY, has 1 handler(s) for this service...
Instance "N9DB2", status READY, has 1 handler(s) for this service...
The command completed successfully
[grid@www.cndba.cn ~]$
7 ORA-12545: Connect failed because target host or object does not exist 故障的解决
如果使用SCAN IP连接遇到ORA-12545的错误,那可能遇到bug了。 具体说明可以参考MOS文档:
ORA-12545 or ORA-12537 While Connecting to RAC through SCAN name [ID 970619.1]
客户端连接SCAN IP的时候会报如下错误:
然后就可以顺利的利用SCAN IP 进行连接了:
C:/Users/Dave>sqlplus system/oracle@10.24.30.6/N9DB
SQL*Plus: Release 11.2.0.4.0 Production on Thu May 25 01:26:30 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-12545: Connect failed because target host or object does not exist
Enter user-name: ^C
其解决方法就是修改LOCAL_LISTENER中的racx-vip 为具体的IP地址即可。 这里修改之前Oracle 用户的tnsnames.ora 文件中的配置,然后重新执行如下命令:
NODE2_LOCAL=
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
NODE1_LOCAL=
(ADDRESS = (PROTOCOL = TCP)(HOST= rac1-vip)(PORT = 1521))
SQL> alter system set LOCAL_LISTENER='NODE1_LOCAL' scope=both sid='N9DB1';
System altered.
SQL> alter system set LOCAL_LISTENER='NODE2_LOCAL' scope=both sid='N9DB2';
System altered.
SQL> alter system register;
然后就可以顺利的利用SCAN IP 进行连接了:
C:/Users/Dave>sqlplus system/oracle@10.24.30.6:1521/N9DB
SQL*Plus: Release 11.2.0.4.0 Production on Thu May 25 01:26:36 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL>
版权声明:本文为博主原创文章,未经博主允许不得转载。
RAC 添加/修改/管理 SCAN IP 和 Listener