13.3无备份恢复控制文件

没有备份恢复控制文件其实就是在nomount状态,create control创建一个新的控制文件。

dba必须知道4个信息才能正确的创建:数据库名在线日志路径及其大小在线的可读/写数据文件路径数据库字符集

其中指定数据库字符集是为了在打开数据库之前执行recover tablespace  ..或restore tablespace时可以正确解析表空间名称

--之前在dsi系列介绍了使用bbed查看数据文件头的方式来确定字符集,数据库名等方法。

--maxlogfiles 在线重做日志组数量上限的初始值,能够自动增长
--maxlogmembers日志组内在线日志数量上限的初始值,能够自动增长
--maxloghistory 记录最近产生的日志历史数量上限的初始值,能够自动增长
--maxdatafiles 数据文件数量上限的初始值,能够自动增长,但不能超过data_files的值。
--maxinstances 能够同时打开数据库的实例数,针对RAC环境必须确保该值大于或等于集群中的节点数

--在线日志无损情况下的重建

SQL>STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  ARCHIVELOG
SQL> recover database;
SQL> alter database open;
SQL> select * from v$tempfile;
添加临时表空间
##添加临时表空间
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf' SIZE 61865984  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
如果没有使用catalog,在重建控制文件后,原先保留在控制文件的备份、归档日志信息全部丢失
RMAN> list bakcup;
RMAN> catalog db_recovery_file_des; ##使用catalog命令将他们寻回
RMAN> report need backup;

SQL>CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  ARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292
LOGFILEGROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log'  SIZE 50M BLOCKSIZE 512,GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log'  SIZE 50M BLOCKSIZE 512,GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log'  SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE'/u01/app/oracle/oradata/orcl/system01.dbf','/u01/app/oracle/oradata/orcl/sysaux01.dbf','/u01/app/oracle/oradata/orcl/undotbs01.dbf','/u01/app/oracle/oradata/orcl/users01.dbf','/u01/app/oracle/oradata/orcl/test01.dbf'
CHARACTER SET AL32UTF8
;

View Code

--在线日志损坏情况下的重建

控制文件损坏且没有备份,同时损坏的还有在线日志(current),分别采用重建控制文件和不完全恢复解决

SQL> STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS  ARCHIVELOG

因为控制文件是新建的,此时v$log\v$log_history不能提供任何与检查点进度有关的信息。

明知道是不完全恢复,但可以让rman首先尝试一次完全恢复,看看它能走多远,在没有使用catalog的情况下,使用catalog将备份和归档日志重新录入新的控制文件内

RMAN> catalog db_recovery_file_dest;
RMAN> run {
restore database;
recover database;
}
...
RMAN-06054:media recovery requesting unknown archived log for thead 1 with sequence 22 and starting SCN of 1082040
会看到到22号日志就无法进行了,不完全恢复可以登场了
RMAN> recover database until sequence 22;
RMAN> alter database open resetlogs;
最后添加临时表空间

--具有只读数据文件情况下的重建

“create database”命令datafile子句中不可以声明只读表空间的数据文件,它必须“缺席”,否则控制文件会将只读数据文件当成可读/写的在线数据文件处理

因为只读的数据文件没有任何更新,头部的SCN可能很低,低到库存的归档日志不够而无法恢复该文件,所以,在重建控制文件前,需要确认数据库有没有只读数据文件,如果有,必须特殊处理

--1 启动到nomount
--2 create controlfile创建新的控制文件,其中datafile子句不包含只读数据文件
--3 在mount执行recover database恢复数据库。若RMAN-06504错误继续执行SQLPLUS的recover database using backup controlfile命令,在Specify log提示符出现后输入正确的日志路径
--4 尝试用noresetlogs打开数据库,若不行用resetlogs打开
--5 修正只读数据文件的路径
--6执行alter tablespace ... online将只读表空间上线
--7 添加临时表空间

--SQL> create controlfile
--RMAN> catalog db_recovery_file_dest
--RMAN> recover database(rman-06054)
--SQL> select sequence# from v$archived_Log order by 1;
--SQL>v$Log,v$logfile
--SQL> recover database using backup controfile;
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
--SQL> alter database open resetlogs;
--SQL> alter tablespace test1 online;
--SQL> alter tablepsace temp add tempfile ‘’;

--使用控制文件快照恢复

实际上,控制文件还可能有一个“隐藏”的备份,那就是控制文件快照(control file snapshot),它相当于控制文件的镜像复制,默认路径

[oracle@DSI trace]$ cd $ORACLE_HOME/dbs

-rw-r----- 1 oracle oinstall 10043392 Jul 29 09:57 snapcf_orcl.f

只要曾经备份过控制文件或catalog发生过同步操作,快照就存在

使用快照恢复的一般步骤和使用控制文件镜像复制恢复是一致的

--1 将快照cp到控制文件的路径上
--2 启动到mount
--3 使用RMAN的recover database或者sqlplus的recover database using backup controlfile恢复数据库
--4 打开数据库

或者使用快照生成create controlfile命令

SQL> alter database backup controlfile to trace;

13.4 恢复数据文件

没有备份,数据文件可以在控制文件和数据字典的帮助下通过重做日志恢复,当然不是所有的数据文件都可以在没有备份的情况下恢复,若没有备份,普通数据文件可以在控制文件和数据字典的帮助下通过重做日志恢复。

无备份数据文件的恢复的主要步骤

