天天看點

expdp錯誤,ORA-01555: 快照過舊

/*
2020-11-03 09:44:56
錯誤資訊:
expdp備份時提示如下錯誤
ORA-31693: 表資料對象 "TEST"."TEST_DOC" 無法加載/解除安裝并且被跳過, 錯誤如下:
ORA-02354: 導出/導入資料時出錯
ORA-01555: 快照過舊: 回退段号 12 (名稱為 "_SYSSMU12_4103953449$") 過小
*/

-- 解決辦法:
-- 1、檢視undo表空間使用率
-- 檢查是否使用率過高,可以适當添加表空間資料檔案
select a.*
    , cast(a.used_gb*100.0 / a.max_gb as number(18,1)) as used_percent
from (
select tablespace_name
    , cast(sum(bytes)/1024/1024/1024 as number(18,1)) as used_gb 
    , cast(sum(maxbytes)/1024/1024/1024 as number(18,1)) as max_gb 
from dba_data_files 
where tablespace_name like '%UNDO%' 
group by tablespace_name
) a;

-- 2、檢視系統參數,适當調大 retention
show parameter undo_retention;
alter system set undo_retention = 7200;

-- 3、如果表中含有lob字段,修改 undo_retention 後,需要單獨修改表字段的 retention
select * from dba_lobs
WHERE OWNER = USER
AND TABLE_NAME LIKE '%DOC'
ORDER BY TABLE_NAME;

ALTER TABLE EHR_HEALTHRECORD_DOC MODIFY LOB(DOCCONTENT)(retention);

-- 4、批量調整表的保留時間
select 'ALTER TABLE '|| table_name ||' MODIFY LOB('|| column_name ||')(retention);'
from dba_lobs
WHERE OWNER = USER
AND TABLE_NAME LIKE '%DOC'
ORDER BY TABLE_NAME
;