今天巡检发现alert中报如下错:
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.
错误分析:
外部表没有正常删除,数据字典中还有信息残留,表实际已不存在。
当数据库运行收集统计信息job时收集这些外部表时就报错。
解决方案如下:
1、查找ET开头的对象:
select owner,
object_name,
object_type,
status,
to_char(created, 'yyyy-mm-dd hh24:mi:ss') created,
to_char(last_ddl_time, 'yyyy-mm-dd 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$0B2100030001 TABLE VALID 2019-03-23 13:46:49 2019-03-23 13:46:49
SYS ET$09E100030001 TABLE VALID 2019-03-16 16:01:21 2019-03-16 16:01:21
2、确认属于dump生成的外部表
select owner,table_name,default_directory_name,access_type from dba_external_tables order by 1,2;
OWNER TABLE_NAME DEFAULT_DIRECTORY_NAME ACCESS_
--------------------- ------------------------------ ---------------------------------------------- ------
SYS ET$09E100030001 DP_DIR CLOB
SYS ET$0B2100030001 DP_DIR CLOB
3、删除之后,连续观察2天发现不在报错。
drop table SYS.ET$09E100030001;
drop table SYS.ET$0B2100030001;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现