当前位置: 首页 > 图文教程 > 数据库 > MYSQL > 用ORACLE8i修复数据库坏块的三种方法

MYSQL
MySQL忘记密码恢复密码的实现方法
mysql 时间转换函数的使用方法
使用mysql的disctinct group by查询不重复记录
mysql备份恢复mysqldump.exe几个常用用例
超详细mysql left join,right join,inner join用法分析
mysql 5.0.67最新版替代MySQL 5.0.51b版本官方下载
比较详细的MySQL字段类型说明
mysql 记录不存在时插入 记录存在则更新的实现方法
MYSQL基础之连接MYSQL、修改密码、添加用户
mysql数据库优化必会的几个参数中文解释
mysql中文排序注意事项与实现方法
MySQL 5.0触发器参考教程
MySQL5创建存储过程的示例
MYSQL5 masterslave数据同步配置方法
mysql数据库导出xml的实现方法
MySql增加用户、授权、修改密码等语句
Mysql默认设置的危险性分析
用MySQL创建数据库和数据库表代码
Mysql如何避免全表扫描的方法
mysql的校对规则引起的问题分析

MYSQL 中的 用ORACLE8i修复数据库坏块的三种方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 53 ::
收藏到网摘: n/a

  在进行SUN CLUSTER双机切换、意外断电或其它情况下,有时会发生共享盘MOUNT不上的情况,需要使用FSCK对共享盘进行修复。修复完成后,在数据库启动过程中,却又出现"数据块损坏,无法启动数据库"的现象,此时,可以根据不同的数据块损坏类型,检测并修复错误。在此介绍三种使用Oracle8i修复损坏数据块的方法。

  一、数据块损坏,错误代码为ORA-01578

  ORA-1115 I/O ERROR READING BLOCK

  通常后跟ORA-737X错误与操作系统错误(如UNIX中的错误号5)

  产生原因:

  1. 硬件问题(磁盘控制器问题或磁盘问题)

  2. 物理级的数据块损坏(通常由前一原因造成)

  3. 处理巨型文件时,后跟错误代码ORA-7371

  确定故障原因与恢复的方法:

  1. 查看alert.log文件中其它ORA-1115错误的发生情况:

  1) 如果指向不同磁盘的文件,则是磁盘控制器的问题,查看V$DATAFILE,有哪些文件位于该控制器下,转到第二步。

  2) 如果指向相同磁盘的不同文件,则是磁盘的问题,转到第二步。

  3) 如果指向同一个文件,执行以下语句查找文件名:

  SELECT SEGMENT_NAME,SEGMENT_TYPE FROM DBA_EXTENTS WHERE FILE_ID=<文件号> AND <块号> BETWEEN BLOCK_ID

  AND BLOCK_ID+BLOCKS-1;

  其中,文件号与块号是ORA-1115中指出的,如果该查询持续指向某表或索引,则重建它们即可。

  2. 如果文件是SYSTEM表空间,或处于NOARCHIVELOG模式,关闭数据库,转到第四步。

  3. 如果数据库处于ARCHIVELOG模式,仍应关闭数据库,如果不能关闭数据库,则将相应的数据文件脱机:ALTER DATABASE DATAFILE '文件名' OFFLINE;

  4. 试着将数据文件拷贝到别的磁盘。

  5. 如果拷贝失败,则文件将丢失。

  6. STARTUP MOUNT;

  7. 将数据文件重命名为成功拷贝到别的磁盘的文件名:

  ALTER DATABASE RENAME FILE '老路径文件名' TO '新路径文件名';

  8. ALTER DATABASE OPEN;

  9. RECOVER DATAFILE 文件名;

  ALTER DATABASE DATAFILE '文件名' ONLINE;

  二、回滚段需要恢复

  如果回滚段处于NEED RECOVERY状态,需要执行以下步骤进行恢复:

  1. 查看所有联机的表空间与数据文件

  2. 在init.ora文件中加入event = "10015 trace name context forever,level 10",这将生成一个追踪文件,其中含有事务与回滚的信息。

  3. 关闭并重新打开数据库。

  4. 查看TRACE文件,应有error recovery tx(#,#) object #.TX(#,#),指出事务信息,其中object #与sys.dba_objects中的object_id相同。

  5. 使用以下查询找出正在进行恢复的对象:

  SELECT owner,object_name,object_type,status FROM dba_objects WHERE object_id=

  请作者联系本站,及时附注您的姓名。联系邮箱:edu#ruanchen.com(把#改为@)。