共计 749 个字符,预计需要花费 2 分钟才能阅读完成。
问题描述
同事反应 Oracle 数据库在使用数据泵导出时,导出报 UDE-31623、ORA-31623、ORA-06512,大致如下:
告警日志信息大致如下:
处理过程
(1)第一步,我以为是 streams pool size 不足或者是 sga 分配不足导致的,查询后发现 sga 分配了 64G,同时 streams pool size = 256M;故内存分配不足的问题呗排除了;
(2)第二步,根据 MOS 文档 (文档 ID 1907256.1) 来逐一排查,均排除了因对象失效等原因;
(3)第三步,在排查 dba_datapump_jobs 视图时,发现里面有 340 多个终止任务,这个失败的数量令我吃惊,因为正常情况下这个视图下不会有这么多被终止的任务,于是尝试清理这些失败任务:
SELECT o.status,
o.object_id,
o.object_type,
o.owner || ‘.’ || object_name “OWNER.OBJECT”
FROM dba_objects o, dba_datapump_jobs j
WHERE o.owner = j.owner_name
AND o.object_name = j.job_name
AND j.job_name NOT LIKE ‘BIN$%’
ORDER BY 4, 2;
根据查询出来的对象,我们使用 drop table XXX purge 进行逐一删除,也可以通过脚本进行批量删除;待所有的被终止的对象删除之后,再次尝试数据泵导出,惊喜地发现已经可以 正常导出了。
总结
由此可见,此次故障的原因是 dba_datapump_jobs 里面的被终止对象太多,我们将其删除后,问题即可得到解决。
更多 Oracle 相关信息见Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12
: