local_listener 与 remote_listener 参数说明
?
一.? LOCAL_LISTENER 和 REMOTE_LISTENER說明
1.1 ?LOCAL_LISTENER
官網(wǎng)信息如下:
??????
| Property | Description |
| Parameter type | String |
| Syntax | LOCAL_LISTENER = network_name |
| Default value | (ADDRESS = (PROTOCOL=TCP)(HOST=hostname)(PORT=1521)) where hostname is the network name of the local host. |
| Modifiable | ALTER SYSTEM |
| Basic | No |
?
?????? LOCAL_LISTENER specifies a network name that resolves to an address or address list of Oracle Net local listeners (that is, listeners that are running on the same machine as this instance). The address or address list is specified in the TNSNAMES.ORA file or other address repository as configured for your system.
?
1.2 ?REMOTE_LISTENER
?
官網(wǎng)說明:
| Property | Description |
| Parameter type | String |
| Syntax | REMOTE_LISTENER = network_name |
| Default value | There is no default value. |
| Modifiable | ALTER SYSTEM |
| Basic | Yes |
?
?????? REMOTE_LISTENER specifies a network name that resolves to an address or address list of Oracle Net remote listeners (that is, listeners that are not running on the same machine as this instance). The address or address list is specified in the TNSNAMES.ORA file or other address repository as configured for your system.
?
?
?
二. ?LOCAL_LISTENER 與動(dòng)態(tài)注冊(cè)
?
關(guān)于動(dòng)態(tài)注冊(cè),參考我的Blog:
?????? Oracle Listener 動(dòng)態(tài)注冊(cè) 與 靜態(tài)注冊(cè)
?????? http://blog.csdn.net/tianlesoftware/archive/2010/04/30/5543166.aspx
?
?????? 動(dòng)態(tài)注冊(cè)是在instance啟動(dòng)的時(shí)候,PMON進(jìn)程根據(jù)init.ora中的instance_name,service_names兩個(gè)參數(shù)將實(shí)例和服務(wù)動(dòng)態(tài)注冊(cè)到listener中。
?????? 注冊(cè)到監(jiān)聽器中的實(shí)例值從init.ora文件中的instance_name參數(shù)取得。如果該參數(shù)沒有設(shè)定值,那么它將取init.ora文件中的db_name的值。如果在RAC中配置,您必須將集群中每個(gè)實(shí)例的instance_name參數(shù)設(shè)置為一個(gè)唯一的值。
注冊(cè)到監(jiān)聽器中的服務(wù)值從init.ora文件中的參數(shù)service_names取得。如果該參數(shù)沒有設(shè)定值,數(shù)據(jù)庫將拼接init.ora文件中的 db_name和db_domain的值來注冊(cè)自己。如果選擇提供service_names值,您可以使用完全限定的名稱(比如 orcl.oracle.com)或縮寫的名稱(比如orcl)。如果選擇縮寫的名稱并設(shè)置了db_domain參數(shù),注冊(cè)到監(jiān)聽器中的服務(wù)將是 service_name值和db_domain值的拼接。
?
???? 這里要注意的是:動(dòng)態(tài)注冊(cè)默認(rèn)只注冊(cè)到默認(rèn)的監(jiān)聽器上(名稱是LISTENER、端口是1521、協(xié)議是TCP),因?yàn)?/span>pmon只會(huì)動(dòng)態(tài)注冊(cè)port等于1521的監(jiān)聽,否則pmon不能動(dòng)態(tài)注冊(cè)listener,如果需要向非默認(rèn)監(jiān)聽注冊(cè),則需要配置local_listener參數(shù)。
?
?????? 因此我們看到了LOCAL_LISTENER的作用。 ?監(jiān)聽的端口默認(rèn)是1521,但是很多情況下,處于安裝考慮,不會(huì)使用1521端口,因?yàn)樵谶@種情況下使用動(dòng)態(tài)注冊(cè)就需要配置LOCAL_LISTENER參數(shù)。
?
?????? 將監(jiān)聽的信息添加到tnsnames.ora? 文件中。 因?yàn)?/span>pmon在動(dòng)態(tài)注冊(cè)監(jiān)聽時(shí)要從tnsnames.ora中讀取相關(guān)信息。
?
LISTENER _RACDB1 =
? (ADDRESS_LIST =
??? (ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT =1522))
? )
?
?
然后以sys用戶修改local_listener參數(shù):
SQL> alter system set local_listener= LISTENER _RACDB1;
也可以直接指定:
SQL> alter system set LOCAL_LISTENER='(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1522))';
?
?????? 這樣,在DB啟動(dòng)的時(shí)候,就會(huì)自動(dòng)的把instence_name 和service_name注冊(cè)到監(jiān)聽。 如果在這期間,監(jiān)聽重啟了,監(jiān)聽里的信息也會(huì)丟失,這時(shí)就需要手動(dòng)的把信息注冊(cè)到監(jiān)聽:
SQL> alter system register;
?
?
三. LOCAL_LISTENER, REMOTE_LISTENER 與RAC CLIENT-SIDE TAF 和 LOAD BALCANING
?
3.1 參數(shù)說明
在Blog:
?????? Oracle RAC Failover 詳解
?????? http://blog.csdn.net/tianlesoftware/archive/2010/03/03/5340788.aspx
?
?
中對(duì)RAC的Failover做了分類:Client-Side TAF 和 Server-side TAF.
Service-SideTAF是在服務(wù)器上配置的,Client-Side TAF是在客戶端配置的。
?
?????? Client-Side TAF 是在客戶端修改tnsnames.ora 文件來配置的,如果有很多客戶端使用這個(gè)數(shù)據(jù)庫,那么每次微笑調(diào)整都需要把所有的計(jì)算機(jī)更改一遍,既低效又容易出錯(cuò)。而Service-Side TAF 通過結(jié)合Service,在數(shù)據(jù)庫里保存FAIL_MODE的配置,把所有的TAF配置保存在數(shù)據(jù)字典中,從而省去了客戶端的配置工作,客戶端的TNS文件就不需要任何TAF的配置選項(xiàng)了。
?
關(guān)于Server-side TAF 配置參考Blog:
?????? How To Configure Server Side Transparent Application Failover [ID 460982.1]
?????? http://blog.csdn.net/tianlesoftware/archive/2010/12/20/6086728.aspx
?
LOCAL_LISTENER 和 REMOTE_LISTENER 這2個(gè)參數(shù)就是配置Client-Side TAF的。
?
官網(wǎng)的配置參考:
?????? 10g & 11g Configuration of TAF(Transparent Application Failover) and Load Balancing [ID 453293.1]
?????? http://blog.csdn.net/tianlesoftware/archive/2010/12/19/6085529.aspx
?
?
3.2 ?Client-Side TAF 配置
?
3.2.1主機(jī)信息如下
Node1:
Hostname: node1.idc.oracle.com?
VIP Hostname: node1-vip.idc.oracle.com?
Database Service_names: service.idc.oracle.com?
SID: sid1
?
Node2:?
Hostname: node2.idc.oracle.com??
VIP Hostname: node2-vip.idc.oracle.com??
Database Service_names: service.idc.oracle.com??
SID: sid2
?
3.2.2 ?Node1配置
?
(1)修改Listener.ora文件
LISTENER_NODE1=??
(DESCRIPTION =??
?(ADDRESS_LIST =??
? (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip.idc.oracle.com)(PORT = 1521)(IP=FIRST))?? --私有IP
? (ADDRESS = (PROTOCOL = TCP)(HOST = node1.idc.oracle.com)(PORT = 1521)(IP=FIRST))???? --public IP
?)??
)?
?
(2)啟動(dòng)Listener
$ lsnrctl start LISTENER_NODE1
?
(3)修改Tnsnames.ora文件
NODE1_LOCAL=
?(ADDRESS = (PROTOCOL = TCP)(HOST=node1-vip.idc.oracle.com)(PORT = 1521))?????
?
測(cè)試:
$ tnsping node1_local
?
(4) 設(shè)置node1的local_listener參數(shù)
sql > alter system set LOCAL_LISTENER='node1_local' scope=both sid='sid1' ;
?
?
3.2.3 ?NODE2 配置
?
(1)修改Listener.ora文件
?
LISTENER_NODE2=???
(DESCRIPTION =??
?(ADDRESS_LIST =???????????
(ADDRESS=(PROTOCOL=TCP)(HOST=node2.idc.oracle.com)(PORT=1521)(IP=FIRST))??
(ADDRESS=(PROTOCOL=TCP)(HOST=node2-vip.idc.oracle.com)(PORT=1521)(IP=FIRST))??
?)??
)
?
(2)啟動(dòng)Listener
$ lsnrctl start LISTENER_NODE2
?
(3)修改Tnsnames.ora文件
NODE2_LOCAL=?
?? (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip.idc.oracle.com)(PORT = 1521))?
?
驗(yàn)證:
$ tnsping node2_local
?
?
(4)設(shè)置local_listener 參數(shù)
sql > alter system set LOCAL_LISTENER='node2_local' scope=both sid='sid2' ;
?
?
3.2.4 在node1和node2的 tnsnames.ora 文件添加如下內(nèi)容
?
NODE_REMOTE =
(DESCRIPTION =??
?(ADDRESS_LIST =??
? (ADDRESS = (PROTOCOL = TCP)(HOST=node1-vip.idc.oracle.com)(PORT = 1521))??
? (ADDRESS = (PROTOCOL = TCP)(HOST=node2-vip.idc.oracle.com)(PORT = 1521))???
?)??
)
?
測(cè)試:
$ tnsping node_remote
?
3.2.5 ?在所有節(jié)點(diǎn)設(shè)置remote listener
sql> alter system set REMOTE_LISTENER='node_remote' scope=both;
?
?
3.2.6 在客戶端設(shè)置的tnsnames.ora 設(shè)置TAF
RACTAF=
(DESCRIPTION =?
?(ADDRESS_LIST =
? (LOAD_BALANCE = yes)?
?????? (FAILOVER=ON)? -- 這個(gè)參數(shù)是默認(rèn)值,可以不寫
? (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip.idc.oracle.com)(PORT = 1521))?
? (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip.idc.oracle.com)(PORT = 1521))?
?)
?(CONNECT_DATA =?
?? (SERVICE_NAME = service.idc.oracle.com)?
?? (failover_mode=(type=select)(method=basic))?
??? )?
? )
?
?????? 當(dāng)客戶端發(fā)出連接請(qǐng)求給Server端listener的時(shí)候,通過local_listener注冊(cè)的服務(wù)接收這個(gè)連接請(qǐng)求,然后由master instance來決定這個(gè)連接請(qǐng)求應(yīng)該由哪個(gè)目標(biāo)instance發(fā)出server process響應(yīng)這個(gè)連接請(qǐng)求。如果啟用負(fù)載均衡,那么主節(jié)點(diǎn)會(huì)選擇cpu負(fù)載最小的那個(gè)instance,此時(shí):
?????? 如果master分配的目標(biāo)instance是local listener machine,那么直接通過local server listener,開啟后臺(tái)的server process,處理發(fā)出conn的客戶端,建立連接,處理會(huì)話;
????? 如果master分配的目標(biāo)instance不是local listener machine,那么會(huì)通過remote_listener這個(gè)參數(shù),把連接請(qǐng)求轉(zhuǎn)移到remote machine上的listener, 然后由remote service listener發(fā)出一個(gè)server process返回客戶端,建立連接,處理會(huì)話.
????? 當(dāng)conn建立連接以后,listener就沒有用了,不會(huì)再用到了,如果這個(gè)時(shí)候,已經(jīng)連接的那個(gè)instance down了,會(huì)重新由新分配的master instance通過remote_listener切換到可用instance,此時(shí)客戶不會(huì)發(fā)現(xiàn)連接中斷。conn 和 select操作是不會(huì)中斷的。
?
?????? 當(dāng)實(shí)例1注冊(cè)監(jiān)聽的時(shí)候,即使節(jié)點(diǎn)2的instance沒有啟動(dòng),也會(huì)通過remote_listener在節(jié)點(diǎn)2 server上注冊(cè)相應(yīng)的listener1. 它是在數(shù)據(jù)庫啟動(dòng)的時(shí)候,添加到相應(yīng)的listener service里的。
?
?
?
?
?
整理自網(wǎng)絡(luò)
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
網(wǎng)上資源: http://tianlesoftware.download.csdn.net
相關(guān)視頻:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(滿); DBA2 群:62697977(滿)
DBA3 群:62697850?? DBA 超級(jí)群:63306533;????
聊天 群:40132017
--加群需要在備注說明Oracle表空間和數(shù)據(jù)文件的關(guān)系,否則拒絕申請(qǐng)
轉(zhuǎn)載于:https://www.cnblogs.com/zlja/archive/2010/12/20/2449753.html
總結(jié)
以上是生活随笔為你收集整理的local_listener 与 remote_listener 参数说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转载]常用正则表达式
- 下一篇: 做人不能太忽悠 评淘宝团购 续集