生產環境Oracle RAC集羣測試最佳方法(支持Oracle 11g/12c/18c/19c RAC安裝後期測試過程)php
1、Oracle RAC集羣測試背景html
某中大型製造業公司,因爲要新上項目,建設了一套業務系統-ERP系統,這套系統的數據庫環境是Oracle RAC(RHEL Linux7+Oracle11gR2 RAC)架構 ,根據風哥提供的建設方案項目已經建設完成。node
這套ERP系統的RAC集羣數據庫在上線以前,咱們須要對RAC集羣作一些功能測試,這個測試方法適用於Oracle11g/12c,也適用於oracle18c/19c。sql
2、Oracle RAC集羣的介紹數據庫
在測試以前,這裏風哥給你們介紹一下Oracle RAC是什麼:Oracle 真正應用集羣技術(Oracle Real Application Cluster )是Oracle 9i及之後版本,Oracle 9i以前叫OPS集羣。Oracle RAC主要支持Oracle9i、10g、11g、12c版本(18c,19c)。 在Oracle RAC環境下,Oracle集羣提供了集羣軟件和存儲管理軟件,集羣軟件CRS/GRID,存儲管理軟件ASM(自動存儲管理),多個節點共享一份數據。服務器
ORACLE RAC架構以下:網絡
其中Oracle RAC在物理架構上,硬件設備主要包括以下部分:架構
服務器、共享存儲設備(共享存儲,光纖交換機,HBA卡,光纖線)、網絡設備(網絡交換機,光纖交換機,網線)oracle
1)服務器app
咱們稱這個服務器爲「數據庫服務器」,「數據庫主機」,在RAC的術語中咱們又稱其爲「節點」,服務器的配置應該相同,cpu,內存等。
2)網絡設備
每臺服務器上至少兩塊物理網卡,分別用於主機間私有通訊和對外公用通訊,也能夠有多快網卡,進行網卡綁定,實現網卡的冗餘。
私有通訊的網卡叫private NIC,對應的IP爲private IP。
公用通訊的網卡叫public NIC,對應的IP爲public IP。
3)共享存儲設備
共享存儲是整個RAC架構中的核心
每臺服務器至少一塊/兩塊HBA卡,用於共享存儲的鏈接。
能夠用光纖線直連存儲,也能夠經過光纖交換機,咱們建議使用光纖交換機。
RAC是一個典型的「多實例,單數據庫」架構,被全部節點共享,並行訪問。
數據庫數據文件,控制文件,參數文件,聯機重作日誌文件,甚至歸檔日誌文件都放在共享存儲
上,並保證能夠被全部節點同時訪問。IO性能要求比較高,通常用光纖線鏈接。
另外Oracle RAC還有兩種集羣模式:
Oracle RAC 同時具有HA(High Availiablity) 、LB(LoadBalance)。
1)Failover(故障轉移):
它指集羣中任何一個節點的故障都不會影響用戶的使用,鏈接到故障節點的用戶會被自動轉移到健康節點,從用戶感覺而言, 是感受不到這種切換。
2)LoadBalance(負載均衡):
就是把負載平均的分配到集羣中的各個節點,從而提升總體的吞吐能力。
3、Oracle RAC集羣功能測試
序號 | OracleRAC測試項目 | OracleRAC測試方法 | OracleRAC正確結果 | OracleRAC測試結果 |
1 | 檢查數據庫的版本和補丁 | select * from v$version; | Oracle 11/12c相應版本 | 是否正常: |
2 | 數據庫啓動和關閉 | startup | 能正常啓動和關閉 | 是否正常: |
Shutdown immediate | ||||
3 | 邏輯備份 | exp,expdp | 導出成功 | 是否正常: |
4 | 字符集 | select name,value$ from | ZHS16GBK 、 UTF8 | 是否正常: |
props$ | ||||
where name like | ||||
'%CHARACTERSET%'; | ||||
5 | 建立/刪除 | create tablespace fgedudata01 | 建立成功 | 是否正常: |
表空間 | datafile '+fgedudata1’ | 刪除成功 | ||
size 10m autoextend off; | ||||
drop tablespace fgedudata01 | ||||
including contents and files; | ||||
6 | 建立/刪除用戶 | create user fgedu identified | 建立成功 | 是否正常: |
by test default tablespace | 刪除成功 | |||
fgedudata01 temporary tablespace temp; | ||||
drop user fgedu cascade; | ||||
7 | 建立/刪除表 | create table fgedu.itpux | 建立成功 | 是否正常: |
(name varchar2(10),id number); | 刪除成功 | |||
drop table fgedu.itpux; | ||||
8 | 插入/刪除數據 | Insert into fgedu.itpux values('itpux01',’1); | 插入成功 | 是否正常: |
Commit; | 刪除成功 | |||
Delete from fgedu.itpux | ||||
Commit; | ||||
9 | 客戶端鏈接到 | sqlplus 「sys/oracle@itpuxdb as sysdba」; | 鏈接成功 | 是否正常: |
數據庫 | ||||
10 | 修改數據庫爲歸檔模式 | Alter system set db_recovery_file_dest='+dgrecover' scope=spfile; | 歸檔模式 | 是否正常: |
alter system set db_recovery_file_dest_size=200G scope=spfile; | ||||
Srvctl stop database -d fgerpdb | ||||
Sqlplus 「/as sysdba」 | ||||
Startup mount; | ||||
Alter database archivelog; | ||||
Shutdown immediate | ||||
Srvctl start database -d fgerpdb |
4、Oracle RAC集羣負載測試
序號 | OracleRAC測試內容 | OracleRAC測試方法 | OracleRAC正確結果 | OracleRAC測試結果 |
1 | 客戶端鏈接數據庫(RAC方式) | sqlplus 「sys/itpux123@itpuxdb as sysdba」; | 鏈接成功,而且每次鏈接有可能分佈到不一樣的實例上 | 是否正常: |
select instance_name from v$instance; | ||||
2 | CRS正常啓動關閉 | crsctl start crs | 能正常啓動和關閉 | 是否正常: |
crsctl stop crs | ||||
3 | 網絡鏈接中斷(public網絡) | 拔掉節點一public網卡的網線 | 本節點實例正常,vip漂移到節點二,listener,ons,network服務offline,原先鏈接到節點一的鏈接自動鏈接至節點二 | 是否正常: |
4 | 網絡鏈接恢復(public網絡) | 插回節點一public網卡的網線 | vip漂移回節點一,listener,ons,network服務自動onlien,crs資源恢復正常 | 是否正常: |
5 | 網絡鏈接中斷(private網絡) | 拔掉節點一private網卡的網線 | 節點二重啓,crs資源offline,vip漂移到節點一,原先鏈接到節點二的鏈接自動鏈接至節點1 | 是否正常: |
6 | 網絡鏈接恢復(private網絡) | 插回節點一private網卡的網線,使用crsctl start crs啓動crs | 節點二的vip漂移回節點二,節點二crs資源恢復正常 | 是否正常: |
7 | 網絡鏈接中斷(public網絡) | 拔掉節點二public網卡的網線 | 本節點實例正常,vip漂移到節點一,listener,ons,network服務offline,原先鏈接到節點二的鏈接自動鏈接至節點一 | 是否正常: |
8 | 網絡鏈接恢復(public網絡) | 插回節點二public網卡的網線 | vip漂移回節點二,listener,ons,network服務自動onlien,crs資源恢復正常 | 是否正常: |
9 | 網絡鏈接中斷(private網絡) | 拔掉節點二private網卡的網線 | 節點二重啓,crs資源offline,vip漂移到節點一,原先鏈接到節點二的鏈接自動鏈接至節點1 | 是否正常: |
10 | 網絡鏈接恢復(private網絡) | 插回節點二private網卡的網線,使用crsctl start crs啓動crs | 節點二的vip漂移回節點二,節點二crs資源恢復正常 | 是否正常: |
11 | 負載均衡 | 開啓多個數據庫鏈接 | 屢次鏈接應分佈在兩個節點 | 是否正常: |
12 | 透明故障切換 | 使用RAC的方式鏈接數據庫 | 鏈接不中斷,查詢繼續並自動切換至另外一實例 | 是否正常: |
select instance_name from v$instance; | ||||
關閉當前實例後 | ||||
select instance_name from v$instance; | ||||
13 | 正常維護,正常關閉節點1 | Crsctl stop crs | Scan vip,vip漂移到節點二,原先鏈接到節點一的鏈接自動鏈接至節點二 | 是否正常: |
14 | 正常維護,正常關閉節點2 | Crsctl stop crs | vip漂移到節點一,原先鏈接到節點二的鏈接自動鏈接至節點一 | 是否正常: |
針對測試列表中的第1點:客戶端鏈接到數據庫(RAC負載均衡測試)
Oracle 客戶端的tnsnames.ora模式以下:只須要配置scan對應的name或ip地址便可,以下所示:
最終Oracle RAC的測試效果以下:
針對測試列表中的第12點:客戶端鏈接到數據庫(RAC透明切換測試),
客戶端tnsnames.ora配置
tnsping fgerpdbtaf 測試連通性
連通ok後,再用第12點的方式測試透明故障切換
5、Oracle RAC集羣維護命令
5.1.Oracle RAC經常使用命令工具
如下內容是風哥推薦你們須要熟悉的經常使用命令,平常工做中須要常常參考來使用。