TNS listener(s) local listener remote listenrer 11g之前

How to create an additional TNS listener(s) and load balance connections between those listeners.

ie run with multiple TNS listeners. This can assist when a single TNS listener is stressed or overwhelmed with a high connection rate, particularly during peak periods or when a login storm occurs.

Increasing the value for QUEUESIZE for TNS listener can also assist. See section 5 of Note 67983.1

SOLUTION

Adding Additional TNS Listener Standalone Database

1. Setup the LISTENER.ORA file with a unique TNS listener. Either cut and paste from below LISTENER.ORA example or use Net Manager

Example Listener.ora

LISTENERA =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = <sample_hostname>)(PORT = 2001))

)

)

SID_LIST_LISTENERA =

(SID_LIST =

(SID_DESC =

(SID_NAME = <instance_name>)

)

)

LISTENERB =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = <sample_hostname>)(PORT = 2002))

)

)

SID_LIST_LISTENERB =

(SID_LIST =

(SID_DESC =

(SID_NAME = <instance_name>)

)

)

To setup via Net Manager (NetMgr)

  • Select Local from the left hand panel, within Net Manager.

  • Select Listeners from the tree and plus button "+" will go green.

  • Click the plus button and enter a listener name. This must be a unique name.

  • Click ok and then select add address.

Hostname and port number will be added automatically for TCPIP protocol.

The Port number must be unique

  • File Save Network Configuration and a basic listener is setup

If you wish to set a SID entry change Listening Locations to Database Services

  • Click Add Database button

  • Enter details, SID is the minimum requirement.

  • File Save Network Configuration

To start the TNS listeners use start command, with the listener name. For example lsnrctl start listenera

2. Database must know of all addresses for service registration to work.

Add to TNSNAMES.ORA file

LISTENERS =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = <sample_hostname>)(PORT = 2001))

(ADDRESS = (PROTOCOL = TCP)(HOST = <sample_hostname>)(PORT = 2002))

)

)

Register the database with the TNS listeners

sqlplus /nolog

SQL>connect / as sysdba

SQL>alter system set local_listener='LISTENERS' scope=both

也可以不用tnsnames.ora 直接

alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = <sample_hostname>)(PORT = 2001))

(ADDRESS = (PROTOCOL = TCP)(HOST = <sample_hostname>)(PORT = 2002))'

Both listeners will then show services for the database <instance_name>

>lsnrctl services listenera

LSNRCTL for Solaris: Version 10.2.0.3 - Production on 16-MAR-2008 12:31:17

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<sample_hostname>)(PORT=2001)))

Services Summary...

Service "<service_name>" has 1 instance(s).

Instance "<instance_name>", status UNKNOWN, has 1 handler(s) for this service...

Handler(s):

"DEDICATED" established:0 refused:0

LOCAL SERVER

Service "<service_name.domain>" has 1 instance(s).

Instance "<instance_name>", status READY, has 2 handler(s) for this service...

Handler(s):

"DEDICATED" established:0 refused:0 state:ready

LOCAL SERVER

The command completed successfully

>lsnrctl services listenerb

LSNRCTL for Solaris: Version 10.2.0.3 - Production on 16-MAR-2008 12:32:43

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<sample_hostname>)(PORT=2002)))

Services Summary...

Service "<service_name>" has 1 instance(s).

Instance "<instance_name>", status UNKNOWN, has 1 handler(s) for this service...

Handler(s):

"DEDICATED" established:0 refused:0

LOCAL SERVER

Service "<service_name.domain>" has 1 instance(s).

Instance "<instance_name>", status READY, has 2 handler(s) for this service...

Handler(s):

"DEDICATED" established:0 refused:0 state:ready

LOCAL SERVER

The command completed successfully

*Notes:

  • Status "unknown" is due the static service status using the SID_LIST section of the LISTENER.ORA file.

  • Status "ready" is the DYNAMIC service registration from the LOCAL_LISTENER (Database) parameter setting.

3. Example TNSNAMES.ORA entry for using both listeners in a connection:

LOADBALANCE =

(DESCRIPTION =

(LOAD_BALANCE = yes)

(ADDRESS = (PROTOCOL = TCP)(HOST = <sample_hostname>)(PORT = 2001))

(ADDRESS = (PROTOCOL = TCP)(HOST = <sample_hostname>)(PORT = 2002))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = <service_name.domain>)

)

)

