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
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,全局索引删除分区导致索引失效。
Oracle ORA-08104报错处理方法及注意事项的更多相关文章
- Oracle ORA 12541 报错解决过程
Oracle 导入全库之后使用plsql登陆时报错 版本12C版本2 ORA-12541: TNS: No Listener 再oracle主机本地可以使用sqlplus 登陆,但是使用plsql无法 ...
- 一次使用innobackupex重新搭建主从复制报错解决方法及注意事项
[环境介绍] 系统环境:CentOS release 6.4 (Final) + Server version: 5.7.18-log MySQL Community Server (GPL) + i ...
- Oracle Online Patching报错"This is not a RAC setup. OPatch cannot determine the local node name"
Oracle Online Patching报错"This is not a RAC setup. OPatch cannot determine the local node name&q ...
- 安装Oracle 11gR2,报错:[INS-06101] IP address of localhost could not be determined
安装Oracle 11gR2,报错:[INS-06101] IP address of localhost could not be determined 出现这种错误是因为主机名和/etc/host ...
- eclipse创建的maven项目,pom.xml文件报错解决方法
[错误一:]maven 编译级别过低 [解决办法:] 使用 maven-compiler-plugin 将 maven 编译级别改为 jdk1.6 以上: <!-- java编译插件 --> ...
- [转]ORACLE 11G 导出报错(EXP-00003)未找到段 (0,0) 的存储定义
http://blog.csdn.net/qq_19524879/article/details/51313205 ORACLE 11G 导出报错(EXP-00003)未找到段 (0,0) 的存储定义 ...
- MyEclipse Server view报错解决方法
MyEclipse Server view报错解决方法 方法/步骤 启动MyEclipse,弹出一个框,报错. ---------------------------------------- ...
- Oracle Client安装报错
Oracle Client安装报错:引用数据不可用于验证此操作系统分发的先决条件 http://tunps.com/p/11797.html 原因是Oracle Client 11g版本不支持最新的W ...
- Loadrunner参数化逗号报错解决方法
Loadrunner参数化逗号报错解决方法 介绍Loadrunner参数化时,参数中包含有逗号时出错的解决方法. 在Loadrunner进行参数化时,参数中如果含有逗号,编辑保存后会报错: 此 ...
随机推荐
- Python之Scripy框架
为什么要用到cmd界面 --- 在这里操作的是Scripy框架的指令,不是Python代码 Parse --- Scripy的回调函数 fiddler --- 用于爬取JS存储数据的页面 项目: 1. ...
- composer在update时提示file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO
在开发的时候,需要把依赖的服务更新到最新,然后 手动composer update一下,提示如下: failed) Update failed (The "e "https://a ...
- Linux新手随手笔记1.6
RAID磁盘冗余阵列 1.I/O 速度 2.数据安全性 RAID 0 负载均衡.速度乘以二,但是数据安全性不行,任何一块盘损坏数据都会丢失. RAID 1 安全性性提升2倍,任何一个损坏另一个都有 ...
- AppCan移动开发技巧:3步走,获取移动APP签名信息
大家知道,在移动APP开发里,与应用包名一样,应用的签名信息需是唯一的,否则将会出现应用冒领.重复安装等问题.之前分享过安卓应用的签名如何获取(点击查看),这里将继续以AppCan平台为例,分享如何获 ...
- Windows系统下的TCP参数优化(注册表\TCPIP\Parameters)
转自:https://blog.csdn.net/libaineu2004/article/details/49054261 Windows系统下的TCP参数优化 TCP连接的状态与关闭方式及其对 ...
- (一)jdk8学习心得之遍历
一.遍历 -- 最好和stream流连用 使用jdk8提供的forEach进行遍历时,采用的是多线程的操作,理论上讲是会比原来的方法更快.但是注意,系统启动时需要加载lambda框架的内容.因此如果通 ...
- XAMPP支持多PHP版本
在使用xampp进行开发的时候,我们都知道它只能支持一个PHP版本不能像PHPstudy那样方便进行不同版本的切换操作.因此我们手动的对于xampp进行改造一下,使其支持其他PHP版本 1. 从官网上 ...
- git基本概念
工作区:电脑上存放源代码的文件夹 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库. 版本库包含stage(暂存区),master分支,以及指向master分支的指 ...
- Oracle外部表与SQLLDR
两种方法建立外部表 在建表语句中把EXTERNAL_TABLE参数设定为SQLLDR: 从12C起,可以使用模式来运行SQLLDR: 在建表语句中把EXTERNAL_TABLE参数设定为SQLLDR: ...
- 消息队列与Kafka
2019-04-09 关键词: 消息队列.为什么使用消息队列.消息队列的好处.消息队列的意义.Kafka是什么 本篇文章系本人就当前所掌握的知识关于 消息队列 与 kafka 知识点的一些简要介绍,不 ...