”从容冷静,从表面着手,深入探究“

一、2020年度第三次次巡检中,某企业Oracle数据库告警

Mon Oct 12 22:00:16 2020
DBMS_STATS: GATHER_STATS_JOB encountered errors.  Check the trace file.
Errors in file /u01/app/oracle/diag/rdbms/odsdb/odsdb2/trace/odsdb2_j001_20570.trc:
ORA-20011: Approximate NDV failed: ORA-29913: error in executing ODCIEXTTABLEOPEN callout
KUP-11024: This external table can only be accessed from within a Data Pump job.

二、版本信息如下:

操作系统内核:CentOS release 6.5 (Final) / 2.6.32-431.el6.x86_64
数据库版本:oracle 11.2.0.4

三、问题描述:

查看alert日志,发现以上告警。

字面大致意思是:GATHER_STATS_JOB收集统计信息时发生错误。
错误发生在执行调出ODCIEXTTABLEOPEN时,外部表只能通过数据泵调用

四、再次查看告警日志提示的trc跟踪文件odsdb2_j001_20570.trc

Trace file /u01/app/oracle/diag/rdbms/odsdb/odsdb2/trace/odsdb2_j001_20570.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/11204
System name:    Linux
Node name:      pro-bi-2
Release:        2.6.32-431.el6.x86_64
Version:        #1 SMP Fri Nov 22 03:15:09 UTC 2013
Machine:        x86_64
Instance name: odsdb2
Redo thread mounted by this instance: 2
Oracle process number: 181
Unix process pid: 20570, image: oracle@pro-bi-2 (J001)*** 2020-10-12 22:00:16.709
*** SESSION ID:(3989.32255) 2020-10-12 22:00:16.709
*** CLIENT ID:() 2020-10-12 22:00:16.709
*** SERVICE NAME:(SYS$USERS) 2020-10-12 22:00:16.709
*** MODULE NAME:(DBMS_SCHEDULER) 2020-10-12 22:00:16.709
*** ACTION NAME:(ORA$AT_OS_OPT_SY_12446) 2020-10-12 22:00:16.709ORA-20011: Approximate NDV failed: ORA-29913: error in executing ODCIEXTTABLEOPEN callout
KUP-11024: This external table can only be accessed from within a Data Pump job.*** 2020-10-12 22:00:16.709
DBMS_STATS: GATHER_STATS_JOB: GATHER_TABLE_STATS('"SYS"','"ET$0B7721930001"','""', ...)
DBMS_STATS: ORA-20011: Approximate NDV failed: ORA-29913: error in executing ODCIEXTTABLEOPEN callout
KUP-11024: This external table can only be accessed from within a Data Pump job.*** 2020-10-12 22:00:16.725
DBMS_STATS: GATHER_STATS_JOB: GATHER_TABLE_STATS('"SYS"','"ET$0C2E359B0001"','""', ...)
DBMS_STATS: ORA-20011: Approximate NDV failed: ORA-29913: error in executing ODCIEXTTABLEOPEN callout
KUP-11024: This external table can only be accessed from within a Data Pump job.

五、处理方法:

1、查询两个对象相关信息

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
SQL> 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$%'; OWNER
------------------------------------------------------------
OBJECT_NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
OBJECT_TYPE                            STATUS         CREATED                                LAST_DDL_TIME
-------------------------------------- -------------- -------------------------------------- --------------------------------------
SYS
ET$0C2E359B0001
TABLE                                  VALID          2019-01-16 22:00:49                    2019-01-16 22:00:49SYS
ET$0B7721930001
TABLE                                  VALID          2019-01-16 19:19:33                    2019-01-16 19:19:33

能看到2个 SYS用户下状态未VALID状态的表,于TRC文件中得对象名称相同。

2、确认属于dump生成的外部表

select owner,table_name,default_directory_name,access_type from dba_external_tables order by 1,2;SQL> /OWNER                          TABLE_NAME                     DEFAULT_DIRECTORY_NAME                                       ACCESS_TYPE------------------------------ ------------------------------ ------------------------------------------------------------ --------------SYS                            ET$0B7721930001                DATA_PUMP2                                                   CLOB
SYS                            ET$0C2E359B0001                DATA_PUMP2                                                   CLOB
select * from SYS.ET$0B7721930001;
select * from SYS.ET$0B7721930001*
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
KUP-11024: This external table can only be accessed from within a Data Pump job.

3、清理DataPump jobs。

drop table SYS.ET$0B7721930001;Table dropped.drop table SYS.ET$0C2E359B0001;Table dropped.

六、错误原因:
外部表对应的操作系统上的外部表文件不存在了。但是,数据依然相信操作系统上的外部表文件还存在。
当DBMS_STATS运行,收集这个外部表的统计信息,由于外部表的文件不存在了,所以出现了上述错误。

外部表不存在的情况如下:
1、没有正确的清理datapump的临时外部表,datapump job结束后,临时外部表应该会被删除掉。
2、外部表文件已经被删除,但是没有清理外部表的定义。

                          部分截取自互联网,如有侵权请与我联系。wechat: 704012932email:  pkweibu@163.comCSDN:   https://blog.csdn.net/weixin_37423880

