11g RAC ORA-12545 解決方案 +11g scan IP新特性
發現問題的過程:
plsql dev連線hp機器上的RAC,連線不上
排查過程:
1、檢查tnsping
2、檢查listener
3、ping網路 通
4、防火牆 檢查了,停防火牆了
5、最終用11g scan IP新特性解決了問題
參考文章:11g RAC ORA-12545
http://blog.itpub.net/30327022/viewspace-2129013/
Oracle 11g R2 RAC高可用連線特性 – SCAN詳解
http://blog.itpub.net/196700/viewspace-773388/
資料庫環境:11.2.0.4.0
系統 版本:Red Hat Enterprise Linux Server release 6.4 (Santiago)
IP:
# Public
192.168.8.59 rac1
192.168.8.60 rac2
# Virtual
192.168.8.61 rac1-vip
192.168.8.62 rac2-vip
# Private
10.10.10.40 rac1-priv
10.10.10.50 rac2-priv
# SCAN
192.168.8.63 scan-ip
配置tnsnames.ora
rac =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = scan-ip)(PORT = 3536))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
)
)
檢查scan監聽
[grid@rac2 ~]$ srvctl status scan_listener
SCAN 監聽程式 LISTENER_SCAN1 已啟用
SCAN 監聽程式 LISTENER_SCAN1 正在節點 rac2 上執行
[grid@rac2 ~]$ srvctl config scan_listener
SCAN 監聽程式 LISTENER_SCAN1 已存在。埠: TCP:3536
伺服器本地測試正常
使用oracle client 測試,配置tnsnames.ora,配置scan-ip
rac =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.63)(PORT = 3536))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
)
)
登入sqlplus 連線
檢查如下本地連線正常
檢查RAC 節點1 配置
節點2配置
發現問題HOST 配置都是hostname,解決如下:
SQL>alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.8.61)(PORT=3536))))' scope=both sid='rac1';
SQL> alter system register;
SQL>alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.8.62)(PORT=3536))))' scope=both sid='rac2';
SQL> alter system register;
再次連線如下:
OK,完成
Oracle 11g R2 RAC高可用連線特性 – SCAN詳解 2013-09-26 10:13:51
分類: Linux
昨天幫朋友解決11g RAC SCAN問題,當時為這朋友簡單解答了一些SCAN特性相關的問題,但我知道這僅僅是一小部分。
Oracle從11g開始推出SCAN特性可不是我解答那樣簡單的,SCAN特性在Oracle RAC高可用連線裡佔據著非常重要的地位,也是以後的重點推進方向。
昨天處理完問題比較晚自己又比較累,所以沒有整理出SCAN特性相關資料,今天就抽出點時間把SCAN高可用連線特性介紹出去。
說在前頭:文章中核心內容來自官方,當然我也參考了部分前輩們整理的資料,再加以自己的理解和測試整理出的文章。
SCAN概念
先介紹一下什麼叫SCAN,SCAN(Single Client Access Name)是Oracle從11g R2開始推出的,客戶端可以透過SCAN特性負載均衡地連線到RAC資料庫。SCAN提供一個域名來訪問RAC,域名可以解析1個到3個(注意,最多3個)SCAN IP,我們可以透過DNS或者GNS來解析實現。其中DNS大家都很熟悉,這裡不多說。GNS(Grid Naming Service)則是Oracle 11g R2的新功能,可以透過DHCP服務為節點和SCAN分配VIP和SCAN IP。另外還有個優點是,對於新加入叢集的節點,它會自動分配VIP地址,更新叢集資源,客戶端依然透過SCAN特性負載均衡地連線到新增叢集節點上。DNS和GNS配置與解析相關內容在下面還有說明。
除了DNS和GNS解析方法外,SCAN也可以使用hosts檔案來解析,但用過的人都知道,此方法不僅在安裝RAC的時候產生問題,後期使用也是存在問題的,比如SCAN域名只能定義一個SCAN IP。所以這種方法也是Oracle不推薦使用的。但儘管如此,我見過很多生產上依然這樣使用,也就是廢棄了11g的新特性SCAN,而是依然採用VIP連線方式。
備註:有人可能會注意到《此方法不僅在安裝RAC的時候產生問題》這句,RAC安裝的時候的確會報錯,但這並不影響後期Oracle的使用。
SCAN最明顯的優點就是,當叢集中新增加了節點或者刪除了節點,不需要額外維護客戶端。
PUBLIC IP, PRIVATE IP, VIP, SCAN VIP, GNS VIP, LOCAL_LISTENER, REMOTE_LISTENER , LOCAL LISTENER, SCAN LISTENER
在RAC部署的時候,我們都會接觸到PUBLIC IP、PRIVATE I、VIP等等,那下面就針對它們進行介紹。
PUBLIC IP : 這是我們網路卡上配置的真實IP地址,我們稱為公共IP,這個IP的存在關係到下面介紹的VIP能不能正確漂在其所在網路卡上。注意,PUBLIC IP是不提供給客戶端去連線配置的,這並不是說透過PUBLIC IP無法連線例項,而是它會存在節點伺服器當機的時候所有向它請求的客戶端都會有等待現象並且最後得到超時資訊的缺點。
PRIVATE IP : 稱為私網IP(私有IP),它是用於心跳同步的,也就是保證兩臺伺服器資料同步。說道私網IP,我簡單說下Oracle另一個高可用性連線特性 – HAIP。其實Cache Fusion會消耗節點伺服器很大的私網資源,另外,私網間無法通訊還會引起brain split(腦裂),以前為解決這種問題,我們可以採用網路卡bonding技術,而Oracle在11g R2的時候HAIP技術來實現,HAIP(Highly Available Virtual IP)用於節點間的私網通訊,支援同時使用多個網路連線來滿足網路卡間的負載均衡,並且還提高了Cache Fusion資源通訊能力。HAIP技術並不是主要內容,所以在這裡點到為止。
VIP : RAC的每個節點都需要有一個虛擬IP,這就是VIP。VIP需要和PUBLIC IP同一個子網,它們是由GI的Clusterware來管理的。VIP在其節點伺服器發生故障的時候會自動漂移到另外正常的節點伺服器上,如果RAC是多個節點執行的,那具體漂移到哪個活動的節點將由Clusterware決定。VIP發生漂移現象之後,其當前的節點伺服器LOCAL LISTENER是不會監聽它的請求的,所以有客戶端向這個VIP傳送請求時,Clusterware的FAN會通知客戶端向別的VIP傳送請求,客戶端收到通知後透過Failover機制把請求重新傳送到ADDRESS列表中的其他VIP上。雖然有這種較複雜的過程,但始終對客戶端是透明進行的,而且這個過程完成時間非常短暫,客戶端也就幾乎感受不到有節點當機。等故障節點恢復正常,漂移的VIP也回到此節點上,繼續提供服務。
SCAN VIP : SCAN VIP就是我在剛開始常說的SCAN IP,也就是由DNS或者GNS、hosts解析出來的IP地址。上面也說過,SCAN VIP最多能有三個,它們迴圈地被客戶端所請求到。這裡大家可能會存在這樣的問題,SCAN VIP只有三個,那RAC是四節點或更多的節點情況怎麼辦?存在這種問題的原因歸咎於對SCAN VIP的瞭解不足。其實,SCAN VIP數量和節點數是沒有任何關係的,SCAN VIP會落到哪個節點上都是隨機的。
GNS VIP : GNS VIP同SCAN VIP,也是Oracle從11g R2開始提供的。GNS VIP是提供GNS服務的IP地址,它繫結到某個節點的PUBLIC IP所在網路卡上,當節點出現故障,GNS資源會自動切換到其他正常的節點繼續提供GNS解析服務。如果我們不使用GNS解析方法,那麼也不會存在GNS VIP。
LOCAL LISTENER : 本地監聽器,RAC的每個節點上都會有獨立的本地監聽器,它會監聽該節點的PUBLIC IP和VIP,而每個節點的例項在啟動的時候也向本地監聽器進行註冊,當然它也會向SCAN監聽器註冊,當VIP或者PUBLIC IP(這種情況比較少見)有連線請求的時候,本地監聽器就接受處理並和本地例項建立連線。如果某個節點故障,其上面的VIP會進行漂移,但本地監聽器並不會產生漂移。
SCAN LISTENER : SCAN監聽器,它是實現SCAN負載均衡的原理所在。如果RAC上有三個SCAN VIP,那麼SCAN監聽器也有三個,它們各自監聽SCAN VIP的連線請求。SCAN監聽器跟著SCAN VIP隨機分配到節點伺服器上,如果某個節點發生故障,執行在此節點上的SCAN VIP會進行漂移,這時候SCAN監聽器也跟著漂移到正常的節點上,繼續為SCAN VIP監聽連線請求,當PMON程式下次動態更新例項資訊到該SCAN監聽器之後,它又重新接受客戶端的連線。這和VIP產生漂移的時候是有所區別的。
LOCAL_LISTENER : 這是Oracle的引數,這個引數控制著本地監聽器的註冊,因為本地監聽器的工作機制關係,透過本地監聽器的資料庫連線請求只會連線到本地節點的例項上。
REMOTE_LISTENER : 同LOCAL_LISTENER是Oracle的引數,透過這個設定,任何例項都會向SCAN監聽器註冊,所以SCAN監聽器能夠負載均衡地分發連線請求到節點本地監聽器上,也就是連線到其本地節點上例項上。
關於LOCAL_LISTENER與REMOTE_LISTENER的配置,在下面講動態註冊的時候再看一下。
SCAN解析與配置
SCAN是在安裝GI(Grid Infrastructure)時配置的,作為Clusterware資源被管理。
忽略hosts解析之後,有兩種方式配置和解析SCAN: DNS和GNS(Grid Naming Service)。
這裡重點說一下DNS解析SCAN方式
使用DNS解析SCAN的時候,DNS伺服器會採用rr(round-robin)的方式迴圈解析為它準備的3個IP地址,與Oracle 11g R2的客戶端配合使不同的客戶端能夠連線到不同的SCAN Listener上,這相當於是Oracle 10g中配置的客戶端負載均衡(透過LOAD_BALANCE=yes配置)。
下面看一下客戶端透過SCAN連線到資料庫的過程,首先由DNS伺服器解析SCAN名稱,DNS伺服器返回SCAN對應的3個IP地址的列表,客戶端會選擇使用其中一個SCAN VIP地址作為連線地址,將命名方法解析後的連線資訊傳送到SCAN VIP對應的SCAN Listener上,SCAN Listener透過負載均衡機制再把請求轉發給比較空閒的伺服器上的本地監聽器,由本地監聽器完成例項與客戶端之間的連線。
使用SCAN連線資料庫例項,整個過程實現了客戶端的Failover(Oracle 10g R2是透過FAILOVER=on來配置),DNS伺服器返回的是一個SCAN VIP列表,客戶端會選擇其中一個連線到RAC,如果這個IP地址不能正常訪問,客戶端會選擇另一個IP地址繼續連線,直到所有的地址都不能正常連線,才返回錯誤給客戶端,整個過程對客戶端程式來說依然是透明的。
需要注意的是,使用SCAN連線到資料庫,不再需要客戶端能解析節點的PUBLIC IP和VIP,只需要客戶端能夠透過DNS伺服器正常解析SCAN就可以了。負載均衡工作交給伺服器端的SCAN實現。
至於GNS解析SCAN,因為目前GNS服務存在不穩定的情況,也很少有企業將其投入到生產環境使用,而且其工作原理也較為複雜,所以在這裡並不深入說明。
例項的動態註冊
上面已經介紹了LOCAL_LISTENER和REMOTE_LISTENER兩個和動態註冊有關的引數,那我們看看它們在資料庫中的表現形式:
本地監聽器註冊是由例項的LOCAL_LISTENER引數所控制的:
SQL> set line 150
SQL> show parameter local_listener
NAME TYPE VALUE
———————————— ———————- ——————————
local_listener string (DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=192.
168.0.194)(PORT=1521))))
– 這是我管理的一套RAC上的配置,當然我已經處理好IP地址了。
LOCAL_LISTENER設定為向本地VIP地址進行註冊,由於本地監聽器是在本地的PUBLIC IP和VIP上監聽,所以向VIP監聽註冊就能保證成功向本地監聽器註冊。
檢視本地監聽器的狀態:
[grid@pos2 ~]$ lsnrctl status listener
LSNRCTL for Linux: Version 11.2.0.3.0 – Production on 23-OCT-2012 12:01:21
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 – Production
Start Date 19-JUL-2012 15:31:45
Uptime 95 days 20 hr. 29 min. 35 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/pos2/listener/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.192)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.194)(PORT=1521)))
Services Summary…
Service "+ASM" has 1 instance(s).
Instance "+ASM2", status READY, has 1 handler(s) for this service…
Service "pos" has 1 instance(s).
Instance "pos2", status READY, has 1 handler(s) for this service…
Service "posXDB" has 1 instance(s).
Instance "pos2", status READY, has 1 handler(s) for this service…
The command completed successfully
– 這裡注意:檢視本地監聽器資訊的時候每個節點只能看到其上執行的例項。
SCAN監聽器的註冊是由REMOTE_LISTENER引數控制的,任何例項都會向所有的SCAN監聽器註冊:
SQL> show parameter remote_listener
NAME TYPE VALUE
———————————— ———————- ——————————
remote_listener string pos-cluster-scan:1521
下面是LISTENER_SCAN1的一個狀態資訊,當然你也可以檢視LISTENER_SCAN2和LISTENER_SCAN3的狀態。
[grid@pos2 ~]$ lsnrctl status listener_scan1
LSNRCTL for Linux: Version 11.2.0.3.0 – Production on 23-OCT-2012 12:06:56
Copyright (c) 1991, 2011, 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.3.0 – Production
Start Date 19-JUL-2012 15:31:45
Uptime 95 days 20 hr. 35 min. 10 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File /u01/app/11.2.0/grid/log/diag/tnslsnr/pos2/listener_scan1/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.195)(PORT=1521)))
Services Summary…
Service "pos" has 2 instance(s).
Instance "pos1", status READY, has 1 handler(s) for this service…
Instance "pos2", status READY, has 1 handler(s) for this service…
Service "posXDB" has 2 instance(s).
Instance "pos1", status READY, has 1 handler(s) for this service…
Instance "pos2", status READY, has 1 handler(s) for this service…
The command completed successfully
由於任何例項啟動都會向所有的SCAN監聽器動態註冊,從LISTENER_SCAN1的SCAN監聽器執行狀態來看,SERVICE pos包括了所有的例項名稱。
就像我昨天回答那位朋友的時候簡單說“是透過內部機制”一樣,大家可能看到上面的內容並不知道SCAN監聽器如何找到比較空閒的例項的。
其實SCAN監聽器是實時瞭解所有例項的執行情況的,因此它能夠準確地將連線重定向到空閒伺服器的本地監聽器上。
下面我們透過日誌檢視例項的動態註冊與動態更新
1)本地監聽器動態註冊日誌:
[grid@pos2 ~]$ cd $ORACLE_BASE/diag/tnslsnr/pos2/listener/alert
[grid@pos2 alert]$ grep service_register log_1.xml | head -3
18-JUN-2012 13:58:23 * service_register * LsnrAgt * 0
18-JUN-2012 13:58:30 * service_register * +ASM2 * 0
18-JUN-2012 15:54:15 * service_register * pos2 * 0
-- 之所以選擇log_1.xml歷史檔案是因為發現我的log.xml裡基本都是更新日誌,沒有註冊日誌。
2)本地監聽器動態更新日誌:
[grid@pos2 alert]$ grep service_update log.xml | head -3
16-OCT-2012 16:07:09 * service_update * pos2 * 0
16-OCT-2012 16:07:33 * service_update * pos2 * 0
16-OCT-2012 16:08:03 * service_update * pos2 * 0
3)SCAN監聽器動態註冊日誌:
[grid@rac1 ~]$ cd $ORACLE_BASE/diag/tnslsnr/rac1/listener_scan2/alert/
[grid@rac1 ~]$ grep service_register log.xml | head -3
13-AUG-2012 05:25:00 * service_register * LsnrAgt * 0
13-AUG-2012 20:29:07 * service_register * luocs1 * 0
13-AUG-2012 20:58:05 * service_register * luocs1 * 0
-- 這是我另一套測試RAC環境。
4)SCAN監聽器動態更新日誌:
[grid@rac1 ~]$ grep service_update log.xml | head -3
13-AUG-2012 20:29:19 * service_update * luocs1 * 0
13-AUG-2012 20:30:19 * service_update * luocs1 * 0
13-AUG-2012 20:30:46 * service_update * luocs1 * 0
注意,如果你的RAC是透過hosts解析了SCAN域名的,那麼系統裡就找不到上面的SCAN監聽器日誌的路徑。
例項的動態註冊和動態更新過程是由例項的PMON程式完成的,正是因為SCAN監聽器能夠實時瞭解例項的負載情況,所以SCAN監聽器能夠負載均衡地將連線請求轉發給合適例項的本地監聽器來處理。
這裡談到負載均衡,那麼就說下負載均衡中的優先順序
共享伺服器配置中:
低負載節點
低負載例項
例項相關的低負載排程器
專用伺服器配置中:
低負載節點
低負載例項
SCAN相容性配置
介紹SCAN差不多了,這裡還有個相容性問題不能不說。
要完美實現SCAN功能特性,其實對客戶端的要求也是存在的。下面看下不同版本和SCAN之間的相容性
編號
客戶端軟體版本
伺服器端軟體版本
SCAN特性的使用
1
11g R2
11g R2
能夠充分使用SCAN的特性
2
早於11g R2版本
11g R2
不能充分感受到SCAN特性
3
11g R2
早於11g R2版本
在伺服器端沒有SCAN的概念
4
早於11g R2版本
早於11g R2版本
在伺服器端沒有SCAN的概念
這裡稍微詳細說一下第2種情況,如果客戶端低於11g R2的版本,在DNS解析的3個VIP地址中,可能只能固定地使用第一個SCAN VIP連線資料庫;如果該SCAN VIP對應的監聽器出現故障,那麼整個連線將會失敗,客戶端也會收到到錯誤資訊。
那針對相容性問題我們拿出各種客戶端配置方法
1)客戶端和伺服器端軟體版本都是11g R2的時候
Tnsnames.ora
RACSCAN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = luocs-cluster-scan.grid.luocs.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = luocs10g)
)
)
2)客戶端是早於11g R2的版本,伺服器端是11g R2的時候
RACSCAN =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE=on)
(FAILOVER=on)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.193)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.194)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.195)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = luocs10g)
)
)
為了確保在早於11g R版本的客戶端負載均衡和失敗切換,我們需要在tnsnames.ora中新增3個SCAN VIP。
3)傳統的RAC客戶端配置方法
先從客戶端正常地解析伺服器所有節點的主機名稱和相應的VIP名稱,最好和服務端/etc/hosts一致。
當然,我們不解析名稱的情況下還可以使用VIP地址,比如:
LUOCSRAC =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.193)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.194)(PORT = 1521))
(LOAD_BALANCE = yes)
(FAILOVER = on)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = luocs)
)
)
本地客戶端hosts解析之後,使用名稱:
LUOCSRAC =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip.luocs.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip.luocs.com)(PORT = 1521))
(LOAD_BALANCE = yes)
(FAILOVER = on)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = luocs)
)
)
注意:傳統的客戶端配置方法其實還有多種,這個在這裡不細說。
4)JDBC字串配置
早期版本:
jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip.luocs.com)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip.luocs.com)(PORT = 1521))(LOAD_BALANCE = yes)(FAILOVER = on))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = luocs)))
11g R2:
jdbc:oracle:thin@luocs-cluster-scan:1521/luocs
注意:JDBC是不支援TAF的,所以透過JDBC連線無法實現Failover,那有沒有解決方法,我們可以使用應用的連線池來實現,也就是當連線的時候發現某些連線有故障,那自動切換到正常例項的連線。
最後我貼一下SCAN配置資訊的檢查方法和DNS、GNS方式SCAN解析例項:
首先SCAN配置資訊的檢查。
1)檢視SCAN解析的VIP地址:
[root@rac1 ~]# nslookup scan.luocs.com
Server: 192.168.77.145
Address: 192.168.77.145#53
Name: scan.luocs.com
Address: 192.168.77.197
Name: scan.luocs.com
Address: 192.168.77.195
Name: scan.luocs.com
Address: 192.168.77.196
2)檢視SCAN配置資訊:
[root@rac1 ~]# cd /u01/app/11.2.0/grid/bin
[root@rac1 bin]# ./srvctl config scan
SCAN name: scan.luocs.com, Network: 1/192.168.77.0/255.255.255.0/bond0
SCAN VIP name: scan1, IP: /scan.luocs.com/192.168.77.196
SCAN VIP name: scan2, IP: /scan.luocs.com/192.168.77.197
SCAN VIP name: scan3, IP: /scan.luocs.com/192.168.77.195
3)檢視SCAN監聽器配置資訊:
[root@rac1 bin]# ./srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
SCAN Listener LISTENER_SCAN2 exists. Port: TCP:1521
SCAN Listener LISTENER_SCAN3 exists. Port: TCP:1521
4)檢視SCAN VIP的節點分配:
[root@rac1 bin]# ./srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is running on node rac1
SCAN VIP scan2 is enabled
SCAN VIP scan2 is running on node rac2
SCAN VIP scan3 is enabled
SCAN VIP scan3 is running on node rac2
5)檢視SCAN Listener的執行節點:
[root@rac1 bin]# ./srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node rac1
SCAN Listener LISTENER_SCAN2 is enabled
SCAN listener LISTENER_SCAN2 is running on node rac2
SCAN Listener LISTENER_SCAN3 is enabled
SCAN listener LISTENER_SCAN3 is running on node rac2
DNS方式配置SCAN:
以下操作在DNS伺服器上進行:
安裝bind三個包
# rpm -ivh bind-9.3.6-4.P1.el5_4.2.x86_64.rpm
# rpm -ivh bind-chroot-9.3.6-4.P1.el5_4.2.x86_64.rpm
# rpm -ivh caching-nameserver-9.3.6-4.P1.el5_4.2.x86_64.rpm
配置主區域
# cd /var/named/chroot/etc
# cp -p named.caching-nameserver.conf named.conf
# vi named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
allow-query-cache { any; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view localhost_resolver {
match-clients { any; };
match-destinations { any; };
recursion yes;
include "/etc/named.zones";
};
# cp -p named.rfc1912.zones named.zones
# vi named.zones
zone “luocs.com" IN {
type master;
file “luocs.com.zone";
allow-update { none; };
};
zone "77.168.192.in-addr.arpa" IN {
type master;
file "77.168.192.local";
allow-update { none; };
};
# cd /var/named/chroot/var/named
# cp -p named.zero luocs.com.zone
# cp -p named.local 77.168.192.local
# vi luocs.com.zone
$TTL 86400
@ IN SOA dns.luocs.com. root.luocs.com. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS dns.luocs.com.
scan IN A 192.168.77.195
scan IN A 192.168.77.196
scan IN A 192.168.77.197
# vi 77.168.192.local
$TTL 86400
@ IN SOA dns.luocs.com. root.luocs.com. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS dns.luocs.com.
195 IN PTR scan.luocs.com.
196 IN PTR scan.luocs.com.
197 IN PTR scan.luocs.com.
# service named restart
# chkconfig named on
nslookup或dig檢查,透過檢查我們也可以判斷DNS提供rr方式:
[root@rac1 ~]# nslookup scan.luocs.com
Server: 192.168.77.145
Address: 192.168.77.145#53
Name: scan.luocs.com
Address: 192.168.77.197
Name: scan.luocs.com
Address: 192.168.77.195
Name: scan.luocs.com
Address: 192.168.77.196
[root@rac1 ~]# nslookup scan.luocs.com
Server: 192.168.77.145
Address: 192.168.77.145#53
Name: scan.luocs.com
Address: 192.168.77.196
Name: scan.luocs.com
Address: 192.168.77.197
Name: scan.luocs.com
Address: 192.168.77.195
[root@rac1 ~]# nslookup scan.luocs.com
Server: 192.168.77.145
Address: 192.168.77.145#53
Name: scan.luocs.com
Address: 192.168.77.195
Name: scan.luocs.com
Address: 192.168.77.196
Name: scan.luocs.com
Address: 192.168.77.197
然後我們在安裝GI的時候使用scan.luocs.com即可,當然要不選擇Configure GNS。
– 如果有不知道我在說什麼的朋友請嘗試一遍Oracle 11g R2 RAC的安裝。
GNS方式配置SCAN:
DNS配置部分
[root@oel1 ~]# rpm -ivh bind-9.3.6-4.P1.el5_4.2.x86_64.rpm
[root@oel1 ~]# rpm -ivh bind-chroot-9.3.6-4.P1.el5_4.2.x86_64.rpm
[root@oel1 ~]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5_4.2.x86_64.rpm
[root@oel1 ~]# cd /var/named/chroot/etc
[root@oel1 etc]# cp -p named.caching-nameserver.conf named.conf
[root@oel1 etc]# vi named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
// Those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;
allow-query { any; };
allow-query-cache { any; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view localhost_resolver {
match-clients { any; };
match-destinations { any; };
recursion yes;
include "/etc/named.zones";
};
# cp -p named.rfc1912.zones named.zones
[root@oel1 etc]# vi named.zones
zone "rac.com" IN {
type master;
file "rac.com.zone";
allow-update { none; };
};
zone "77.168.192.in-addr.arpa" IN {
type master;
file "77.168.192.local";
allow-update { none; };
};
[root@oel1 etc]# cd /var/named/chroot/var/named
# cp -p named.zero rac.com.zone
# cp -p named.local 77.168.192.local
# vi rac.com.zone
$TTL 86400
$ORIGIN rac.com.
@ IN SOA dns.rac.com. root.rac.com. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS dns.rac.com.
dns IN A 192.168.100.145
gns IN A 192.168.100.200
grid IN NS gns
$ORIGIN host.rac.com.
@ IN NS gns.rac.com.
[root@oel1 named]# vi 100.168.192.local
$TTL 86400
@ IN SOA dns.rac.com. root.rac.com. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS dns.rac.com.
145 IN PTR dns.rac.com.
200 IN PTR gns.rac.com.
~
# service named restart
# chkconfig named on
測試
[root@oel1 named]# nslookup gns-server.rac.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: gns-server.rac.com
Address: 192.168.77.95
[root@oel1 named]# nslookup 192.168.77.95
Server: 127.0.0.1
Address: 127.0.0.1#53
95.77.168.192.in-addr.arpa name = gns-server.rac.com.
DHCP配置部分
[root@oel1 ~]# yum install dhcp
[root@oel1 ~]# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
cp: overwrite `/etc/dhcpd.conf'? y
[root@oel1 ~]# vi /etc/dhcpd.conf
ddns-update-style. interim;
ignore client-updates;
subnet 192.168.77.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.77.250;
option subnet-mask 255.255.255.0;
option nis-domain "rac.com";
option domain-name "rac.com";
option domain-name-servers 192.168.77.145;
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192.168.77.193 192.168.77.199;
default-lease-time 21600;
max-lease-time 43200;
# we want the nameserver to appear at a fixed address
#host ns {
# next-server marvin.redhat.com;
# hardware ethernet 12:34:56:78:AB:CD;
# fixed-address 207.175.42.254;
#}
}
[root@oel1 ~]# service dhcpd start
[root@oel1 ~]# chkconfig dhcpd on
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28853590/viewspace-2129079/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Oracle】11g RAC ORA-12545 解決方案Oracle
- Oracle 11g修改RAC SCAN IPOracle
- Oracle 11g RAC SCAN ip的原理及配置Oracle
- 11g叢集新特性-scan機制
- 11g RAC 修改PUBLIC-IP、VIP、PRIV-IP、SCAN-IP
- Oracle 11g RAC 叢集 SCAN IP Listener說明Oracle
- Oracle 11g R2 RAC高可用連線特性 – SCAN詳解Oracle
- Oracle 11g R2 RAC高可用連線特性 – SCAN詳解(轉)Oracle
- 【RAC】11g R2 RAC新特性之Highly Available IP(HAIP)AI
- oracle 11g rac 修改VIP、scan VIP、priv IP操作文件Oracle
- Oracle 11G 修改scan_ipOracle
- ORACLE 11G RAC 訪問SCANIP ORA-12545Oracle
- Oracle 11g 新特性Oracle
- 【ORACLE新特性】11G 分割槽新特性Oracle
- RAC重建SCAN IP
- RAC 增加SCAN IP
- ORA-12545 RAC 解決
- Oracle11gR2 RAC 使用scan IP無法連線資料庫(ORA-12545)問題解決Oracle資料庫
- 11g data guard 新特性
- 11g新特性--active dataguard
- oracle 11g 的新特性Oracle
- 11G新特性:FLASHBACK ARCHIVEHive
- 客戶端使用SCNAIP連線11G RAC資料庫報錯ORA-12545解決客戶端AI資料庫
- Oracle 11g RAC通過SCAN IP連線資料庫 - JDBC連線串問題Oracle資料庫JDBC
- 11g新特性:Pending Statistics
- Oracle 11g 新特性簡介Oracle
- Oracle 11g 新特性之DRCPOracle
- 11g 新特性—— Active Database DuplicationDatabase
- Oracle 11g新特性:Result CacheOracle
- 11g新特性--result caching
- Oracle 11g 新特性(轉載)Oracle
- 11G新特性:FLASHBACK ARCHIVE - 01Hive
- 11G新特性:FLASHBACK ARCHIVE – 02Hive
- Oracle 11g新特性之SecureFilesOracle
- 11g新特性:不可視索引索引
- 11g新特性--pending statistics
- RAC改VIP和SCAN IP
- oracle 11g rac TAF 測試方案Oracle