重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2715|回复: 0
打印 上一主题 下一主题

[Oracle] ORA-20011 ORA-29913 and ORA-29400 with Associated KUP-XXXXX

[复制链接]
跳转到指定楼层
楼主
发表于 2020-10-25 15:27:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

报错信息

ORA-20011: Approximate NDV failed: ORA-29913: error in executing ODCIEXTTABLEOPEN callout

ORA-29400: data cartridge error

1.首先检查alert.log.

ORA-20011: Approximate NDV failed: ORA-29913: error in executing ODCIEXTTABLEOPEN callout

ORA-29400: data cartridge error

KUP-04040: file alert_orcl1.log in DIRALERT not found

这些情况下通常以下症状:DBMS_STATS正在执行某种形式ora - 20011, ora - 29913和ora - 29400错误,ora - 29913指定外部函数“ODCIEXTTABLEOPEN”表示有一个错误的callout外部函数“ODCIEXTTABLEOPEN”在试图打开一个外部表。

这个问题的主要原因是“外部表”的操作系统文件曾经存在过,但现在没有。但是,数据库仍然认为表的操作系统文件存在,因为关于对象的字典信息没有被修改以反映更改。当DBMS_STATS针对相关表运行时,它会调用外部表,但由于对象不在那里,所以调用失败。外部表可能不存在的原因有很多,包括:临时数据池外部表没有被正确地清理。当数据ump作业完成时,字典信息应该已经被删除。外部表的操作系统文件被删除,而没有清除相应的数据字典信息。

解决方案:

这个问题的解决方案基本上是清理多出的字典条目。不同的解决方案取决于主要原因的确切性质

在SQL*Plus中以SYSDBA的形式运行以下代码查询外部表。

set linesize 200 trimspool on
set pagesize 2000
col owner form a30
col created form a25
col last_ddl_time form a25
col object_name form a30
col object_type form a25

select OWNER,OBJECT_NAME,OBJECT_TYPE, status,
to_char(CREATED,'dd-mon-yyyy hh24:mi:ss') created
,to_char(LAST_DDL_TIME , 'dd-mon-yyyy hh24:mi:ss') last_ddl_time
from dba_objects
where object_name like 'ET$%'
/

select owner, TABLE_NAME, DEFAULT_DIRECTORY_NAME, ACCESS_TYPE
from dba_external_tables
order by 1,2

关联来自上面DBA_OBJECTS和DBA_EXTERNAL表的信息,以识别属于数据池的临时外部表。

再删除属于数据池的临时外部表

参考:ORA-20011 ORA-29913 and ORA-29400 with Associated KUP-XXXXX Errors from DBMS_STATS.GATHER_STATS_JOB (文档 ID 1274653.1)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-4-28 21:18 , Processed in 0.088614 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表