内容阅读
在知识库中专注阅读,并随时返回相关工具与课程
ORA-01466常见闪回
无法读取数据 - 表定义已更改
Unable to read data - table definition has changed
错误描述
闪回查询或 AS OF TIMESTAMP 查询失败,因为表结构(DDL)在指定时间戳和当前时间之间被修改。
可能原因
- 在闪回时间戳之后添加、删除或修改了列
- 在闪回点之后表被截断或重组
- ALTER TABLE 操作使旧结构的撤销数据无效
解决方案
- 1改用闪回表:FLASHBACK TABLE t TO TIMESTAMP ...;(需要行移动)
- 2查询在闪回时间存在的特定列
- 3如果无法闪回,使用 LogMiner 恢复数据
诊断命令
SELECT scn_to_timestamp(ora_rowscn) last_modified FROM table_name WHERE ROWNUM = 1;SELECT * FROM dba_tab_modifications WHERE table_name = 'TABLE_NAME';SELECT timestamp, action FROM dba_tab_stats_history WHERE table_name = 'TABLE_NAME' ORDER BY timestamp DESC;#flashback#ddl-change#table-definition#as-of-timestamp