一、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.709 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.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:49 SYS 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、清理无效外部表。
drop table SYS.ET$0B7721930001; Table dropped. drop table SYS.ET$0C2E359B0001; Table dropped.
复制
六、错误原因:
外部表对应的操作系统上的外部表文件不存在了。但是,数据依然相信操作系统上的外部表文件还存在。
当DBMS_STATS运行,收集这个外部表的统计信息,由于外部表的文件不存在了,所以出现了上述错误。
外部表不存在的情况如下:
1、没有正确的清理datapump的临时外部表,datapump job结束后,临时外部表应该会被删除掉。
2、外部表文件已经被删除,但是没有清理外部表的定义。
部分截取自互联网,如有侵权请与我联系。 wechat: 704012932 email: pkweibu@163.com CSDN: https://blog.csdn.net/weixin_37423880
复制
最后修改时间:2020-10-16 09:58:47
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
790次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
664次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
593次阅读
2025-04-20 10:07:02
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
549次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
534次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
510次阅读
2025-04-22 00:20:37
一页概览:Oracle GoldenGate
甲骨文云技术
499次阅读
2025-04-30 12:17:56
火焰图--分析复杂SQL执行计划的利器
听见风的声音
472次阅读
2025-04-17 09:30:30
OR+DBLINK的关联SQL优化思路
布衣
383次阅读
2025-05-05 19:28:36
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
382次阅读
2025-04-15 14:48:05