Oracle ORA-08104报错处理方法及注意事项
【环境介绍】 系统环境:IBM P740 8205-E6C (AIX) +?11.2.0.3.0 Oracle RAC 【背景介绍】 故障描述:数据库表空间超过90%,无法进行扩容表空间,需要业务侧清理历史数据,在清理期间出现ORA-08104报错,无法再进行清理数据。 反馈报错信息: 从数据库报错看出,有会话执行了重建索引操作或者重建索引操作时回退。 【问题分析】 查看数据库日志信息:发现数据库报错,出现临时表空间不足情况,查看当前表为分区表,大小为180多G,怀疑重建索引时临时表空间不足导致回滚。 查看等待事件信息:没有发现异常等待事件。 查看有会话对这个对象进行索引操作:根据用户帅选,发现ACTIVE状态会话没有对该对象索引操作。 查看是否有大事务回滚情况:查询没有大事务回滚信息。 查看是否僵死进程:根据对象名,定位sqltext,sql_id发现有INACTIVE状态会话有重建索引操作 经过咨询,需求方反馈期间对该对象重建索引操作,但是期间终端终端,之后重新删除分区时报错。 确认可以杀掉该会话,当前status为INACTIVE状态,需要spid定位主机进程杀掉,杀到进行后需要清理索引信息,否则还是会报错。 declare
? 【总结】 虽然操纵很简单,但是注意的问题会有很多,准确评估才能使工程的正常完成: 删除数据时,需要备份数据(物理备份,逻辑备份),制定正确清理策略,定期移动或者清理历史数据,防止误操作引起的数据丢失; 对于日志类型监控表,建议使用分区方式存储数据,方便清理历史数据,SQL分区查询性能优化; 对于全局索引建议在表比较小的情况下使用online方式重建索引; 重建索引时注意表大小和临时表空间大小,对于对象较大的情况,建议使用并行方式重建索引; 建议使用脚本删除或者重建索引操作,防止网络引起终端断开导致事务回滚; 建议对表操作后可根据分区进行收集统计信息; 建议对分区表使用local index,全局索引删除分区导致索引失效。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |