資料泵expdp匯出遇到ORA-01555和ORA-22924問題的分析和處理
使用資料泵匯出資料庫資料時,發現如下錯誤提示:
ORA-31693: Table data object "CAMS_CORE"."BP_EXCEPTION_LOG" failed to load/unload and is being skipped due to error: ORA-02354: error in exporting/importing data ORA-01555: snapshot too old: rollback segment number with name "" too small ORA-22924: snapshot too old
1.檢視錶空間使用率
SELECT UPPER(F.TABLESPACE_NAME) AS "表空間名", D.TOT_GROOTTE_MB AS "表空間大小(M)", D.TOT_GROOTTE_MB-F.TOTAL_BYTES AS "已使用空間(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比", F.TOTAL_BYTES AS "空閒空間(M)", F.MAX_BYTES AS "最大塊(M)" FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES, ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 1;
2.看到ORA-01555錯誤,還以為是經典錯誤,嘗試調整undo_retention引數
SYS@cams>alter system set undo_retention=30000 scope=both;
修改後再次匯出,問題依舊存在,顯然問題和
undo_retention沒關係,再把引數改回去。
3.猜測是表空間有問題,這裡嘗試對 CAMS_CORE下的索引和LOB 進行表空間遷移。
(1)新建新的表空間
(2)拼接表空間遷移語句,前面已有文章寫到了表空間遷移方案
(3)執行表空間遷移語句
alter table CAMS_CORE.BP_EXCEPTION_LOG move lob(EX_STACK) store as (tablespace cams_core_lob);
執行到該語句的時候提示錯誤:
ORA-01555: 快照過舊: 回退段號 (名稱為 "") 過小 ORA-22924: 快照太舊
這裡,問題應該比較明顯了,有部分 LOB資料有問題。
4.尋找問題解決方案(MOS)
使用關鍵字 “expdp ORA-01555 ORA-22924 LOB”進行查詢:
Export Fails With Errors ORA-2354 ORA-1555 ORA-22924 And How To Confirm LOB Segment Corruption Using Export Utility (文件 ID 833635.1)
5.參考MOS給出的解決方案,動手處理問題
set concat off create table corrupted_lob_data (corrupted_rowid rowid); set concat off declare error_1555 exception; pragma exception_init(error_1555,-1555); num number; begin for cursor_lob in (select rowid r, &&lob_column from &table_owner.&table_with_lob) loop begin num := dbms_lob.instr (cursor_lob.&&lob_column, hextoraw ('889911')) ; exception when error_1555 then insert into corrupted_lob_data values (cursor_lob.r); commit; end; end loop; end; / Enter value for table_owner: EX_STACK Enter value for table_owner: CAMS_CORE Enter value for table_with_lob: BP_EXCEPTION_LOG old 6: for cursor_lob in (select rowid r, &&lob_column from &table_owner.&table_with_lob) loop new 6: for cursor_lob in (select rowid r, EX_STACK from CAMS_CORE.BP_EXCEPTION_LOG) loop old 8: num := dbms_lob.instr (cursor_lob.&&lob_column, hextoraw ('889911')) ; new 8: num := dbms_lob.instr (cursor_lob.EX_STACK, hextoraw ('889911')) ; PL/SQL procedure successfully completed.
檢視存在問題的資料記錄:
select * from CAMS_CORE.BP_EXCEPTION_LOG where rowid in ( select * from CAMS_CORE.corrupted_lob_data );
確實存在
3條資料,
CLOB
欄位資料大小為
,顯然有問題。
MOS上給出的匯出方案是將問題資料exclude掉,這裡為了徹底解決問題,將3條資料匯出為csv檔案,然後刪除。然後再次匯出資料庫資料,不再提示報錯。
6.結合應用分析問題的由來。
根據有問題的資料,讓開發人員去檢查應用日誌。檢查時發現對應時間點的應用日誌有殘缺,不能繼續往下分析。同時,根據問題發生的時間點,瞭解到當時工程師在給伺服器做遷移,結果伺服器強制重啟(應用和資料庫一起),導致了部分資料損壞。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31394774/viewspace-2214736/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料泵匯出匯入(expdp/impdp)Oracle
- Oracle expdp資料泵遠端匯出Oracle
- Oracle資料泵的匯入和匯出Oracle
- Oracle使用資料泵expdp,impdp進行資料匯出匯入Oracle
- 【資料泵】EXPDP匯出表結構(真實案例)
- 資料泵匯出匯入
- oracle10g expdp資料泵的bug,按schema匯出,匯入impdp時無jobOracle
- 工作中遇到的一些問題和處理
- 使用Exp和Expdp匯出資料的效能對比與最佳化
- oracle12c還原資料庫遇到的問題-將一個11.2.0.1的資料泵匯出檔案匯入12.1.0.2版本報錯Oracle資料庫
- 資料泵匯出時報ORA-31623、ORA-06512問題的解決
- ORA-02354 ORA-01555 ORA-22924
- Oracle 12c expdp和impdp匯出匯入表Oracle
- Oracle 12.1.0.2 expdp匯出分割槽表資料遇到BUG慢的原因和解決方法Oracle
- 匯入和匯出AWR的資料
- 使用csv批量匯入、匯出資料的需求處理
- Linux下執行資料泵expdp和impdp命令,字元轉義案例兩則Linux字元
- SQL資料庫的匯入和匯出SQL資料庫
- oracle按照表條件expdp匯出資料Oracle
- 使用資料泵(expdp、impdp)遷移資料庫流程資料庫
- Oracle資料庫的邏輯備份工具-expdp資料泵Oracle資料庫
- exp匯出報錯EXP-00106問題處理
- 資料泵匯出匯入物化檢視(ORA-39083)
- 資料處理--pandas問題
- Speed框架許可權管理開發當中遇到的問題和處理方式框架
- 使用impdp,expdp資料泵進入海量資料遷移
- 資料清洗和資料處理
- 細緻入微:如何使用資料泵匯出表的部分列資料
- 【ORA-01555】Oracle LOB欄位匯出 報錯 ORA-01555Oracle
- exp和expdp的filesize引數的使用--匯出多個檔案
- 資料泵datapump(expdp/impdp)的parfile用法,避免跳脫字元字元
- MySQL入門--匯出和匯入資料MySql
- ClickHouse 資料表匯出和匯入(qbit)
- 使用Dbeaver 進行資料的匯入和匯出
- plsql developmer 匯出資料和生成資料SQLdev
- playwright 在 Centos 的安裝和問題處理CentOS
- 關於EasyExcel的資料匯入和單sheet和多sheet匯出Excel
- VNPY2 中凌晨0點時間戳的處理問題,和夜盤資料時間戳分析時間戳