步骤如下:
检查默认network的network number,红色字体1,一会儿添加监听会用到:
[grid@rac121 admin]$ srvctl config network
[grid@sfpay-tms-db02 ~]
$ srvctl config networkNetwork exists: 1/10.120.3.0/255.255.255.0/eth4, type staticNetwork exists: 2/172.23.0.0/255.255.0.0/eth2, type static # --为新增第二个网卡监听。
查看srvctl添加监听的语法:
[grid@rac121 admin]$ srvctl add listener -h
Adds a listener configuration to the Oracle Clusterware.
Usage: srvctl add listener [-l <lsnr_name>] [-s] [-p "[TCP:]<port>[, ...][/IPC:<key>][/NMP:<pipe_name>][/TCPS:<s_port>] [/SDP:<port>]"] [-o <oracle_home>] [-k <net_num>]
-l <lsnr_name> Listener name (default name is LISTENER) #监听名称
-o <oracle_home> ORACLE_HOME path (default value is CRS_HOME) #grid的HOME
-k <net_num> network number (default number is 1) #最开始查看的网络号
-s Skip the checking of ports
-p "[TCP:]<port>[, ...][/IPC:<key>][/NMP:<pipe_name>][/TCPS:<s_port>] [/SDP:<port>]" Comma separated tcp ports or listener endpoints #要添加的端口号
-h Print usage
添加监听:名称: LISTENER4 端口号:1524
[grid@rac121 ~]$ srvctl add listener -l LISTENER4 -o $ORACLE_HOME -p 1621 -k 2 # srvctl config network 中 的Network exists 网卡($srvctl config network)。
[grid@rac121 ~]$ srvctl start listener -l LISTENER4
创建完后会在配置文件endpoints_listener.ora和listener.ora中添加记录信息:
[grid@rac121 admin]$ ls
endpoints_listener.ora listener1206183PM1248.bak listener.ora samples sqlnet1206199AM0038.bak
endpoints_listener.ora.bak.rac121 listener1206199AM0038.bak listener.ora.bak.rac121 shrept.lst sqlnet.ora
查看添加 的信息:两个文件听红色字体部分
[grid@rac121 admin]$ cat listener.ora
LISTENER4=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER4)))) # line added by Agent
NEW_RACDB_LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=NEW_RACDB_LISTENER)))) # line added by Agent
# listener.ora Network Configuration File: /oradata/oracleapp/11.2.0/grid/network/admin/listener.ora
# Generated by Oracle configuration tools.
[grid@rac121 admin]$ cat endpoints_listener.oraLISTENER4_RAC121=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=rac121-vip)(PORT=1524))(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.252.121)(PORT=1524)(IP=FIRST)))) # line added by Agent
NEW_RACDB_LISTENER_RAC121=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=rac121-vip)(PORT=1523))(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.252.121)(PORT=1523)(IP=FIRST)))) # line added by Agent
RACDB_LISTENER_RAC121=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=rac121-vip)(PORT=1522))(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.252.121)(PORT=1522)(IP=FIRST)))) # line added by Agent
LISTENER_RAC121=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=rac121-vip)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.252.121)(PORT=1521)(IP=FIRST)))) # line added by Agent
到此完成了监听的添加,再添加静态注册信息,vi listener.ora文件,在里面添加如下内容:
SID_LIST_LISTENER4 = #对应的监听名
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = RACDB)
(ORACLE_HOME = /oradata/oracleapp/11.2.0/grid)
(SID_NAME = RACDB1) #节点对应的SID
)
)
重启监听即完成静态注册:
[grid@rac121 admin]$ srvctl stop listener -l LISTENER4
[grid@rac121 admin]$ srvctl start listener -l LISTENER4
[grid@rac121 admin]$ lsnrctl status LISTENER4
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 19-JUN-2012 15:48:47
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER4)))
STATUS of the LISTENER
------------------------
Alias LISTENER4
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 19-JUN-2012 15:48:35
Uptime 0 days 0 hr. 0 min. 11 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oradata/oracleapp/11.2.0/grid/network/admin/listener.ora
Listener Log File /oradata/oracleapp/11.2.0/grid/log/diag/tnslsnr/rac121/listener4/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER4)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.1.252.121)(PORT=1524)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.1.252.75)(PORT=1524)))
Services Summary...
Service "RACDB" has 1 instance(s).
Instance "RACDB1", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[grid@rac121 admin]$
查看所有的监听状态:
grid@rac121 admin]$ srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is running on node(s): rac121,rac122
Listener LISTENER4 is enabled
Listener LISTENER4 is running on node(s): rac121,rac122
Listener NEW_RACDB_LISTENER is enabled
Listener NEW_RACDB_LISTENER is running on node(s): rac121,rac122
Listener RACDB_LISTENER is enabled
Listener RACDB_LISTENER is running on node(s): rac121,rac122
查看各个监听的配置:
[grid@rac121 admin]$ srvctl config listener -a
Name: LISTENER
Network: 1, Owner: grid
Home: <CRS home>
/oradata/oracleapp/11.2.0/grid on node(s) rac122,rac121
End points: TCP:1521
Name: LISTENER4
Network: 1, Owner: grid
Home: <CRS home>
/oradata/oracleapp/11.2.0/grid on node(s) rac122,rac121
End points: TCP:1524
Name: NEW_RACDB_LISTENER
Network: 1, Owner: grid
Home: <CRS home>
/oradata/oracleapp/11.2.0/grid on node(s) rac122,rac121
End points: TCP:1523
Name: RACDB_LISTENER
Network: 1, Owner: grid
Home: <CRS home>
/oradata/oracleapp/11.2.0/grid on node(s) rac122,rac121
End points: TCP:1522
-------- 方法 一 ----------------
到此就利用srvctl管理工具完成了添加新监听和静态注册的任务。
了解到以上信息后可能你对当前11.2 RAC中的listener.ora文件中的监听配置信息不再感到奇怪。
我们可以使用netca图形化工具或者srvctl 命令行工具添加监听配置; 如果仅仅是手动在listener.ora中添加记录的话是无法被注册为Cluster Ready Service的服务的,将不会被CRS管理。
方法1:
使用netca和netmgr图形化工具,完成添加监听和静态注册的工作。
1) 以Grid Infrastructure GI用户登录任意节点,并运行netca启动图形界面:
su - grid
(grid)$ export DISPLAY=:0
(grid)$ netca
选择LISTENER Configuration
选择ADD
填入监听名字
选择subnet和availabe protocol ,一般默认即可,除非你有多个public network网段
填入端口号
选择NO
选择要启动的监听名,即方才你创建的监听名
之后选择FINISH退出netca 界面,启动netmgr界面,为监听加入静态注册的信息:
su - grid
(grid)$ export DISPLAY=:0
(grid)$ netmgr
点选方才创建的监听器,选择Database Services菜单
填入Global Database Name和本地实例的SID信息,并确认ORACLE HOME Directory(应是Grid Infrastructure的Home目录)正确后点选Save Network Configuration。
之后使用srvctl 或 crsctl 重启该监听即可生效:
[grid@vrh1 admin]$ crsctl status res ora.MACLEAN_LISTENER.lsnr
NAME=ora.MACLEAN_LISTENER.lsnr
TYPE=ora.listener.type
TARGET=ONLINE , ONLINE
STATE=ONLINE on vrh1, ONLINE on vrh2
[grid@vrh1 admin]$ crsctl stop res ora.MACLEAN_LISTENER.lsnr
CRS-2673: Attempting to stop 'ora.MACLEAN_LISTENER.lsnr' on 'vrh1'
CRS-2673: Attempting to stop 'ora.MACLEAN_LISTENER.lsnr' on 'vrh2'
CRS-2677: Stop of 'ora.MACLEAN_LISTENER.lsnr' on 'vrh1' succeeded
CRS-2677: Stop of 'ora.MACLEAN_LISTENER.lsnr' on 'vrh2' succeeded
[grid@vrh1 admin]$ crsctl start res ora.MACLEAN_LISTENER.lsnr
CRS-2672: Attempting to start 'ora.MACLEAN_LISTENER.lsnr' on 'vrh2'
CRS-2672: Attempting to start 'ora.MACLEAN_LISTENER.lsnr' on 'vrh1'
CRS-2676: Start of 'ora.MACLEAN_LISTENER.lsnr' on 'vrh1' succeeded
CRS-2676: Start of 'ora.MACLEAN_LISTENER.lsnr' on 'vrh2' succeeded
[grid@vrh1 admin]$ lsnrctl status MACLEAN_LISTENER
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 27-NOV-2011 11:00:42
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=MACLEAN_LISTENER)))
STATUS of the LISTENER
------------------------
Alias MACLEAN_LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 27-NOV-2011 11:00:11
Uptime 0 days 0 hr. 0 min. 31 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /g01/11.2.0/grid/network/admin/listener.ora
Listener Log File /g01/orabase/diag/tnslsnr/vrh1/maclean_listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=MACLEAN_LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.161)(PORT=1598)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.162)(PORT=1598)))
Services Summary...
Service "VPROD" has 1 instance(s).
Instance "VPROD1", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[grid@vrh1 admin]$ srvctl stop listener -l MACLEAN_LISTENER
[grid@vrh1 admin]$ srvctl start listener -l MACLEAN_LISTENER
[grid@vrh1 admin]$ srvctl config listener -l MACLEAN_LISTENER
Name: MACLEAN_LISTENER
Network: 1, Owner: grid
Home:
End points: TCP:1598
[grid@vrh1 admin]$ lsnrctl status MACLEAN_LISTENER
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 27-NOV-2011 11:01:42
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=MACLEAN_LISTENER)))
STATUS of the LISTENER
------------------------
Alias MACLEAN_LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 27-NOV-2011 11:01:10
Uptime 0 days 0 hr. 0 min. 31 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /g01/11.2.0/grid/network/admin/listener.ora
Listener Log File /g01/orabase/diag/tnslsnr/vrh1/maclean_listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=MACLEAN_LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.161)(PORT=1598)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.162)(PORT=1598)))
Services Summary...
Service "VPROD" has 1 instance(s).
Instance "VPROD1", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
以上使用netca和netmgr图形界面工具完成了新监听的添加和静态注册工作。
2. 使用srvctl 工具添加监听并手动加入静态注册信息
检查默认network的network number,红色的数字
[grid@vrh1 admin]$ srvctl config network
Network exists: 1/192.168.1.0/255.255.255.0/eth0, type static
srvctl 添加监听的语法如下
[grid@vrh1 admin]$ srvctl add listener -h
Adds a listener configuration to the Oracle Clusterware.
Usage: srvctl add listener [-l <lsnr_name>] [-s] [-p "[TCP:]<port>[, ...][/IPC:<key>]
[/NMP:<pipe_name>][/TCPS:<s_port>] [/SDP:<port>]"] [-o <oracle_home>] [-k <net_num>]
-l <lsnr_name> Listener name (default name is LISTENER)
-o <oracle_home> ORACLE_HOME path (default value is CRS_HOME)
-k <net_num> network number (default number is 1)
-s Skip the checking of ports
-p "[TCP:]<port>[, ...][/IPC:<key>][/NMP:<pipe_name>][/TCPS:<s_port>] [/SDP:<port>]"
Comma separated tcp ports or listener endpoints
-h Print usage
[grid@vrh1 admin]$ srvctl add listener -l NEW_MACLEAN_LISTENER -o $CRS_HOME -p 1601 -k 1
-k 填入方才获得的network number,-p填入端口号,-l填入监听名,-o 填入GI HOME路径
[grid@vrh1 admin]$ srvctl start listener -l NEW_MACLEAN_LISTENER
srvctl start listener启动新添加的监听后listener.ora和endpoints_listener.ora会出现新的记录:
[grid@vrh1 admin]$ head -1 listener.ora
NEW_MACLEAN_LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=NEW_MACLEAN_LISTENER))))
# line added by Agent
[grid@vrh1 admin]$ head -1 endpoints_listener.ora
NEW_MACLEAN_LISTENER_VRH1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=vrh1-vip)(PORT=1601))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.161)(PORT=1601)(IP=FIRST))))
# line added by Agent
以上已经完成了监听的添加,足见使用srvctl管理更为简便。
之后仅需要加入静态注册信息即可,如:
SID_LIST_NEW_MACLEAN_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = VPROD)
(ORACLE_HOME = /g01/11.2.0/grid)
(SID_NAME = VPROD1)
)
)
加入如上信息到listener.ora配置文件中(SID_LIST_($LISTENER_NAME),并重启监听即完成静态注册:
[grid@vrh1 admin]$ srvctl stop listener -l NEW_MACLEAN_LISTENER
[grid@vrh1 admin]$ srvctl start listener -l NEW_MACLEAN_LISTENER
[grid@vrh1 admin]$ lsnrctl status NEW_MACLEAN_LISTENER
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 27-NOV-2011 11:21:37
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=NEW_MACLEAN_LISTENER)))
STATUS of the LISTENER
------------------------
Alias NEW_MACLEAN_LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 27-NOV-2011 11:21:25
Uptime 0 days 0 hr. 0 min. 11 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /g01/11.2.0/grid/network/admin/listener.ora
Listener Log File /g01/11.2.0/grid/log/diag/tnslsnr/vrh1/new_maclean_listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=NEW_MACLEAN_LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.161)(PORT=1601)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.162)(PORT=1601)))
Services Summary...
Service "VPROD" has 1 instance(s).
Instance "VPROD1", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
以上利用srvctl管理工具完成了添加新监听和静态注册的任务。
su - oracle
$ srvctl add database -d db_unique_name -o $ORACLE_HOME -p '+data/db_unique_name/spfile<db_unique_name>.ora '