在启动数据库的时候,open阶段总是可能出现各种各样的问题,
比如让人胆战心惊的错误。
ORA-01113: file 1 needs media recovery

自己留意了一下,其实还是有蛮多的场景会出现这个问题,有些细节可能没有注意到就会出现这个问题,
比如我们重建控制文件的时候。
在重建控制文件之前做了shutdown abort的操作。

SQL> shutdown abort
ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1261564 bytes
Variable Size             163577860 bytes
Database Buffers          142606336 bytes
Redo Buffers                7127040 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "TEST10G" NORESETLOGS  NOARCHIVELOG
 .....
 26    '/u02/oracle/oradata/data02.dbf'
 27  CHARACTER SET US7ASCII
 28  ;

Control file created.
尝试启动数据库的时候就会抛出这个错误。

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/u02/oracle/oradata/TEST10G/disk5/system01.dbf'

其实这个时候简单分析一下就会明白,上次是shutdown abort的方式,则对应的检查点信息无法写入数据文件,在open阶段smon会做这个校验。
开始在后台做数据的前滚,然后应用redo日志的数据,对某些操作做相应的回滚。
从下面的地方可以看出 last_change#没有任何值,表明上次断电重启后检查点信息没有写入。
SQL> select file#,checkpoint_change#,last_change# from v$datafile;

FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------
         1             858940
         2             858940
         3             858940
         4             858940
         5             858940

SQL> select file#,checkpoint_change# from v$datafile_header;

FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             858940
         2             858940
         3             858940
         4             858940
         5             858940

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
            858939
这个时候尝试恢复数据库,再次观察,则相应的检查点信息就做了校正。

SQL> recover database;
Media recovery complete.
SQL>  select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
            858939
SQL>  select file#,checkpoint_change#,last_change# from v$datafile;

FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------
         1             859017       859017
         2             859017       859017
         3             859017       859017
         4             859017       859017
         5             859017       859017

SQL> alter database open;

Database altered.
数据库启动之后,last_change#的值又回归零。等待稍后的检查点写入。

SQL>  select file#,checkpoint_change#,last_change# from v$datafile;

FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------
         1             879019
         2             879019
         3             879019
         4             879019
         5             879019

SQL>  select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
            879019

其实这个过程中,恢复的基准就是检查点,也就是SCN.

当然在有些操作依赖于归档模式,介质恢复还是依赖于一些归档文件的。
像在非归档模式尝试下面的操作就不可行。

SQL> alter tablespace data offline immediate;
alter tablespace data offline immediate
*
ERROR at line 1:
ORA-01145: offline immediate disallowed unless media recovery enabled

SQL> alter tablespace data begin backup;
alter tablespace data begin backup
*
ERROR at line 1:
ORA-01123: cannot start online backup; media recovery not enabled

这个时候还是启用归档。

SQL> shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1261564 bytes
Variable Size             163577860 bytes
Database Buffers          142606336 bytes
Redo Buffers                7127040 bytes
Database mounted.
SQL> alter database archivelog ;

Database altered.

SQL> alter database open;

Database altered.
如果在归档模式中,使用热备份,需要声明begin backup,为了能够修复在热备份过程中可能产生的分裂数据块。

SQL> alter tablespace data begin backup;

Tablespace altered.
这个时候停库就会抛错。

SQL> shutdown immediate;
ORA-01149: cannot shutdown - file 5 has online backup set
ORA-01110: data file 5: '/u02/oracle/oradata/data02.dbf'
如果发生断电现象,则在重启的时候出现ORA-01113: file 5 needs media recovery就需要明辨这个错误背后的意思
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1261564 bytes
Variable Size             163577860 bytes
Database Buffers          142606336 bytes
Redo Buffers                7127040 bytes
Database mounted.
ORA-01113: file 5 needs media recovery
ORA-01110: data file 5: '/u02/oracle/oradata/data02.dbf'

其实碰到这个错误,还是需要结合多种场景来考虑,比如查看是否热备份已经正常完成,之前的操作是什么样的?
SQL> desc v$backup
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 FILE#                                              NUMBER
 STATUS                                             VARCHAR2(18)
 CHANGE#                                            NUMBER
 TIME                                               DATE

SQL> select *from v$backup;

FILE# STATUS                CHANGE# TIME
---------- ------------------ ---------- ---------
         1 NOT ACTIVE                  0
         2 NOT ACTIVE                  0
         3 NOT ACTIVE                  0
         4 NOT ACTIVE                  0
         5 ACTIVE                 879352 20-JUL-15
可以从SCN的地方看出和重建控制文件的场景还是存在一定的差别。
SQL> select file#,checkpoint_change#,last_change# from v$datafile;

FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------
         1             879275
         2             879275
         3             879275
         4             879275
         5             879352

SQL> select file#,checkpoint_change# from v$datafile_header;

FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             879275
         2             879275
         3             879275
         4             879275
         5             879352

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
            879275
明白了问题,修复就很容易了,果断结束热备份。

SQL> alter tablespace data end backup;

Tablespace altered.

SQL> select file#,checkpoint_change# from v$datafile_header;

FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             879275
         2             879275
         3             879275
         4             879275
         5             879352

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
            879275
这个时候启动数据库就没有问题了。

SQL> alter database open;

Database altered.

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
            899361

SQL>  select file#,checkpoint_change# from v$datafile_header;

FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             899361
         2             899361
         3             899361
         4             899361
         5             899361