--1 使用alter database create datafile创建新的空白数据文件
--2 使用recover datafile利用空白数据文件创建以来的所有重做日志恢复该文件

场景:test的数据文件test01.dbf丢失,数据库启动到mount状态报错,但是test自创建以来没有备份

SQL> startup
ORA-01157 : cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6 ...
SQL> alter database datafile 6 offline;
SQL> alter database open;
SQL> alter database create datafile 6;
RMAN> recover datafile 6;
SQL> alter database datafile 6 online;

转载于:https://www.cnblogs.com/yhq1314/p/11270807.html

Oracle 无备份情况下的恢复--控制文件/数据文件相关推荐

  1. Oracle 无备份情况下的恢复--临时文件/在线重做日志/ORA-00205

    13.5 恢复临时文件 临时文件没有也不应该备份.通过V$TEMPFILE可以找到所有的临时文件. 此类文件的损坏会造成需要使用临时表空间的命令执行失败,不至于造成实例崩溃或session中断.由于临 ...

  2. Oracle 无备份情况下的恢复--密码文件/参数文件

    13.1 恢复密码文件 密码文件(linux 为例)在$ORACLE_HOME/dbs目录下,文件名的前缀是orapw,后接数据库实例名. [oracle@DSI backup]$ cd /u01/a ...

  3. Oracle 无备份情况恢复ocr和olr

    Oracle 无备份情况恢复ocr和olr Oracle 11.2 GI中OLR损坏的修复方法 一.先关闭GI,命令不再贴出来了,参见: http://blog.csdn.net/msdnchina/ ...

  4. oracle恢复drop建的表首次,案例:Oracle dul数据挖掘 没有备份情况下非常规恢复drop删除的数据表...

    天萃荷净 通过Oracle dul工具在没有备份情况下进行非常规恢复,找出drop删除的Oracle数据表中的数据进行恢复 dul对被drop对象进行恢复,需要提供两个信息 1.被删除表所属表空间(非 ...

  5. 偷梁换柱 | 无备份情况下的数据恢复实践(二)

    黄玮(Fuyuncat) ♥       资深 Oracle DBA,致力于数据库底层技术的研究,其作品获得广大同行的高度评价. 个人网站 www.HelloDBA.com 在 数据恢复实践(一)中, ...

  6. 偷梁换柱 | 无备份情况下的数据恢复实践

    作者简介 黄玮(Fuyuncat) 资深 Oracle DBA,致力于数据库底层技术的研究,其作品获得广大同行的高度评价. 个人网站 www.HelloDBA.com 在实际环境中,许多数据库环境并没 ...

  7. 无备份情况下恢复MySQL误删的表,这样做再也不用怕误删了

    中国统计网 2017-09-25 20:28 小编寄语 想必大家都知道,Oracle ACE李真旭(Roger)是国内最专业的Oracle 数据库恢复专家.但知识都是触类旁通,真正的专家,从来不会局限 ...

  8. 在有原来的数据的情况下,恢复数据库的数据

    只要把mysql安装目录下的data文件中的ibdata1(储存文件的数据)替换,再把你的库名的文件(只是表结构)加进去.

  9. 拥有所有归档文件,但没有备份情况下的数据文件恢复

    前提条件 1.      归档模式下. 2.      数据文件在当前控制文件之后创建. 否则会报ORA-01178错误. ORA-01178: file 5 created before last ...

最新文章

  1. ERROR LNK2019:无法解析的外部的符号 _sscanf或者_vsprintf
  2. NumPy-快速处理数据
  3. 学计算机的大一新生需要买电脑吗,大一新生到底是否需要买笔记本?学长说出真理,经验分享...
  4. Transformer解析
  5. 去除面部黑色素小妙招_面部黑色素沉着怎么去除 推荐几个去黑色素的方法
  6. vue-cli脚手架中webpack配置基础文件详解
  7. vue 页面url参数_Vue下URL地址栏参数改变却不能刷新界面
  8. 链接标签(HTML)
  9. 这里有110+公开的专业数据集
  10. socks5 转换为 http 代理(使用privoxy)
  11. 计算机设置密码打印机无法共享,win7设置开机密码后无法连接共享打印机
  12. C++超市管理系统(MySQL)
  13. 截至9月28日聚合支付牌照知多少,附名单
  14. C++小游戏 苍穹世界2.2 测试版
  15. 罕见霜降胡杨照片,太美了!
  16. 羽毛球高远球技术动作要领解码
  17. android半透明图层颜色叠加,Android 图层混合模式PorterDuff.Mode
  18. Codeforces ~ 1009C ~ Annoying Present (贪心)
  19. IOS APP的图标尺寸、启动画面尺寸、宣传画面尺寸
  20. 网关支付、、快捷支付、银行卡支付等网上常见支付方式接口说明

热门文章

  1. 第八届蓝桥杯JavaB---承压计算
  2. shiro使用WebService进行验证的实现
  3. php dirname(_FILE_)
  4. 统计文件中以某个字母开头的单词的数目
  5. Hibernate在配置表映射文件时cascade的类型及意义
  6. 修改JBoss-7.1.1 http访问端口并取消JBoss内网访问限制
  7. cmake同时生成动态库与静态库的方法
  8. windows下socket编程GetLastError()函数返回结果与对照表-转
  9. C语言 n的作业,C语言作业练习
  10. first-class type 一等类型的含义