WEB开发网
开发学院数据库Oracle 讲解Oracle操作中常见的错误及解决方法 阅读

讲解Oracle操作中常见的错误及解决方法

 2008-09-02 12:48:15 来源:WEB开发网   
核心提示: 1、硬件的I/O错误; 2、操作系统的I/O错误或缓冲问题; 3、内存或paging问题; 4、ORACLE试图访问一个未被格式化的系统块失败;5、数据文件部分溢出等上述几种情况的一种引起了逻辑坏块或者物理坏块,这时就会报ORA-01578的错误,讲解Oracle操作中常见的错误及解决方法

1、硬件的I/O错误;

2、操作系统的I/O错误或缓冲问题;

3、内存或paging问题;

4、ORACLE试图访问一个未被格式化的系统块失败;5、数据文件部分溢出等上述几种情况的一种引起了逻辑坏块或者物理坏块,这时就会报ORA-01578的错误。

解决方法:由于ORACLE只有在访问到有问题的数据文件时才会报错,所以报错的时间有可能会比实际出错的时间要晚,如果ORA-01578出错信息提示数据坏块指向的是用户自己的数据文件,则用以下方法来解决:

如果通过下面的SQL语句查出的坏块出现有索引上,则只需重建索引即可

SQL>select owner,segment_name,segment_type from dba_extents where file_id= and (b)between block_id and block_id+blocks-1;()和(b)分别是ORA-01578报出的坏块出现的文件号和块号)

如果坏块出现在表上,先用以下语句分析是否为永久性坏块(建议多执行一两次,有助于鉴别数据坏块是永久性的(硬盘上的物理坏块)还是随机性的(内存或硬件错误引起)):

SQL>Analyzetable<table_name>validatestructurecascade;

执行该命令后,可能会出现以下的结果:

ORA-01578:与原先错误信息有相同的参数,为永久性的物理或逻辑坏块;与原先错误信息有不同的参数,可能与内存,page space和I/O设备有关。

如果用户有此表的最新备份,那么最好是用此备份来恢复此表,或者使用event 10231来取出坏块以外的数据:

<1>.先关闭数据库

<2>.编辑init.ora文件,加入:

  event=”10231tracenamecontextforever,level10”

<3>.startup restrict

<4>.创建一个临时表:SQL>create table errortemp as select * from error;(error是坏表的表名)

<5>.把event从init.ora文件中删掉并重起数据库

<6>.rename坏表,把临时表rename成坏表的表名

<7>.创建表上的INDEX等

如果ORA-01578出错信息提示数据坏块指向的是数据字典或者是回滚段的话,你应该立即与ORACLE公司联系,共同协商一个好的解决方法。

上一页  1 2 3 

Tags:讲解 Oracle 操作

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接