Oracle 12C执行expdp全库导出失败,请求技术排查
问题与解决方法
执行的导出命令
expdp SHELAZ/SHELAZ full=Y directory=dpump_dir dumpfile=SHELAZ20221215.dmp logfile=logfile.log
报错信息(中文翻译)
已连接到: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
带有分区、OLAP、高级分析和实时应用测试选项ORA-31626: 作业不存在
ORA-31633: 无法创建主表 "SHELAZ.SYS_EXPORT_FULL_90"
ORA-06512: 在 "SYS.DBMS_SYS_ERROR" 第 95 行
ORA-06512: 在 "SYS.KUPV$FT" 第 1048 行
ORA-01658: 无法在表空间 SHELAZDISTDATA 中为段创建初始区
查询结果
执行查询语句:select * from dba_datapump_jobs
返回85条记录,所有作业状态均为未运行(NOT RUNNING)
解决步骤
1. 清理残留的Data Pump作业
大量未运行的残留作业可能导致命名冲突或资源占用,需清理:
- 方式一:通过PL/SQL停止并删除作业
DECLARE v_jobname VARCHAR2(100); CURSOR c_jobs IS SELECT job_name FROM dba_datapump_jobs WHERE state = 'NOT RUNNING' AND owner = 'SHELAZ'; BEGIN OPEN c_jobs; LOOP FETCH c_jobs INTO v_jobname; EXIT WHEN c_jobs%NOTFOUND; DBMS_DATAPUMP.STOP_JOB(DBMS_DATAPUMP.ATTACH(v_jobname, 'SHELAZ')); DBMS_DATAPUMP.DETACH(v_jobname); END LOOP; CLOSE c_jobs; END; / - 方式二:直接删除对应的主表(确认作业无用时使用)
DROP TABLE SHELAZ.SYS_EXPORT_FULL_90 PURGE; -- 若存在其他SYS_EXPORT_FULL_xx格式的残留主表,可同理删除
2. 解决表空间空间不足问题
核心错误ORA-01658表明表空间SHELAZDISTDATA无足够空间创建初始段,可通过以下方式处理:
- 添加新数据文件并开启自动扩展
ALTER TABLESPACE SHELAZDISTDATA ADD DATAFILE '/oradata/new_shelazdistdata.dbf' SIZE 100M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED; - 扩展现有数据文件
-- 调整现有数据文件大小 ALTER DATABASE DATAFILE '/oradata/existing_shelazdistdata.dbf' RESIZE 500M; -- 开启自动扩展 ALTER DATABASE DATAFILE '/oradata/existing_shelazdistdata.dbf' AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;
3. 重新执行导出命令
完成上述操作后,重新运行初始的expdp命令即可。
内容的提问来源于stack exchange,提问作者Shelton Tapiwanashe Ndindana
相关产品推荐
相关产品推荐

