网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.自动调整 Oracle9i Database:Or.
.用DBMS_SYS_SQL包进行批量授权.
.Oracle学习笔记[一] morinson著.
.Oracle SQL的优化(3).
.EMC存储技术上使用ASM的最佳实践.
.ASSM管理(BMB段管理)的内部机理.
.在NOVELL网实现ORACLE分布式处理.
.如何在postfix中使用procmail.
.Linux系统病毒研究之一.
.加密存储过程使在schema下看不到.
.Oracle 10g RMAN的备份测试.
.在Linux创建库函数(7).
.如何使用Oracle case函数.
.优化数据库的三板斧 大幅提高Ora.
.帮你快速掌握Oracle数据库中的Co.
.在Oracle 10g中如何解决ORA-1981.
.oracle8i学习笔记(2).
.何时Oracle使用绑定变量性能反而.
.Oracle9i中取得建表和索引的DDL语.
.Oracle开发人员 JAVA存储过程.

Oracle回滚表空间丢失或损坏处理方法(1)

发表日期:2008-2-9



  问题描述: 这是一个回滚段表空间数据文件丢失或损坏的情景,这时 Oracle 不能识别相应的数据文件。当你试图 startup 数据文件时会报 ORA-1157 , ORA-1110 ,并且可能会伴随着标识操作系统级别的错误,比如 ORA-7360 。 当你试图以 shutdown normal 或 shutdown immediate 模式关闭数据库时会导至 ORA-1116,ORA-1110, 并可能伴随标识操作系统级别的错误,比如 ORA-7368 ,有时以正常方式 shutdown 数据库根本 shutdown 不下来。 警告: 文章中所提及的步骤是供 oracle的全球技术支持使用的。非凡是步骤6中的_corrupted_rollback_segments参数,使用后需要重建数据库,在使用这个参前请观察一下所有其它的选项。 解决方法解释: 如下的解决方法取于检测问题出现时数据库所处于状态 : I. 数据库是处于关闭状态的。 试图打开数据库时报 ORA-1157 和 ORA-1110 错误,这时的解决方法取于数据库是否是正常 shutdown 的 ( 使用 normal 或 immediate 选项。 I.A. 数据库是正常 shutdown 的 假如数据数据库是正常 shutdown 的,最简单的解决方法是以 offline drop 选项删除丢失或损坏的数据文件,以 restriceted 模式打个数据库,删除并重建这个数据文件所属的那个回滚表空间。假如数据库是以 shutdown abort 或自己崩溃掉的则不要遵循这个过程。 步骤如下: 1 、确认数据库是正常 shutdown 的。可以检查 alter.log 这个文件,定位到最后几行看是否可以看到如下的信息: "alter database dismount Completed: alter database dismount" 这当然也包括以正常方式 shutdown, 接然试图启动数据库确失败的状况。假如最近一次你是以 shutdown abort 方式关闭数据库的或数据库是自己 crashed 掉的,你应用使用下面的 I.B 的方法。 2 、在 init.ora 中把属于丢失数据文件的回滚段从 ROLLBACK_SEGMENTS 参数中去掉。假如你不能确信是哪个回滚段,可以简单的把 ROLLBACK_SEGMENTS 这个参数注释掉。 3 、以 restricted 模式 mount 数据库 STARTUP RESTRICT MOUNT; 4 、 Offline drop 丢失或损坏的那个数据文件。 ALTER DATABASE DATAFILE '' OFFLINE DROP; 5 、打开数据库 ALTER DATABASE OPEN ; 假如返回 "Statement processed" 这条信息,转到第 7 步 . 假如得到 ORA-604,ORA-376, 和 ORA-1110 错误,转到第 6 步。 6 、因为打开数据库失败, shutdown 掉数据库并且编辑 int.ora 这个文件。注释掉 ROLLBACK_SEGMENTS 这个参数,并且在 init.ora 文件中加入如下一行: _corrupted_rollback_segments = (,...,) 这个参数应当包含 ROLLBACK_SEGMENTS 中所有的回滚段。 需要注重的是这个参数只能在指定的情况下或在 oracle 的全球持术支持的指导下才应使用,然后以 restricted 模式打开数据库: STARTUP RESTRICT 7 、删除掉那个文件所属的回滚段表空间。 DROP TABLESPACE INCLUDING CONTENTS; 8 、重建回滚段表空间及回滚段,创建完后使它们 online. 9 、使数据库所有用户都可用。 ALTER SYSTEM DISABLE RESTRICTED SESSION; 10 、在 init.ora 中把你重新创建的回滚段再一次包括进来,假如你使用了第 6 步则移除掉 CORRUPTED_ROLLBACK_SEGMENTS 这个参数。 I.B. 数据库不是正常 shutdown 的 这种情况,数据库最近一次是用 shutdown abort 或 crashed 掉关闭,回滚段中几乎一定包含着活动的事务。因此,坏的那个数据文件不能脱机 (offline) 或是 drop 掉,你必需从备份恢复这个文件。假如数据为是处于非归档模式的,只有最近的一些事务日志还没有被重写掉的情况你才能成功恢复这个文件。假如这个文件的备份也是无效的,联系一下 oracle 的技术支持吧。 步骤如下: 1 、从备份中恢复丢失的那个数据文件 . 2 、 mount 上数据库 3 、执行如下的查询:
SELECT FILE#,NAME,STATUS FROM V$DATAFILE; 假如数据文件的状态是 offline 的,你必需先把它联机了: ALTER DATABASE DATAFILE '' ONLINE; 4 、执行如下的查询: SELECT V1.GROUP#, MEMBER, SEQUENCE#, FIRST_CHANGE# FROM V$LOG V1, V$LOGFILE V2 WHERE V1.GROUP# = V2.GROUP# ; 这将列出所有的联机的重做日志和他们的序号及首次改变号 (first change numbers). 5 、假如这个数据库是非归档模式的,执行如下的查询: SELECT FILE#, CHANGE# FROM V$RECOVER_FILE; 假如其中的 CHANG# 比 4 中的最小的那个 FIRST_CHANGE# 大的话,用联机日志就可以完成恢复。 6 、假如 CHANG# 比 4 中的最小的那个 FIRST_CHANGE# 小,则数据库是不能恢复的,可以联系一下 oracle 的技术支持。 译者插入:假如你真是非归档方式且这个文件的备份也是无效的,假如你认为可以丢失回滚段中的那事务,你可以用 I.A中从第6步的方法,这时可以打开数据库,应立即做一个备份,因为库中的数据有些不一致。 RECOVER DATAFILE '' 7 、确认所有的日志都被恢复,只到你收到 "Media recovery complete" 信息。 8 、打开数据库
上一篇:Oracle不同版本间用exp进行导数据时的问题 人气:617
下一篇:Oracle回滚表空间丢失或损坏处理方法(2) 人气:628
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