故障现象

丢失某个数据库文件,造成了数据库无法启动,同时数据库处于非归档模式,也没有冷备份,启动时的错误信息如下:

ORA-01157: cannot identify/lock data file 3 - see DBWR trace file

ORA-01110: data file 3: 'D:\ORACLE\ORADATA\TEST\USERS01.DBF'

l解决方法

将数据库启动到mount状态下:

SQLplus “/ as sysdba”

startup mount

从数据库中删除该数据文件

alter database datafile ‘xx’ offline drop;

打开数据库

alter database open;

备注:

该方法可正常打开数据库,但该datafile中的数据将丢失

如果误删除了system表空间的datafile,则该方法不奏效

如果该表空间还包含其它数据文件,用EXP把数据备份出来,然后删除表空间,重建表空间,将数据导入。如果不包含其它数据文件,则直接删除表空间就可以了。

二.归档模式数据库丢失某数据文件,无备份,但有该数据文件创建以来的归档日志

l故障现象

归档模式的数据库,丢失了某个数据库文件,造成了数据库无法启动,同时没有数据库的全备份,但有该数据文件创建以来的归档日志,数据库无法启动:

ORA-01157: cannot identify/lock data file 3 - see DBWR trace file

ORA-01110: data file 3: 'D:\ORACLE\ORADATA\TEST\USERS01.DBF

l解决方法

启动数据库到mount状态

startup mount

手工创建丢失的数据文件

alter database create datafile ‘oldfname’ as ‘newfname’size xxx reuse;

利用归档日志对数据文件进行恢复

recover datafile ‘newfname’;或者

recover datafile n;

打开数据库

alter database open;

备注:

该方法可正常打开数据库,而且不会丢失数据

该方法有两个前提

丢失的数据文件不能是系统文件

不能丢失或损坏控制文件

三.非current和active的redo log损坏

l故障现象

误删除了redo log,或者redo log被损坏,数据库能mount,不能open:

ORA-00313: open failed for members of log group 3 of thread 1

ORA-00312: online log 3 thread 1: '/oracle10/oradata/ora10g/redo03.log'

l解决方法

查询v$log视图,确认损坏的redo log group是非current和active

SQL>select group#,thread#,sequence#, archived,status from v$log;

GROUP# THREAD# SEQUENCE# ARCHIVED STATUS

------ ------- ---------- -------- --------

1 1 103 YES INACTIVE

2 1 104 NO CURRENT

3 1 102 YES INACTIVE

如果该日志已经归档,用下面的命令清除日志内容

Alter database clear logfile group 3;

如果该日志没有归档,用下面的命令清除日志内容

Alter database clear unarchived logfile group 3;

打开数据库

Alter database open;

尽快做一个数据库全备份

四.current或active的redo log损坏

l故障现象

误删除了redo log,或者redo log被损坏,数据库不能打开:

ORA-00313: open failed for members of log group 2 of thread 1

ORA-00312: online log 2 thread 1: '/oracle10/oradata/ora10g/redo02.log'

l解决方法

查询v$log视图,确认损坏的redo log group是current或active

SQL>select group#,thread#,sequence#, archived,status from v$log;

GROUP# THREAD# SEQUENCE# ARCHIVED STATUS

------ ------- ---------- -------- --------

1 1 2 YES INACTIVE

2 1 4 NO CURRENT

3 1 3 YES INACTIVE

情况1:当前日志文件还存在,只是逻辑损坏,并且当前日志没有未决事务需要实例恢复

alter database clear unarchived logfile group 2; --不会报错

recover database until cancel;

alter database open resetlogs;

一般情况下,该方法不奏效,如果clear报错,则用其它方法.

情况2:当前日志完全损坏,且有未决事务,数据库有备份

alter database clear unarchived logfile group 2; --会报错

ERROR at line 1:

ORA-01624: log 1 needed for crash recovery of thread 1

restore database;

recover database until cancel; --选择auto

recover database until cancel;

alter datbase open resetlogs;

尽快做一个数据库全备份

情况3:当前日志完全损坏,且有未决事务,数据库无备份

shutdown immediate;

_allow_resetlogs_corruption=true;

