11g叢集新特性-scan機制
11g叢集新特性-scan機制
關於11g叢集跟10g有過一定的變化,雖然主要的叢集件原理相同,不過關於叢集的安裝由原來的clusterware叢集見改為GI,而asm則被封裝到GI中,不像10g時asm是被封裝到oracle database軟體中,關於叢集的管理也有些變化,例如叢集命令更加多了,用grid使用者來管理叢集和asm,而oracle使用者就只需要管理oracle database,asm上的工具變化也較多,出現了卷形式的asm檔案系統acfs,ohasd程式來管理原來的ocssd,crsd,evmd程式等,總之11g的叢集確實有一些新的特性和變化,來新公司工作一個多月了,算是基本穩定了,下半年需要花點時間研究o的東西了。
這裡小魚主要學習下11g GI中比較顯著的特點scan ip,scan(Single Client Access Name)的思想主要是在客戶端和伺服器端新增一個虛擬的服務層,就是所謂的scan ip以及scan ip listener,在客戶端僅僅只需要配置scan ip的tns資訊,然後用資料庫叢集的scan ip listener連線到資料庫叢集,scan ip listener轉發連線請求到local listener上。
簡單來講就是以前在10g環境下透過vip連線到叢集的各個節點,現在中間又多了一層scan ip listener,scan ip listener會先接收客戶端的scan ip請求,然後轉發到各個本地的local listener,無疑如果叢集環境做出變更,例如增加刪除節點都不會對scan ip和scan ip listener有影響,此時無需去更改客戶端的配置。
需要注意的是scan按照o的建議需要三個scan ip和三個scan ip listener來實現scan特性的負載均衡和故障切換,當然那種情況我們需要dns服務或者Grid Naming Server(GNS)實現,這裡由於小魚只分配一個scan ip,也就沒有配置dns或者gns來顯示scan ip的負載均衡和故障切換了,這個並不影響scan的原理。
[oracle@rac101 admin]$ cat /etc/hosts
192.168.56.165 rac101
192.168.56.166 rac102
10.10.0.11 rac101-priv
10.10.0.12 rac102-priv
192.168.56.11 rac101-vip
192.168.56.12 rac102-vip
192.168.56.215 racscan
這個測試庫的scan ip和scan ip listener是載入到rac101節點上的。
[root@rac101 ~]# crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ACFS.dg
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.ASMDATA.dg
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.DATA.dg
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.LISTENER.lsnr
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.asm
ONLINE ONLINE rac101 Started
ONLINE ONLINE rac102 Started
ora.eons
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.gsd
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.net1.network
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.ons
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.registry.acfs
ONLINE ONLINE rac101
ONLINE ONLINE rac102
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac101
ora.oc4j
1 ONLINE ONLINE rac101
ora.rac101.vip
1 ONLINE ONLINE rac101
ora.rac102.vip
1 ONLINE ONLINE rac102
ora.scan1.vip
1 ONLINE ONLINE rac101
ora.xiaoyu.db
1 ONLINE ONLINE rac101 Open
2 ONLINE ONLINE rac102 Open
檢視程式:
[root@rac101 ~]# ps -ef|grep lsn
grid 3587 1 0 03:23 ? 00:00:00 /db/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid 3590 1 0 03:23 ? 00:00:00 /db/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
root 12861 12680 0 06:10 pts/2 00:00:00 grep lsn
[root@rac102 ~]# ps -ef|grep lsn
grid 4263 1 0 03:24 ? 00:00:00 /db/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
root 11926 11853 0 06:11 pts/1 00:00:00 grep lsn
注意上面的scan ip listener的使用者宿主是grid使用者,這裡需要特別注意的,接下來看看這個scan ip listener上面註冊了哪些服務。
[grid@rac101 ~]$ lsnrctl status LISTENER_SCAN1
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 08-JUL-2013 21:20:00
Copyright (c) 1991, 2009, 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.1.0 - Production
Start Date 08-JUL-2013 21:05:36
Uptime 0 days 0 hr. 14 min. 27 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /db/app/11.2.0/grid/network/admin/listener.ora
Listener Log File /db/app/11.2.0/grid/log/diag/tnslsnr/rac101/listener_scan1/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.215)(PORT=1521)))
Services Summary...
Service "xiaoyu" has 2 instance(s).
Instance "xiaoyu1", status READY, has 1 handler(s) for this service...
Instance "xiaoyu2", status READY, has 1 handler(s) for this service...
Service "xiaoyuXDB" has 2 instance(s).
Instance "xiaoyu1", status READY, has 1 handler(s) for this service...
Instance "xiaoyu2", status READY, has 1 handler(s) for this service...
The command completed successfully
這裡我們發現這個scan ip listener上面註冊了service xiaoyu服務,而這個服務下裝載了兩個instance xiaoyu1和xiaoyu2,這裡也就說明了如果透過scan ip listener的xiaoyu服務去連線資料庫有可能會把這個服務會把這個連線漂移到不同的instance中,還有需要注意的是這個scan ip listen接受的僅僅只有scan ip 192.168.56.215的請求服務。
透過上面的描述我們基本知道了scan ip和scan ip listener特性及其在scan機制中發揮的作用,接下來我們看看11g下scan機制來實現負載均衡和TAF。
負載均衡:由於scan的機制特性會將連線對映到本地的local listener上面的,scan機制需要初始化引數檔案中的引數remote_listener,如果這個引數配置錯誤會影響scan ip listener無法去監聽scan ip的請求。
SQL> show parameter remote_listener;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_listener string racscan:1521
remote_listener引數預設取值就是scan_name:1521,這裡也就是racscan:1521,我們也不需要去配置remote_listener來實現負載均衡。
Load_balance的測試用例:
SQL> conn sy/oracle@192.168.56.215:1521/oracle
Connected.
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
db2
SQL> conn xiaoyu/xiaoyu@192.168.56.215:1521/xiaoyu;
Connected.
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
db1
透過上面的看出透過scan ip可能會隨機連線到不同的節點。
TAF切換:關於client side的failover這裡由於比較簡單就不演示了,client side的failover會根據連線的tns的address列表連線在建立連線時就會做出failover的選擇,選擇一個可用的連線。
接下來要測試的是TAF(transaction application failover)切換,首先我們需要在客戶端進行配置TAF的tns連結檔案。
列出利用scan特性來連線叢集的tnsnames.ora檔案
[oracle@rac101 admin]$ less tnsnames.ora
db =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = racscan)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = xiaoyu)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 8)
(DELAY = 5)
)
)
)
看出這裡的 (ADDRESS = (PROTOCOL = TCP)(HOST = racscan)(PORT = 1521))這裡用的是racscan,也就是scan ip地址.
測試TAF:
SQL> conn sys/oracle@db;
Connected.
SQL> select FAILOVER_TYPE,FAILOVER_METHOD,inst_id from gv$session where sid in (select userenv('sid') from dual);
FAILOVER_TYPE FAILOVER_M INST_ID
------------- ---------- ----------
SELECT BASIC 1
關閉節點1的例項xiaoyu1
[oracle@rac101 ~]$ srvctl stop instance -d db -i db1
此時這個session依然還在連線,不過已經透過scan 漂移到及節點2例項xiaoyu2上面。
SQL> select * from dual;
D
-
X
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
db2
關於11g叢集跟10g有過一定的變化,雖然主要的叢集件原理相同,不過關於叢集的安裝由原來的clusterware叢集見改為GI,而asm則被封裝到GI中,不像10g時asm是被封裝到oracle database軟體中,關於叢集的管理也有些變化,例如叢集命令更加多了,用grid使用者來管理叢集和asm,而oracle使用者就只需要管理oracle database,asm上的工具變化也較多,出現了卷形式的asm檔案系統acfs,ohasd程式來管理原來的ocssd,crsd,evmd程式等,總之11g的叢集確實有一些新的特性和變化,來新公司工作一個多月了,算是基本穩定了,下半年需要花點時間研究o的東西了。
這裡小魚主要學習下11g GI中比較顯著的特點scan ip,scan(Single Client Access Name)的思想主要是在客戶端和伺服器端新增一個虛擬的服務層,就是所謂的scan ip以及scan ip listener,在客戶端僅僅只需要配置scan ip的tns資訊,然後用資料庫叢集的scan ip listener連線到資料庫叢集,scan ip listener轉發連線請求到local listener上。
簡單來講就是以前在10g環境下透過vip連線到叢集的各個節點,現在中間又多了一層scan ip listener,scan ip listener會先接收客戶端的scan ip請求,然後轉發到各個本地的local listener,無疑如果叢集環境做出變更,例如增加刪除節點都不會對scan ip和scan ip listener有影響,此時無需去更改客戶端的配置。
需要注意的是scan按照o的建議需要三個scan ip和三個scan ip listener來實現scan特性的負載均衡和故障切換,當然那種情況我們需要dns服務或者Grid Naming Server(GNS)實現,這裡由於小魚只分配一個scan ip,也就沒有配置dns或者gns來顯示scan ip的負載均衡和故障切換了,這個並不影響scan的原理。
[oracle@rac101 admin]$ cat /etc/hosts
192.168.56.165 rac101
192.168.56.166 rac102
10.10.0.11 rac101-priv
10.10.0.12 rac102-priv
192.168.56.11 rac101-vip
192.168.56.12 rac102-vip
192.168.56.215 racscan
這個測試庫的scan ip和scan ip listener是載入到rac101節點上的。
[root@rac101 ~]# crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ACFS.dg
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.ASMDATA.dg
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.DATA.dg
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.LISTENER.lsnr
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.asm
ONLINE ONLINE rac101 Started
ONLINE ONLINE rac102 Started
ora.eons
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.gsd
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.net1.network
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.ons
ONLINE ONLINE rac101
ONLINE ONLINE rac102
ora.registry.acfs
ONLINE ONLINE rac101
ONLINE ONLINE rac102
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac101
ora.oc4j
1 ONLINE ONLINE rac101
ora.rac101.vip
1 ONLINE ONLINE rac101
ora.rac102.vip
1 ONLINE ONLINE rac102
ora.scan1.vip
1 ONLINE ONLINE rac101
ora.xiaoyu.db
1 ONLINE ONLINE rac101 Open
2 ONLINE ONLINE rac102 Open
檢視程式:
[root@rac101 ~]# ps -ef|grep lsn
grid 3587 1 0 03:23 ? 00:00:00 /db/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid 3590 1 0 03:23 ? 00:00:00 /db/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
root 12861 12680 0 06:10 pts/2 00:00:00 grep lsn
[root@rac102 ~]# ps -ef|grep lsn
grid 4263 1 0 03:24 ? 00:00:00 /db/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
root 11926 11853 0 06:11 pts/1 00:00:00 grep lsn
注意上面的scan ip listener的使用者宿主是grid使用者,這裡需要特別注意的,接下來看看這個scan ip listener上面註冊了哪些服務。
[grid@rac101 ~]$ lsnrctl status LISTENER_SCAN1
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 08-JUL-2013 21:20:00
Copyright (c) 1991, 2009, 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.1.0 - Production
Start Date 08-JUL-2013 21:05:36
Uptime 0 days 0 hr. 14 min. 27 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /db/app/11.2.0/grid/network/admin/listener.ora
Listener Log File /db/app/11.2.0/grid/log/diag/tnslsnr/rac101/listener_scan1/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.215)(PORT=1521)))
Services Summary...
Service "xiaoyu" has 2 instance(s).
Instance "xiaoyu1", status READY, has 1 handler(s) for this service...
Instance "xiaoyu2", status READY, has 1 handler(s) for this service...
Service "xiaoyuXDB" has 2 instance(s).
Instance "xiaoyu1", status READY, has 1 handler(s) for this service...
Instance "xiaoyu2", status READY, has 1 handler(s) for this service...
The command completed successfully
這裡我們發現這個scan ip listener上面註冊了service xiaoyu服務,而這個服務下裝載了兩個instance xiaoyu1和xiaoyu2,這裡也就說明了如果透過scan ip listener的xiaoyu服務去連線資料庫有可能會把這個服務會把這個連線漂移到不同的instance中,還有需要注意的是這個scan ip listen接受的僅僅只有scan ip 192.168.56.215的請求服務。
透過上面的描述我們基本知道了scan ip和scan ip listener特性及其在scan機制中發揮的作用,接下來我們看看11g下scan機制來實現負載均衡和TAF。
負載均衡:由於scan的機制特性會將連線對映到本地的local listener上面的,scan機制需要初始化引數檔案中的引數remote_listener,如果這個引數配置錯誤會影響scan ip listener無法去監聽scan ip的請求。
SQL> show parameter remote_listener;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_listener string racscan:1521
remote_listener引數預設取值就是scan_name:1521,這裡也就是racscan:1521,我們也不需要去配置remote_listener來實現負載均衡。
Load_balance的測試用例:
SQL> conn sy/oracle@192.168.56.215:1521/oracle
Connected.
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
db2
SQL> conn xiaoyu/xiaoyu@192.168.56.215:1521/xiaoyu;
Connected.
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
db1
透過上面的看出透過scan ip可能會隨機連線到不同的節點。
TAF切換:關於client side的failover這裡由於比較簡單就不演示了,client side的failover會根據連線的tns的address列表連線在建立連線時就會做出failover的選擇,選擇一個可用的連線。
接下來要測試的是TAF(transaction application failover)切換,首先我們需要在客戶端進行配置TAF的tns連結檔案。
列出利用scan特性來連線叢集的tnsnames.ora檔案
[oracle@rac101 admin]$ less tnsnames.ora
db =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = racscan)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = xiaoyu)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 8)
(DELAY = 5)
)
)
)
看出這裡的 (ADDRESS = (PROTOCOL = TCP)(HOST = racscan)(PORT = 1521))這裡用的是racscan,也就是scan ip地址.
測試TAF:
SQL> conn sys/oracle@db;
Connected.
SQL> select FAILOVER_TYPE,FAILOVER_METHOD,inst_id from gv$session where sid in (select userenv('sid') from dual);
FAILOVER_TYPE FAILOVER_M INST_ID
------------- ---------- ----------
SELECT BASIC 1
關閉節點1的例項xiaoyu1
[oracle@rac101 ~]$ srvctl stop instance -d db -i db1
此時這個session依然還在連線,不過已經透過scan 漂移到及節點2例項xiaoyu2上面。
SQL> select * from dual;
D
-
X
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
db2
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29065182/viewspace-1104215/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g RAC 叢集 SCAN IP Listener說明Oracle
- 11g RAC ORA-12545 解決方案 +11g scan IP新特性
- 11g新特性之結果集快取快取
- 主從庫與切片叢集機制
- 【ORACLE新特性】11G 分割槽新特性Oracle
- Dubbo原始碼分析(八)叢集容錯機制原始碼
- Oracle 11g 新特性Oracle
- redis安裝,主從複製,哨兵機制,叢集Redis
- mongoDB研究筆記:分片叢集的工作機制MongoDB筆記
- 崖山資料庫的共享叢集機制初探資料庫
- 11g data guard 新特性
- 11g新特性--active dataguard
- oracle 11g 的新特性Oracle
- 11G新特性:FLASHBACK ARCHIVEHive
- RHEL 7特性說明(六):叢集
- 崑崙分散式資料庫儲存叢集 Fullsync 機制分散式資料庫
- oracle 11g rac 叢集操作命令Oracle
- 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
- 計算機叢集計算機
- 特性更新!DistSQL 叢集治理能力詳解SQL
- 搭建高可用MongoDB叢集(三):深入副本集內部機制MongoDB
- 沃趣微講堂 | Oracle叢集技術(五):叢集中的三種心跳機制Oracle
- Oracle 11g R2 RAC高可用連線特性 – SCAN詳解Oracle
- oracle DG 11g新特性彙總Oracle
- ORACLE 11G新特性之列新增操作Oracle
- 【11g新特性】(I/O calibration)
- Oracle 11g 新特性 -- SecureFiles 說明Oracle