其实热备份的这个错误也可以这么来处理。

SQL> alter tablespace data begin backup;

Tablespace altered.

SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1261564 bytes
Variable Size             163577860 bytes
Database Buffers          142606336 bytes
Redo Buffers                7127040 bytes
Database mounted.
ORA-01113: file 5 needs media recovery
ORA-01110: data file 5: '/u02/oracle/oradata/data02.dbf'

SQL> recover datafile 5;
Media recovery complete.
SQL> alter database open;

Database altered.

SQL> select *from v$backup;

FILE# STATUS                CHANGE# TIME
---------- ------------------ ---------- ---------
         1 NOT ACTIVE                  0
         2 NOT ACTIVE                  0
         3 NOT ACTIVE                  0
         4 NOT ACTIVE                  0
         5 NOT ACTIVE             899488 20-JUL-15

总之解决问题就行,SCN的部分着实是需要关注的一个重点,这也是备份恢复的基石。

ORA-01113问题的简单分析相关推荐

  1. R语言splines包构建基于logistic回归的自然样条分析:南非心脏病数据集、非线性:基函数展开和样条分析、你简单分析的不重要特征,可能只是线性不显著、而非线性是显著的

    R语言splines包构建基于logistic回归的自然样条分析:南非心脏病数据集.非线性:基函数展开和样条分析.你简单分析的不重要特征,可能只是线性不显著.而非线性是显著的 目录

  2. [EntLib]微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—上篇...

    在完成了后,今天开始介绍企业库中的新模块:Cryptographer(加密模块),这个模块在日常的大多数项目的作用非常重要,例如:网站会员密码.身份证号.网站配置等,通过对信息进行加密可以保证项目数据 ...

  3. FFmpeg资料来源简单分析:libswscale的sws_getContext()

    ===================================================== FFmpeg库函数的源代码的分析文章: [骨架] FFmpeg源码结构图 - 解码 FFmp ...

  4. howdoi 简单分析

    对howdoi的一个简单分析. 曾经看到过下面的这样一段js代码: try{doSth(); } catch (e){ask_url = "https://stackoverflow.com ...

  5. Mac与Phy组成原理的简单分析

    Mac与Phy组成原理的简单分析 2011-12-28 15:30:43 //http://blog.chinaunix.net/uid-20528014-id-3050217.html 本文乃fir ...

  6. python做数据可视化的代码_Python数据可视化正态分布简单分析及实现代码

    Python说来简单也简单,但是也不简单,尤其是再跟高数结合起来的时候... 正态分布(Normaldistribution),也称"常态分布",又名高斯分布(Gaussiandi ...

  7. ASIHTTPRequest源码简单分析

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 ASIHttprequest 是基于CFNetwork的,由于CFNetwork是比较底层的http库,功能比较少, ...

  8. Hessian 源码简单分析

    Hessian 源码简单分析 Hessian 是一个rpc框架, 我们需要先写一个服务端, 然后在客户端远程的调用它即可. 服务端: 服务端通常和spring 做集成. 首先写一个接口: public ...

  9. python预测股票价格tushare_用tushare对股票进行简单分析

    用tushare对股票进行简单分析(仅供交流学习) import numpy as np import pandas as pd import matplotlib.pyplot as plt imp ...

  10. 智能情绪分析技术_简单分析人工智能的表现在计算机网络应用技术中的优势

    简单分析人工智能的表现在计算机网络应用技术中的优势 大数据时代背景下, 计算机网络技术迅猛发展, 而人工智能技术的发展也进一步推动了计算机网络技术的发展, 两者相互融合, 相互促进, 实现了双赢发展. ...

最新文章

  1. Openstack服务查看镜像报错 nova image-list
  2. CentOS上修改用户名
  3. 想要早睡的最好的办法就是
  4. Eigen(2) 模块与头文件
  5. 学习vi和vim编辑器(8):全局替换(1)
  6. Dubbo-Admin 正式支持 3.0 服务治理
  7. python学习——numpy库
  8. SQL Server调优系列进阶篇(查询优化器的运行方式)
  9. 解决 react-router 中 history is 'undefined' 的问题
  10. DAC+DMA+TIM实现音频播放问题记录
  11. 微信电脑版真的要来了 微信Windows版客户端1.0 Alpha推出
  12. webuploader java版本
  13. Java三种方法实现字符串排序
  14. 一只测试喵的重新启航
  15. linux系统构建学习笔记
  16. 植物2 IOS 怎么实名认证_植物大战僵尸2未来世界22天困难怎么过关 植物阵容推荐...
  17. 仿知乎日报图文小程序模板
  18. 二手车价格预测task03:特征工程
  19. GeoServer操作文档
  20. RouterOS的基本设置

热门文章

  1. Vmware安装vmware-tools后,仍无法上网
  2. 关于np.meshgrid
  3. @autowired注解 抽象类_Spring容器注解注入
  4. matlab三维矩阵的运算符,【求助】多维矩阵求和运算!!
  5. sql server 存储过程_pgRouting教程七:使用SQL存储过程
  6. DateFormat与SimpleDateFormat区别和使用详解
  7. APMServ5.2.6win10系统Apache、MySQL5.1启动失败解决办法
  8. HID Global推出全新室内定位服务 助力企业优化配置劳动力
  9. 刷新页面后怎样让hover样式停留不消失
  10. ubuntu下用户的创建、修改