一个诡异的offline undo tablespace 问题 .
数据库 oracle 10.2.0.4 RAC 2 nodes
操作系统 redhat 5.3 x64
周末升级系统,数据库一个过程出现编译问题,没太在意
周一发现错误还在,
错误信息:
Error 604 trapped in 2PC on transaction 67.38.6337026. Cleaning up.
Error stack returned to user:
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 40 cannot be read at this time
ORA-01110: data file 40: '+DG1/xxx/datafile/undotbs3.422.720270075'
检查执行语句为调用一个包的过程
其过程很简单
类似如下
INSERT INTO B SELECT * FROM A;
EXECUTE IMMEDIATE 'TRUNCATE TABLE A';
EXECUTE IMMEDIATE 'ALTER TABLE A ENABLE ROW MOVEMENT';
EXECUTE IMMEDIATE 'ALTER TABLE A SHRINK SPACE';
EXECUTE IMMEDIATE 'ALTER TABLE A DISABLE ROW MOVEMENT';
上面的undo是2个月前offline的 本来是打算删除的
两个实例的undo 参数均没有指定到该undo 表空间上
很奇怪啊
后来发现执行
SQL> select * from FLASHBACK_TRANSACTION_QUERY;
select * from FLASHBACK_TRANSACTION_QUERY
*
ERROR at line 1:
ORA-01135: file 40 accessed for DML/query is offline
ORA-01110: data file 40: '+DG1/xxx/datafile/undotbs3.422.720270075'
这个undo 不是offline 了吗?而且两个月了!
为了尽快恢复该问题
重新online 了该表空间
重新 编译 包:正常
查询FLASHBACK_TRANSACTION_QUERY :正常
==
遗留问题
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步