記錄一下處理Oracle測試環境Datafile放在NFS上效能緩慢的問題
Problem:
測試環境Datafile放於NFS上,正式環境放於SAM Storage
AP提供問題的SQL,在測試環境跑一天出不來,正式環境則跑5分鐘
SELECT COUNT(1) FROM META_202302 WHERE TO_CHAR(PDATE, 'YYYYMMDD') = '20230215' AND BID IN ( '03722305','03732606','75988318') AND ESTATUS IN ( '1','2','3','4'); --PROD : Elapsed: 00:05:42.05 --TEST : Elapsed: 28:04:59.22
透過OEM查詢該SQL,此TABLE資料表大小約600GB,產出執行計劃為全表掃描,而此TABLE為PARTITION Table
使用OEM產生AWR報告,TOP等待第一名是 direct path read
測試UNDO FILE在NFS上的讀取速度,經測約31MB/s,懷疑是NFS的使用資源滿載,導致讀取速度下降
[oraadmin@db1a datafile]$ pwd /ORADATA_NFS/vin/VIN/datafile [oraadmin@db1a datafile]$ dd if=o1_mf_undotbs2_l7fy7ffv_.dbf of=/dev/null bs=1M 16414+0 records in 16413+0 records out 17210277888 bytes (17 GB, 16 GiB) copied, 551.143 s, 31.2 MB/s
客戶架構裡還有另一座NFS,查看資源、效能較不吃緊,經與客戶討論後,預計將Oracle Datafile移到該空間
Oracle 18c之後可線上移Datafile,無需Offline與Online
[oraadmin@db1a datafile]$ dd if=o1_mf_undotbs1_lcggc3fh_.dbf of=/dev/null bs=1M 32767+1 records in 32767+1 records out 34358697984 bytes (34 GB, 32 GiB) copied, 212.334 s, 162 MB/s
經測試後讀取有明顯上升
[oraadmin@db1a datafile]$ dd if=o1_mf_undotbs1_lcggc3fh_.dbf of=/dev/null bs=1M 32767+1 records in 32767+1 records out 34358697984 bytes (34 GB, 32 GiB) copied, 212.334 s, 162 MB/s
重新再測試相同語句
SELECT COUNT(1) FROM META_202302 WHERE TO_CHAR(PDATE, 'YYYYMMDD') = '20230215' AND BID IN ( '03722305','03732606','75988318') AND ESTATUS IN ( '1','2','3','4'); --TEST : Elapsed: 04:13:01.59
因客戶以及維護管理需求,暫時不對該SQL進行優化動作,僅以Move Datafile為此次解決方法
0 留言