startup mount pfile=‘xxx’;

recover database until cancel;

alter datbase open resetlogs;

shutdown immediate

_allow_resetlogs_corruption=true;

Startup

尽快做一个数据库全备份

五.临时表空间的数据文件损坏

l故障现象

临时表空间的数据文件发生损坏,系统出现故障,如何恢复

l解决方法

在10g及以上版本数据库,启动数据库时,如果发现临时数据文件损坏,会自动创建,如果在数据库运行过程中,可以手工重建:

create temporary tablespace temp1 tempfile ‘xx’ size xx’;

alter database default temporary tablespace temp1;--系统默认临时表空间的重建需要执行这一步,否则不需要

drop tablespace temp;

alter tablespace temp1 rename to temp;

在10g以前版本数据库,可以在数据库打开后或运行过程中,手工重建就可以了

alter database datafile ‘xxx’ offline drop;--如果数据库打不开,就执行这个步骤

create temporary tablespace temp1 tempfile ‘xx’ size xx’;

alter database default temporary tablespace temp1;--系统默认临时表空间的重建需要执行这一步 ,否则不需要,9i以前版本也不需要。

drop tablespace temp;

alter tablespace temp1 rename to temp;

六.UNDO数据文件损坏,数据库无法启动

l故障现象

Undo数据文件发生了丢失或损坏,数据库启动报错:

ORA-01157: cannot identify/lock data file 2 - see DBWR trace file

ORA-01110: data file 2: '/oracle10/oradata/ora10g/undotbs01.dbf'

l解决方法

如果数据库有备份,则利用备份进行恢复

如果数据库没有备份,则利用重建undo表空间的方式进行恢复

startup mount

alter database datafile n offline drop;(删除损坏的undo文件)

alter database open;

create undo tablespace xxx …; (创建一个新的undo表空间)

alter system set undo_tablespace=xxx;(指向新的undo表空间)

drop tablespace yyy including contents;(删除原来的undo表空间)

七.控制文件损坏

l故障现象

控制文件发生了损坏,数据库已经无法启动,报错信息如下:

ORA-00202: controlfile: 'D:\Oracle\oradata\chen\control01.ctl'

ORA-27041: unable to open file

OSD-04002: unable to open file

l解决方法

情况一:控制文件有镜像,且镜像控制文件没有被损坏

关闭数据库

将没有损坏的控制文件覆盖掉损坏的控制文件,或者修改参数文件的control_files参数,去掉损坏的控制文件

重新启动数据库

情况二:控制文件无镜像,或者镜像的所有控制文件都损坏了

恢复控制文件

如果控制文件有备份,从备份中恢复控制文件

restore controlfile from ‘’

如果控制文件有snapshot,将snapshot控制文件替换掉原损坏控制文件

如果做过alter database backup controlfile to trace的控制文件脚本备份,可以用trace文件中的重建脚本来创建控制文件,

如果没有备份,也没有trace备份,只能手工编写脚本创建控制文件,前提是你对数据库文件结构非常清楚

恢复和打开数据库

如果是用create controlfile …noresetlogs 方式重建的控制文件

recover database;

alter database open;

alter tablespace temp add tempfile ‘xx’ size xx reuse ; --对所有临时表空间做此操作

如果是用create controlfile …resetlogs方式重建的控制文件,或者通过备份或快照恢复的控制文件

recover database using backup controlfile;

alter database open resetlogs;

alter tablespace temp add tempfile ‘xx’ size xx reuse ; --对所有临时表空间做此操作

