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,全局索引删除分区导致索引失效。

原文地址:https://www.cnblogs.com/zetanchen/p/9192623.html

时间: 2024-08-28 15:50:47

Oracle ORA-08104报错处理方法及注意事项的相关文章

Oracle ORA 12541 报错解决过程

? ? ? ? Oracle 导入全库之后使用plsql登陆时报错 ? ? 版本12C版本2 ? ? ORA-12541:?TNS:?No?Listener ? ? ? ? ? ? 再oracle主机本地可以使用sqlplus 登陆,但是使用plsql无法登陆,报错如上. ? ? 首先考虑是防火墙问题,查看防火墙和selinux均为关闭状态 ? ? 然后查看监听状态 查看 监听状态的命令为首先使用oracle 用户登陆操作系统,命令lsnrctl 进入监听程序,关键status 查看监听状态 ?

一次使用innobackupex重新搭建主从复制报错解决方法及注意事项

[环境介绍] 系统环境:CentOS release 6.4 (Final) + Server version: 5.7.18-log MySQL Community Server (GPL) + innobackupex version 2.4.12 Linux (x86_64) [背景描述] 使用innobackupex重新全备搭建主从复制步骤简单,但是由于历史原因在全备恢复后出现报错:. [ERROR] InnoDB: Unable to open undo tablespace './/

使用Oracle SQL Developer报错:Unable to find a Java Virtual Machine

1.环境 win7 x64,oracle 11g r2,jdk6 x64 2.问题 第一次启动Oracle SQL Developer的时候会让我们填写java.exe的路径,我在jdk安装目录下的bin中找到了java.exe,但是填写以后报如下错误: 3.原因 oracle 11g中安装的Oracle SQL Developer是32位的,而我们现在给他指定的java.exe却是64位的,所以会出现这种错误. 4.解决方法 1)从网上下载Oracle SQL Developer x64,然后

oracle数据库启动报错,不能启动ASM实例

数据库rac启动时报错,日志如下,后来使用 Sat Jun  7 06:02:11 2014 GATHER_STATS_JOB encountered errors.  Check the trace file. Sat Jun  7 06:02:11 2014 Errors in file /oracle/product/admin/dqb/bdump/dqb2_j001_13352.trc: ORA-08103: object no longer exists Sat Jun  7 06:0

zabbix源码安装流程及报错解决方法

zabbix源码安装流程及报错解决方法 一. zabbix的介绍 1) zabbix是什么 zabbix是一款基于web页面的.开源的.企业级的,支持分布式部署的监控软件. 2)2.zabbix的作用 监控windows和Linux主机上的软硬件状态. 监控各网络设备,如路由器.交换机.防火墙.f5.打印机等. 支持邮件短信微信等平台发送告警通知. 通过web页面及图形展示监控数据. 3)zabbix的特性 由zabbix server和agent程序协同工作,还支持分布式监控,这时需要安装za

node-sass报错解决方法

node-sass报错解决方法 node-sass报错解决方法 在Vue.js中,每一个vue文件都是一个组件,在.vue文件中可以将模板,脚本,样式写在一起,便于组织整个组件.在使用template,script时,编写css样式时,都进行的特别顺利,唯独当我想用sass来预处理css时,在style下使用lang='sass'一直报错. 在.vue中是这样的. <template > <div class="haha"> <p> keith +

报错解决方法Error: Can&#39;t connect to local MySQL server through socket

Error: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)Errno.: 2002解决方法一:因为你还没有启动mysql,当你启动mysql后,mysql.sock就会自动的生成../bin/safe_mysqld   --user=root   &(这是默认的).如果还没有,就是MYSQL权限没给,或其它原因还有就是 你的mysql是否启动了      启动后一般很难出现这个

navicat 连接oracle 数据库会报错

navicat 直连oracle 数据库会报错 ORA-12737 Instant Client Light:unsupported server character set ZHS16GBK 今天使用Navicat连接Oracle数据库,报了下面的这个错误:“ORA-12737 Instant Client Light:unsupported server character set ZHS16GBK” 从这个错误上看,可以知道是客户端不支持服务器端的字符集造成的,但是修改服务器端的字符集是不

PS win7_无法打开提示MSVCP120.dll报错解决方法

PS win7_无打开提示MSVCP120.dll报错解决方法 1.PS软件安装后无法打开,并提示MSVCP120.dll"ps无法启动此程序此 因为计算机中丢失msvcp120.dll" 报错提示: 问题解决方法: 下载DirectX Repair工具-安装并运行即可,会自动检测是否丢失msvcp120.dll等一系列套件. 提示图片: 下载链接:http://www.pc6.com/softview/SoftView_57945.html 注:根据自己本身使用系统版本,下载Dire