記一次expdp匯出任務中某張大表報錯問題的解決過程
問題現象:
解決過程Level1:
1. 出現ORA-01555錯誤,通常有2種情況:
(1)SQL語句執行時間太長,或者UNDO表空間過小,或者事務量過大,或者過於頻繁的提交,導致執行SQL過程中進行一致性讀時,SQL執行後修改的前映象(即UNDO資料)在UNDO表空間中已經被覆蓋,不能構造一致性讀塊(CR blocks)。 這種情況最多。
(2)SQL語句執行過程中,訪問到的塊,在進行延遲塊清除時,不能確定該塊的事務提交時間與SQL執行開始時間的先後次序。 這種情況很少。
2. 第1種情況解決的辦法:
(1)增加UNDO表空間大小
(2)增加undo_retention 時間,預設只有15分鐘
資料庫undo表空間使用率極低,將undo_retention由預設的900秒調整到5400秒,報錯解決。
解決過程Level2:
一張不到10G的表,匯出耗時了一小時還多,肯定是有異常的,決定深挖這個問題。執行了單表資料泵匯出,發現耗時為1小時(多次執行誤差在5分鐘內),執行以下sql進行具體分析:
select count(*),avg(time_waited)/1000,event,program,blocking_session from v$active_session_history where sample_time between to_date('2021-02-19 08:30','yyyy-mm-dd hh24:mi) and to_date('2021-02-19 09:45','yyyy-mm-dd hh24:mi) and blocking_session is not null group by event,program order by 2
發現事件裡面有報記憶體不足,遂調整stream pool大小,由64m增加到128m,再次執行單表資料泵匯出,發現耗時減少至50分鐘左右。
解決過程Level3:
一張不到10G的表,匯出耗時近1一小時,肯定依舊存在問題,繼續挖!
目標轉移至系統備庫,測試同樣的表匯出耗時,不測不知道一測嚇一跳,相同效能相同資料量的備庫,同樣的表匯出只用了5分鐘,主備庫差異主要為主庫執行著系統程式,備庫什麼程式都沒跑,遂找到視窗期將主庫所有連庫程式停掉,再次測試,發現耗時縮短至40分鐘,有改善,但根源問題依舊沒有解決!
解決過程Level4:
分析主備庫AWR報告,發現執行資料泵匯出時段,效能差異主要區別在IO上,主庫比備庫多出了太多的IO讀寫操作,好了,此刻似乎可以帥鍋給作業系統了,硬體問題、作業系統安裝問題、作業系統配置問題……總之就是跟我資料庫沒有關係了。
解決過程Level5:
本著根源挖到底的原則,繼續查閱資料,發現有如下概念會影響IO:行遷移(參考連結:
https://blog.csdn.net/hotye393/article/details/6226471)
主備庫依次執行以下操作:@/home/oracle/product/11.2.0/rdbms/admin/utlchain.sql
analyze table ***.************ list chained rows;
比對結果數量:select count(*) from chained_rows,最終發現根源原因,主庫比備庫多出了近十倍的行遷移!!!
問題根源找到了,解決方法就水到渠成了:
-
alter table ***.******** move nologging parallel 4;
-
alter table ***.******** logging noparallel;
-
select index_name from dba_indexes where table_name='*******';
-
alter index ***.******** rebuild;
表匯出耗時2分鐘,已超越備庫,至此問題得到徹底解決!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994536/viewspace-2758184/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 終止expdp正在執行中的匯出任務
- 記一次 Composer 問題的解決過程!!
- 詳細記錄一次npm i canvas報錯的解決過程NPMCanvas
- 一次線上問題的排查解決過程
- 記一次wordpress安裝過程中遇到的問題及解決辦法
- 記一次 oracle expdp 匯出錯誤Oracle
- 一次sqlldr匯入慢的解決過程SQL
- 記一次記憶體溢位問題的排查、分析過程及解決思路記憶體溢位
- munium學習過程中問題解決
- 解決儲存過程擷取錯誤的問題儲存過程
- MYSQL 匯出資料庫中某張表的部分數…MySql資料庫
- 記一次專案中解決 -- 併發減庫存超賣問題過程(Java)Java
- 記一次OOM問題排查過程OOM
- 一次oracle 11g 資料泵 報錯 的解決過程Oracle
- 什麼是大報表?如何解決大報表的問題?
- oracle 10g expdp匯出報錯ora-4031的解決方法Oracle 10g
- 若依框架匯入阿里OSS報錯問題解決方案框架阿里
- 【mysql】配置MySQL,解決安裝過程中的問題MySql
- 一次DG搭建過程中碰到的問題
- expdp over nfs 問題解決NFS
- 快取過程存在的三大問題及解決方案快取
- 記一次使用 Windows 除錯套件 gflags 解決 CefSharp 載入報錯資訊模糊的問題Windows除錯套件
- mysqldump 備份匯出資料排除某張表或多張表MySql
- 記一次線上崩潰問題的排查過程
- 分享一次分析/解決支付應用效能問題的全過程
- 解決 Inkscape 報錯 Duplicate 問題
- 記錄解決HttpServletResponse在引數報錯的問題HTTPServlet
- 記錄一次解決服務請求的跨域問題跨域
- 一次線上問題處理過程記錄
- 測試平臺-記一次不成功的 RF 遠端庫問題解決過程
- 設定autotrace的報錯問題解決
- 一個lua問題解決過程
- 轉:Oracle 臨時表空間過大問題解決Oracle
- HBase一次慢查詢請求的問題排查與解決過程
- expdp/impdp來解決exp/imp出現的錯誤並匯入指定表空間
- 安裝sysbench過程報錯,解決辦法
- 記一次記憶體佔用問題的調查過程記憶體
- expdp 全庫匯入報錯總結