在开发环境的数据库上发现连接是说archiver错误,只能通过内部连接连上数据库。登录服务器后发现是磁盘满了。查找导致磁盘满的原因是实例ORCL有个错误,导致一直写alert.log,和生产大量的trcace文件。
LOG文件如下:
......
Errors in file /home/u01/app/oracle/admin/orcl/bdump/orcl_j000_7082.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-08102: index key not found, obj# 239, file 1, block 62202 (2)
ORA-12012: error on auto execute of job 1
ORA-08102: index key not found, obj# 239, file 1, block 62202 (2)
......
通过查找dba_objects知道该对象的相信信息,是sys用户的一个job索引。刚开始以为是job问题,因此调用dbms_job.remove来删除job结果提示job_queue中不存在该队列(ORA-23421: job number 1 is not a job in the job queue),推测难道是sysman中的对象,于是在sys用户下调用dbms_ijob.remove对象来删除job,结果提示(ORA-12011: execution of 1 jobs failed ;ORA-06512: at "SYS.DBMS_IJOB", line 406)。
通过查找dba_indexes发现对应的index,使用alter index I_JOB_NEXT rebuild;提示执行成功,但是过一段时间后还是报错,最后使用drop index I_JOB_NEXT;后系统的错误就消失了。