ORA-20011, KUP-11024 外部表引发报错相关推荐

  1. Oracle之外部表

    Oracle之外部表 有时候,数据库海量数据的存储,是一个令人头疼的问题.别的不说,光是频繁的执行insert(1000次/秒)都是一场恶梦.但是,如果将数据保存到文家里,而不是数据库中,数据序列化的 ...

  2. Oracle 外部表

    外部表是指不存在于数据库中的表.通过向Oracle 提供描述外部表的元数据,可以把一个操作系统文件当成一个只读的数据库表,就像这些数据存储在一个普通数据库表中一样来进行访问.外部表是对数据库表的延伸. ...

  3. oracle外部表使用详解,详解Oracle外部表的一次维护(图文)

    在做Oracle数据库的导出导入操作的时候,发现在将导出数据导入到新库过程中报告如下错误: 在查看数据库中关于外部表的视图中相关信息:select * from dba_directoriesSele ...

  4. bartender外部表不是预期格式_批量合并Excel数据时“外部表不是预期格式”或“文件包含损坏数据”的两种情况...

    很多朋友在用Power Query合并(汇总)Excel数据时,碰到过"DataFormat.Error:外部表不是预期格式"或"DataFormat.Error:文件包 ...

  5. [hive] hive 内部表和外部表

    1.内部表 hive (test1)> create table com_inner_person(id int,name string,age int,ctime timestamp) row ...

  6. hive外部表改为内部表_3000字揭秘Greenplum的外部数据加载——外部表

    外部表是greenplum的一种数据表,它与普通表不同的地方是:外部表是用来访问存储在greenplum数据库之外的数据.如普通表一样,可使用SQL对外部表进行查询和插入操作.外部表主要用于Green ...

  7. oracle 外部表及解决ora-29400,ora-29913错误

    对外部表的理解及测试,,,,如有理解不正确请大家指正 语法: create table 表名( 列名1,列名2,...... ) organization external  ###说明创建外部表 ( ...

  8. 使用外部表关联MySQL数据到Oracle

    因为业务需要,有个临时的活动需要DBA来支持一些数据业务,问题来了,需要从MySQL端同步一部分数据到Oracle端,然后从Oracle端匹配查到相应的数据返回给MySQL,至于原因,也是不同的业务系 ...

  9. GP通过外部表装载数据时遇到ERROR:extra data after last expected column解决方法

    --一般通过hive -e导出文本时,我都习惯把比较容易出错的String类型字段做一次regexp_replace()处理,因为如果字段里面含有制表符,那是一件很坑很坑的事 hive -e &quo ...

  10. oracle外部表ora29913,从外部表中选择sqlplus错误:ORA-29913:执行ODCIEXTTABLEOPEN标注时出错...

    我已经建立了一个简单的Oracle外部表测试,我(与DBA和Unix管理员一起)无法工作. 以下内容基于Oracle的External Tables Concepts.我们使用的数据库是11g. 这是 ...

最新文章

  1. JavaScript的表单事件
  2. 云计算被视为继计算机,8+第八章+计算机网络技术分析.ppt
  3. myeclipse 9.0安装 vss1.6.2不显示问题
  4. 输入输出,数据类型,运算符
  5. Spring Boot 最流行的 16 条最佳实践!
  6. 研究死锁–第5部分:使用显式锁定
  7. CVE漏洞—PHPCMS2008 /type.php代码注入高危漏洞预警
  8. 常用的linux命令20条,Linux常用的20条命令
  9. C语言 · 数的读法
  10. 5004. boost 源码编译vs2019
  11. webConfig中System.Web 和 System.WebServer节点读取
  12. css设计引言,HTML5与CSS3设计模式 引言(3)
  13. [2019杭电多校第五场][hdu6630]permutation 2
  14. 二叉树(链表)的相关操作
  15. 智能电动汽车充电桩去除安全隐患提高充电效率
  16. android手机向电脑传输文件,手机怎么用数据线连接电脑传输文件
  17. iOS平台上aa(见缝插针)游戏的简易实现
  18. Java最佳学习途径
  19. linux中ifconfig命令作用,ifconfig命令作用范围的是什么
  20. cmd模式下用cd命令进入其他盘或者文件夹

热门文章

  1. 银行系统总体架构\银行核心系统\常用金融名词解释
  2. 2.1.1 理论模型
  3. 4.35V锂电充电IC
  4. oracle 统计每天新增订单数量
  5. Word操作系列-给方框打钩
  6. 京东联盟高级API - 高并发京东联盟转链接口 京东客转链接口 京粉转链接口 京东联盟返利接口 京东返利接口,线报无广告接口
  7. 制作u盘winpe启动盘_RUFUS.小巧的U盘启动盘制作工具
  8. dw编写手机版html,手机移动网页制作:用
  9. 查看计算机温度指令,怎么看cpu温度(电脑CPU温度怎么查看?)
  10. MySQL查看索引和数据所占内存