Example JDBC Thin connection:

"jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=<sample_hostname>)(PORT=2001))(ADDRESS=(PROTOCOL=TCP)(HOST=<sample_hostname>)(PORT=2002)) (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=<service_name.domain>)))"

*Note:

  • The (LOAD_BALANCE = yes or on) parameter makes a random selection of the addresses in the address list.

如果第一个要先尝试可以OFF,这样ADG环境下 只有主库出问题才去备库查询

Adding Additional TNS Listener RAC

Adding additional TNS listeners to RAC must be done via the netca tool.

Please note this is only valid for versions 9.2.0.1 to 11.1.0.7

1. Run NetCA

Step 1 Select the type of Oracle Net Service Configuration = Cluster Configuration
Step 2 Select the nodes to config = All the nodes where additional listener required
Step 3 Choose the configuration you would like todo = Listener configuration
Step 4 Select what you want to do = Add
Step 5 Listener Name = Add unique listener name
Step 6 Select Protocol = TCP
Step 7 Which TCP/IP port number should be used = Use Another port and ensure its free

(netstat -a -n command can confirm this for you)
Step 8 Would you like to configure another listener = no
Step 9 Select the listener you want to start = entry new listener name

Exit Netca.

On exit the screen should show following

Example for Listener called "Listener2" added to Nodes called Node1 and Node2

Oracle Net Services Configuration:

Configuring Listener:LISTENER2

Node1...

Node2...

Listener configuration complete.

Configuring Listener:LISTENER2

Node1...

Node2...

Listener configuration complete.

Oracle Net Services configuration successful. The exit code is 0

Listener.ora for RAC should look similar to following for Node1

LISTENER_NODE1 =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = <NodeA-vip_hostname>)(PORT = 1521)(IP = FIRST))

(ADDRESS = (PROTOCOL = TCP)(HOST = <NodeA_hostname>)(PORT = 1521)(IP = FIRST ))

)

)

LISTENER2_NODE1 =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = <NodeA-vip_hostname>)(PORT = 1535)(IP = FIRST))

(ADDRESS = (PROTOCOL = TCP)(HOST = <NodeA_hostname>)(PORT = 1535)(IP = FIRST ))

)

)

*Similar with Node2 / NodeB but with that hostname information.

**2.**Registering the instances with the listeners.Add to TNSNAMES.ORA file

LOCAL_NodeA =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = <NodeA-vip_hostname>)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = <NodeA-vip_hostname>)(PORT = 1535))

)

LOCAL_NodeB =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = <NodeB-vip_hostname>)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = <NodeB-vip_hostname>)(PORT = 1535))

)

3. Connect to each instance and register PMON for each instance.

Instance 1

SQL > alter system set LOCAL_LISTENER='LOCAL_NodeA' scope=both sid='<instance_name1>';

Instance 2

SQL > alter system set LOCAL_LISTENER='LOCAL_NodeB' scope=both sid='<instance_name2>';

**4.**With Server side load balancing enabled, REMOTE_LISTENER value will also have to include the new addresses. Entry in TNSNAMES.ORA should be similar to following:

REMOTE_TNSLSNR =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = <NodeA-vip_hostname>)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = <NodeA-vip_hostname>)(PORT = 1535))

(ADDRESS = (PROTOCOL = TCP)(HOST = <NodeB-vip_hostname>)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = <NodeB-vip_hostname>)(PORT = 1535))

)

5. Command to register is

SQL > alter system set REMOTE_LISTENER='REMOTE_TNSLSNR' scope=both;

Windows :

Please note adding new TNS listener to a Windows platform will error, when it is first started via command line. This is expected,as the Windows Service is being created for the TNS listener

相关推荐
java_logo33 分钟前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
广州灵眸科技有限公司8 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
憧憬成为web高手11 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学11 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh13 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
z1234567898614 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD14 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo14 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
王维同学14 小时前
[原创][Windows C++]LSA 认证、安全与通知包的注册表枚举
c++·windows·安全
YCOSA202514 小时前
雨晨 Windows 11 IOT 企业版 LTSC 24H2 轻装 2合1 26100.8968
windows·物联网