ORA-00600和ORA-08103错误(oracle10g)

2014-01-09

连接未全部断开,就进行了oracle表空间移动,导致数据损坏。
alter tablespace $ts read only;
alter tablespace $ts offline;
!mv $src1 $dst1
alter database rename file '$src1' to '$dst1';
alter tablespace $ts online;
alter tablespace $ts read write;

1、oracle症状,查询或者插入数据报错“

select count(*) from VIEW;
*
ERROR at line 1:
ORA-08103: object no longer exists

insert数据
ORA-00600 kcbz_check_objd_typ_3

2、通常这个错误意味着存在着数据损坏。官方文档,如下:

ORA-08103: object no longer exists
Cause: The object has been deleted by another user since the operation began, or a prior incomplete recovery restored the database to a point in time during the deletion of the object.
Action: Delete the object if this is the result of an incomplete recovery.

原因是:在执行操作之前对象已经被另一个用户删除了,或者在删除些对象之前有一个未完成的数据库恢复。

3、处理过程:

a)有的文章说执行下列该语句后,错误消失,但是我执行后无效;

exec dbms_scheduler.disable('AUTO_SPACE_ADVISOR_JOB');
alter system flush buffer_cache;
b)重启数据库实例无效

4、最终重新创建表空间,创建表,将原来的数据导入
insert into newtable select * from oldtable;

5、结论:禁止有连接的情况下转移数据。有文章称ORACLE的新版本11g在这一方面进行了改进。

分类:数据库 | 标签: |

相关日志

评论被关闭!