حل خطاهای ORA-31693,ORA-02354,ORA-01555 موقع گرفتن Full Export از دیتابیس
یکی از دیتابیسها (ورژن 12.2.0.1) موقع Full EXPDP با خطای زیر مواجه میشد:
ORA-31693: Table data object "USER1"."BC_DRAFT" 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 17 with name "_SYSSMU17_1955885910$" too small
برای حل این مشکل کارهای زیر انجام گرفت:
- پیداکردن مقدار فعلی پارامتر undo_retention
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_retention integer 4107
- پیدا کردن زمان اجرای طولانی ترین کوئری در دیتابیس
SQL> select max(maxquerylen) from v$undostat;
MAX(MAXQUERYLEN)
----------------
18695
- تغییر دادن پارامتر undo_retention بر اساس زمان اجرای طولانی ترین کوئری در دیتابیس
SQL> alter system set undo_retention=20000 scope=both;
- چون این جدول که با خطا مواجه شده، دارای ستونهای از نوع lob هم هست، مقدار retention آن ستونها نیز باید افزایش پیدا کند.
select column_name,retention
from dba_lobs
where owner='USER1'
and table_name='BC_DRAFT';
select 'alter table PARGAR.BC_DRAFT_BODY modify lob('||column_name||') (pctversion 5);'
from dba_lobs
where owner='USER1'
and table_name='BC_DRAFT';
select 'alter table PARGAR.BC_DRAFT_BODY modify lob('||column_name||') (retention);'
from dba_lobs
where owner='USER1'
and table_name='BC_DRAFT';
- ۹۹/۰۸/۱۴