【环境介绍】

系统环境: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
done boolean;
begin
   done:=dbms_repair.online_index_clean(275314);---OBJECT_ID
end;
/

Drop Partition Failed With ORA-08104: This Index Object Is Being Online Built Or Rebuilt (文档 ID 2358693.1)

【总结】

虽然操纵很简单,但是注意的问题会有很多,准确评估才能使工程的正常完成:

删除数据时,需要备份数据(物理备份,逻辑备份),制定正确清理策略,定期移动或者清理历史数据,防止误操作引起的数据丢失;

对于日志类型监控表,建议使用分区方式存储数据,方便清理历史数据,SQL分区查询性能优化;

对于全局索引建议在表比较小的情况下使用online方式重建索引;

重建索引时注意表大小和临时表空间大小,对于对象较大的情况,建议使用并行方式重建索引;

建议使用脚本删除或者重建索引操作,防止网络引起终端断开导致事务回滚;

建议对表操作后可根据分区进行收集统计信息;

建议对分区表使用local index,全局索引删除分区导致索引失效。

最新文章

  1. Winform 窗体最小化隐藏在桌面右下角:转
  2. php基础21:上传文件
  3. Hadoop学习笔记: HDFS
  4. 什么是商业智能BI和实施BI的解决方案【转】
  5. .net框架版本说明
  6. 写个 Hello World 而已,要不要这么震撼?!
  7. oracle稳定执行计划1
  8. Delphi中禁止WebBrowser右键的方法
  9. OC之字符串 NSString与NSMutableString
  10. javascript集合求交集
  11. ORA-12012: error on auto execute of job "ORACLE_OCM
  12. HTTP首部解析
  13. 构建LVS-DR+Keepalive高可用集群
  14. wps中如何插入参考文献
  15. shardingsphere多数据源(springboot + mybatis+shardingsphere+druid)
  16. 生产环境Linux常用命令【随时更新】
  17. Cmake find_package 需要指定具体的so
  18. 巧用同步请求处理react页面刷新问题
  19. 利用python将数据转存入sqlite3
  20. Android Makefile中是 如何识别 TARGET_PRODUCT 的

热门文章

  1. django csrf token添加
  2. 数据库原理 - 序列7 - Binlog与主从复制
  3. sqlserver安装报错:an error was encountered 数据无效
  4. Webdriver之API详解(3)
  5. 初窥css---包含一些概念和一些文字样式
  6. Shell 全局变量、环境变量和局部变量
  7. pytorch中文文档-torch.nn.init常用函数-待添加
  8. LinkedHashMap源码分析
  9. Java静态代码块、构造代码块执行顺序问题
  10. mysql一个非常实用解决sql查询优化的函数explain