在导数据时,报下面错误:
C:\Users\Administrator>expdp system/oracle full=y directory=emr_bak dumpfile=WeekBak11.DMP logfile=WeekBak11.log
Export: Release 11.2.0.4.0 - Production on 星期一 4月 10 16:14:46 2023
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
启动 "SYSTEM"."SYS_EXPORT_FULL_07": system/******** full=y directory=emr_bak dumpfile=WeekBak11.DMP logfile=WeekBak11.l
og
正在使用 BLOCKS 方法进行估计...
处理对象类型 DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 29.00 GB
处理对象类型 DATABASE_EXPORT/TABLESPACE
处理对象类型 DATABASE_EXPORT/PROFILE
处理对象类型 DATABASE_EXPORT/SYS_USER/USER
。。。 。。。
处理对象类型 DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCOBJ
处理对象类型 DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCACT_SCHEMA
处理对象类型 DATABASE_EXPORT/AUDIT --此处等了3小时
ORA-31693: 表数据对象 "ZLDOC"."BZ_DOC_LOG" 无法加载/卸载并且被跳过, 错误如下:
ORA-29913: 执行 ODCIEXTTABLEPOPULATE 调出时出错
ORA-01555: 快照过旧: 回退段号 (名称为 "") 过小
ORA-22924: 快照太旧
怎么办呢
检查发现:一直在创建一个外部表ET$00D:
SQL> select event,sql_id,module from v$session where wait_class<>'Idle';
EVENT SQL_ID MODULE
------------------------------ -------------------------- --------------------
direct path read 6rg8ga126xt6s Data Pump Worker
SQL> set long 2000000
SQL> select sql_fulltext from v$sql where sql_id='6rg8ga126xt6s'
SQL_FULLTEXT
--------------------------------------------------------------------------------
CREATE TABLE "ET$00DT_2_SC("EDITLOG"), "CONTENTTEXT"
FROM RELATIONAL("ZLDOC"."BZ_DOC_LOG" NOT XMLTYPE) KU$
看来是在对ZLDOC"."BZ_DOC_LOG" 进行导出。
SQL> desc ZLDOC."BZ_DOC_LOG"
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NOT NULL RAW(16)
ACTLOG_ID RAW(16)
ANTETYPE_ID RAW(16)
TITLE VARCHAR2(80)
CONTENT XMLTYPE STORAGE BINARY
ANONYM_DATA XMLTYPE STORAGE BINARY
STATUS NUMBER(1)
CREAT_TIME DATE
CREATOR VARCHAR2(50)
EDIT_TIME DATE
EDITOR VARCHAR2(50)
LOCKED VARCHAR2(2000)
EDITLOG XMLTYPE STORAGE BINARY
AFTER_LOG_ID RAW(16)
SECRET NUMBER(1)
SEALED NUMBER(1)
LOCKED_CP VARCHAR2(2000)
LOCKED_IP VARCHAR2(20)
LOCKED_AC VARCHAR2(20)
LOCKED_SE VARCHAR2(80)
CONTENTTEXT CLOB
看来是在导大对象出错了。
SQL> show parameter undo_reten
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
undo_retention integer
900
SQL>
SQL> select table_name,column_name,segment_name,pctversion,retention,SECUREFILE,retention_type
from dba_lobs
where table_name='BZ_DOC_LOG'
and column_name='CONTENTTEXT';
TABLE_NAME COLUMN_NAME SEGMENT_NAME PCTVERSION RETENTION SECURE RETENTION_TYPE
-------------------- -------------------- ------------------------------ ---------- ---------- ------ --------------
BZ_DOC_LOG CONTENTTEXT SYS_LOB0000089148C00024$$ 900 NO YES
看来超时了。同时是BASIC LOB,不能用并行,比较慢。
先调整undo_retention
alter system set undo_retention=10800;
调整一下LOB再看看
ALTER TABLE zldoc.BZ_DOC_LOG MODIFY LOB(CONTENTTEXT)(retention);
SQL> select table_name,column_name,segment_name,pctversion,retention
from dba_lobs
where table_name='BZ_DOC_LOG'
and column_name='CONTENTTEXT';
TABLE_NAME COLUMN_NAME SEGMENT_NAME PCTVERSION RETENTION
-------------------- -------------------- ------------------------------ ---------- ----------
BZ_DOC_LOG CONTENTTEXT SYS_LOB0000089148C00024$$ 10800
再去试试。
|