您好,登錄后才能下訂單哦!
小編給大家分享一下oracle中如何解決導出含clob字段表報錯快照過舊問題,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
導出含clob字段的表數據,報快照過舊,無法導出
該問題是因為含clob字段表數據過大導致,需要修改數據庫閃回參數解決
查看undo表空間大小是否足夠,undo_retention參數是否設置太小,一般跟undo空間無關,只需修改參數即可
目前解決辦法有兩個,加大retention或者使用pctversion
另外,對于使用MSSM表空間的表,只有pctverion可用,lob retention不可用
1、加大retention
查看undo參數
SQL> show parameter undo
--修改undo閃回參數
alter system set undo_retention=7200 scope=both;
通過查詢oracle官網,oracle的lob大字段有自己的retention參數,如果只調整undo_retention,而沒有同步到lob大字段,該參數還是默認的900s,確認查詢結果如下:
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';
修改表含有lob大字段的retention設置
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
從結果中可以看到,當顯示指定pctversion的時候,retention參數會失效
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
看完了這篇文章,相信你對“oracle中如何解決導出含clob字段表報錯快照過舊問題”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。