ORACLE大對象LOB移動及導出操作報ORA-01555錯誤解決
導出含clob字段的表數(shù)據(jù),報快照過舊,無法導出
該問題是因為含clob字段表數(shù)據(jù)過大導致,需要修改數(shù)據(jù)庫閃回參數(shù)解決
查看undo表空間大小是否足夠,undo_retention參數(shù)是否設(shè)置太小,一般跟undo空間無關(guān),只需修改參數(shù)即可
目前解決辦法有兩個,加大retention或者使用pctversion
另外,對于使用MSSM表空間的表,只有pctverion可用,lob retention不可用
1、加大retention
查看undo參數(shù)
SQL> show parameter undo
--修改undo閃回參數(shù)
alter system set undo_retention=7200 scope=both;
通過查詢oracle官網(wǎng),oracle的lob大字段有自己的retention參數(shù),如果只調(diào)整undo_retention,而沒有同步到lob大字段,該參數(shù)還是默認的900s,確認查詢結(jié)果如下:
select table_name,column_name,pctversion,retention from dba_lobs where table_name='T_PATIENT_DOC_COLB';
select table_name,column_name,pctversion,retention from dba_lobs where table_name='T_PATIENTS_DOC_CA';
select table_name,column_name,pctversion,retention from dba_lobs where table_name='T_CARE_DOC';
修改表含有l(wèi)ob大字段的retention設(shè)置
ALTER TABLE T_PATIENT_DOC_COLB MODIFY LOB(CONTENT)(retention);
ALTER TABLE T_PATIENTS_DOC_CA MODIFY LOB(SIGN)(retention);
ALTER TABLE T_PATIENTS_DOC_CA MODIFY LOB(TIMESTAMP)(retention);
ALTER TABLE T_CARE_DOC MODIFY LOB(CARE_DOC)(retention);
2、使用pctversion
從結(jié)果中可以看到,當顯示指定pctversion的時候,retention參數(shù)會失效
SQL> alter table T_PATIENTS_DOC_CA modify lob(SIGN) (pctversion 10);
SQL> select column_name, pctversion, retention from user_lobs where table_name = 'T_PATIENTS_DOC_CA';
COLUMN_NAME PCTVERSION RETENTION
------------------------------ --------- ----------
SIGN 10
TIMESTAMP 7200