oracle导出dnf文件,ORACLE 常见故障恢复-dnf文件损坏相关推荐

  1. oracle导出字符集命令,Oracle数据的导出及导入实现

    最近由于项目原因,我学习了Oracle数据库一些知识.数据的导出及导入,是任何数据库使用人员必备的一项技能,现给大家介绍一下Oracle数据的导出及导入实现方法. 数据的导出及导入,可以用命令exp/ ...

  2. oracle 导出字典表,oracle 导出数据字典

    select * from user_tab_comments where table_name like 'T_ONLINE%' 二.查询数据字典 1. 具有dba权限用户导出数据字典 SELECT ...

  3. 怎样下载linux的日志文件,Linux常见的日志文件及查看命令

    Linux常见日志和常用命令 Linux 日志都以明文形式存储,所以我们不需要特殊的工具就可以搜索和阅读它们.Linux 日志存储在 /var/log 目录中,我们可以编写脚本,来扫描这些日志,并基于 ...

  4. oracle 导出数据 utl,oracle 使用 UTL_FILE 导出表数据到txt文件

    环境: Red Hat Enterprise Linux Server release 6.6 Oracle Database 11g Enterprise Edition Release 11.2. ...

  5. 玩转oracle 11g(52):Oracle导出导入表(.sql、.dmp文件)两种方法

    提示:在导入sql和dmp文件之前,先建立用户,指明表空间.其中要注意用户名和表空间最好跟sql文件中的一样. 方法一:.sql文件的导出与导入 导出步骤 使用PL/SQL Developer登录你需 ...

  6. oracle导出数据视频教程,Oracle导入导出数据的几种方式

    oracle导入导出数据 1.导出dmp格式文件 --备份某几张表 !!!! exp smsc/smsc file=/data/oracle_bak/dmp/bakup0209_2.dmp table ...

  7. oracle导出exp步骤,oracle数据导出导入(exp/imp)

    1.本地数据库导入导出 1.导出 (运行---cmd中操作) exp 用户名/密码@数据库实例名file=本地存放路径 eg: exp jnjp/jnjp@ORCL file=C:/jnjp.dmp ...

  8. oracle导出导入emp,oracle导入导出操作

    PS 在11g中执行导入导出时有的选项可能不需要加()! PS2,导入导出命令请在shell下运行非sql/plus环境! ***数据库逻辑备份与恢复** 导出: 导出具体分为:导出表,导出方案,导出 ...

  9. oracle导出数据dummy,oracle导出表结构1

    oracle导出表结构 1.exp/imp工具 在cmd中输入 exp username/password@连接串 回车,在进入如下时,输入no,就ok了 导出表数据(yes/no):yes> ...

最新文章

  1. xamarin 断点 不命中
  2. TCP/IP之大明内阁---协议的制定
  3. Swift数据类型(一)
  4. java程序中没有错,但是项目上面显示一个红叉的解决办法
  5. HDOJ 1875 HDU 1875 畅通工程再续 ACM 1875 IN HDU
  6. Linux命令——chmod
  7. 女友的前男友教我该怎么照顾她......
  8. 微信红包系统架构的设计和优化分享
  9. PHP多种形式发送邮件
  10. testVC.modalPresentationStyle = UIModalPresentationFormSheet; 更改 VC大小
  11. Linux的DNS高速缓存
  12. codeforce 贪心1
  13. 10米精度NPP净初级生产力数据/NDVI数据/植被类型数据/土地利用数据/降雨气温分布数据/太阳辐射分布数据
  14. 高频交易鼻祖竟是靠「金发女郎」取得了400%的年回报
  15. java里面的内存机制_Stack vs. Heap:了解 Java 的内存分配机制
  16. 使用web.xml控制Web应用的行为
  17. 【常用软件下载地址】java开发官方资源下载网址大全(持续更新)
  18. Ubuntu,Linux下goldendict词典安装及配置
  19. ansys变形太夸张_ANSYS大变形典例:线性与非线性分析差别巨大,如何选择?
  20. Adobe Acrobat 如何批量删除PDF文件最后一页或倒数第二页?

热门文章

  1. python风控建模项目_像潘叔叔那样用半年时间学Python,有哪些书值得看?
  2. Adobe国际认证的脱颖而出,让摸鱼、秃头小宝贝不再是宿命?
  3. 易经中的企业管理思想[转帖] 来源: 中大管理论坛 梁育民
  4. 远程登录Linux系统
  5. baud rate - 波特率
  6. svn 更新命令(冲突时使用theirs)
  7. 素描滤镜_先进的素描技术
  8. Opencv——视频跳帧处理
  9. ChatGPT简要解读(一) - 原理分析与性能提升篇
  10. 【VeighNa】开始量化交易——第四章:结合AHR999指标和情绪指标分析