1. 程式人生 > >Oracle 11G R2 RAC中的scan ip 的用途和基本原理【轉】

Oracle 11G R2 RAC中的scan ip 的用途和基本原理【轉】

partition lease 重試 方便 documents 簡單的 scrip html reserve

Oracle 11G R2 RAC增加了scan ip功能,在11.2之前,client鏈接數據庫的時候要用vip,假如你的cluster有4個節點,那麽客戶端的tnsnames.ora中就對應有四個主機vip的一個連接串,如果cluster增加了一個節點,那麽對於每個連接數據庫的客戶端都需要修改這個tnsnames.ora。

引入了scan以後,就方便了客戶端連接的一個接口,顧名思義 single client access name ,簡單客戶端連接名,這是一個唯一的名稱,在整個公司網絡內部唯一,並且在DNS中可以解析為三個ip地址,客戶端連接的時候只需要知道這個名稱,並連接即可, 每個SCAN VIP對應一個scan listener,cluster內部的service在每個scan listener上都有註冊,scan listener接受客戶端的請求,並foward到不同的Local listener中去,還是由local 的listener提供服務給客戶端。



scan只是一個名字,這個名字在DNS上解析成三個IP地址(VIP也是一個名字,也要配置一個ip地址阿)

無論cluster有多大(兩個節點或者20個節點),都只有三個scan vip,在隨機的節點上啟動(如果是兩個節點,可能三個vip在一個節點,也可能是1+2)

scan主要是簡化客戶端連接,你如果有20個節點,客戶端連接的時候,是不是需要配置20個vip,如果用scan,只需要一個scan name就行了,剩下的事情,scan幫你做了。



至於為什麽需要在dns裏註冊三個,主要是為了盡量提高可用性。
當節點數大於3時,最多也只會有3個SCAN listener,也就是說有的節點上沒有scan listener.
如果使用/etc/hosts文件解析scan ip,因為不能做輪訓的負載均衡,所以這時候scan ip就只能有一個了。



例如:

oracle 客戶端如何連接到ORACLE 11GR2 帶有DNS SCAN IP 的數據庫服務器

[grid@rac2 ~]$ srvctl config scan
SCAN name: racnode-cluster-scan.racnode.com, Network: 1/192.168.3.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /racnode-cluster-scan.racnode.com/192.168.3.231
SCAN VIP name: scan2, IP: /racnode-cluster-scan.racnode.com/192.168.3.233
SCAN VIP name: scan3, IP: /racnode-cluster-scan.racnode.com/192.168.3.232



客戶端TNSNAMES.ORA配置

RACDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = racnode-cluster-scan.racnode.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb){
) )

TNSPING 測試

客戶端網絡配置指向DNS服務器地址 192.168.3.32

C:\Documents and Settings\Administrator>tnsping racdb

TNS Ping Utility for 32-bit Windows: Version 11.1.0.7.0 - Production on 20-7月 -2010 18:53:50

Copyright (c) 1997, 2008, Oracle. All rights reserved.

已使用的參數文件:
D:\app\Administrator\product\11.1.0\db_1\network\admin\sqlnet.ora

已使用 TNSNAMES 適配器來解析別名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = racnode-cluster-scan.racnode.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = racdb)))
OK (80 毫秒)

客戶端連接

C:\Documents and Settings\Administrator>sqlplussystem/abcdefg@racdb

SQL*Plus: Release 11.1.0.7.0 - Production on 星期二 7月 20 18:46:15 2010

Copyright (c) 1982, 2008, Oracle. All rights reserved.
連接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management
OLAP,
Data Mining and Real Application Testing options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
racdb2

SQL> exit

scan與vip的區別

這種方式看起來挺好,但是,如果對於大型局域網,客戶端有成百上千個,而且分布在各個地方,原本簡單的事就不簡單了。scan ip就是針對這一問題出現的,它是在服務器端和客戶端之間建立一層虛擬訪問層,客戶端的tnsnames中只有scan ip的偵聽信息,即客戶端直接訪問scan ip而不直接訪問真實的服務器ip。而scan ip是浮動的,它和節點本身的vip的區別就在於,vip的監聽程序是跟instance綁定的,設置vip的作用是,當節點宕機之後,vip會自動的跳到正常節點上,但是vip對應的監聽程序並不會跳轉,本來,如果不使用vip的話,原本連接到宕機節點上的程序就會得不到服務器回應,然後等待連接超時的時候走完,客戶端再重試,重試一定次數仍然失敗才會轉到其他節點上,這個過程就相當耗時了。若果使用vip的話,節點宕機之後vip跳到正常節點上,原本訪問宕機節點的程序請求就發送到了vip跳轉的節點,該正常節點收到連接請求後直接給該端點返回錯誤信息,告知它原本訪問的節點已經壞掉了,這是客戶端就會使用tns中的其他地址。這個時間相對於不適用vip的時間要小很多。

而scan ip機制是ip跟對應的監聽程序一起浮動,如果a節點宕機,則原本停留在該節點的scan ip和監聽程序會一起跳轉到其他可用節點上。因此對於客戶端而言,就不需要更改原本的配置信息,只需要一直訪問scan ip就可以正常使用數據庫,至於scan ip跟真實的節點的對應關系,則是scan ip這層要關心和實現的

轉自

Oracle 11G R2 RAC中的scan ip 的用途和基本原理-aaron8219-ChinaUnix博客
http://blog.chinaunix.net/uid-24612962-id-3847628.html

對scan ip的理解 - CSDN博客
http://blog.csdn.net/jx_jy/article/details/11889901

Oracle RAC的VIP和SCAN IP - Virson Ma - 博客園
http://www.cnblogs.com/mawanglin2008/articles/3472395.html

Oracle 11G R2 RAC中的scan ip 的用途和基本原理【轉】