Oracle 无备份情况下的恢复--控制文件/数据文件
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 ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 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
;
--在线日志损坏情况下的重建
控制文件损坏且没有备份,同时损坏的还有在线日志(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;
Oracle 无备份情况下的恢复--控制文件/数据文件的更多相关文章
- Oracle 无备份情况下的恢复--临时文件/在线重做日志/ORA-00205
13.5 恢复临时文件 临时文件没有也不应该备份.通过V$TEMPFILE可以找到所有的临时文件. 此类文件的损坏会造成需要使用临时表空间的命令执行失败,不至于造成实例崩溃或session中断.由于临 ...
- Oracle 无备份情况下的恢复--密码文件/参数文件
13.1 恢复密码文件 密码文件(linux 为例)在$ORACLE_HOME/dbs目录下,文件名的前缀是orapw,后接数据库实例名. [oracle@DSI backup]$ cd /u01/a ...
- Oracle备份恢复之无备份情况下恢复undo表空间
UNDO表空间存储着DML操作数据块的前镜像数据,在数据回滚,一致性读,闪回操作,实例恢复的时候都可能用到UNDO表空间中的数据.如果在生产过程中丢失或破坏了UNDO表空间,可能导致某些事务无法回滚, ...
- 迁移/home目录至新硬盘分区总结--无备份情况下
搞了一天,终于成功迁移.由于一开始就没备份过程实在很曲折. 希望本篇对那些没有备份习惯的朋友们有所帮助. 准备工作: sudo vim /etc/fstab 在文件中加入: /dev/sdb8 ...
- 在没有备份的情况下重新创建丢失的数据文件 (Doc ID 1149946.1)
Recreating a missing datafile with no backups (Doc ID 1149946.1) APPLIES TO: Oracle Database - Enter ...
- oracle基于归档的增量异地恢复 --异地新增数据文件问题
1 rac异地基于归档文件的增量恢复 2 遇到在主库新增数据文件 后 日志恢复出现路径问题 . 错误如下 : creating datafile fno=20 name=+DATA/dataf ...
- windows环境下,svn未备份情况下重新恢复
公司有个同事在未打招呼的情况下把公司服务器进行重新装系统,崩溃啊.SVN之前未备份,还好SVN的库(Repositories)还在,如下图: 恢复办法如下: 由于之前安装的就是VisualSVN-Se ...
- PostgreSQL在没有备份情况下误删除Clog恢复
创建实验表postgres# create table t (n_id int primary key,c_name varchar(300));CREATE TABLEpostgres# inser ...
- Oracle主库归档丢失,备库日志有gap,在不重建备库的情况下,恢复备库
本文主要描述Oracle备库日志与主库日志之间有gap,切主库这部分gap的归档日志已经删除或丢失,如何在不重建备库的情况下,恢复备库. 欢迎转载,请注明作者.出处. 作者:张正 blog:http: ...
随机推荐
- keepalived和lvs实现mysql读负载均衡
keepalived+lvs实现对mysql读负载均衡 环境:redhat 6.5 real server: 172.25.254.189 172.25.254.224 lvs: 172.25.254 ...
- mysql面试题练习01
1.数学函数 有如下表和数组 把num值处于[20,29]之间,改为20 num值处于[30,39]之间的,改为30 ) ; 2.字符串 把good表中商品名为'诺基亚xxxx'的商品,改为'HTCx ...
- Linux日常之命令sed
一. 命令sed简介 利用命令sed能够同时处理多个文件多行的内容,可以不对原文件改动,仅把匹配的内容显示在屏幕上,也可以对原文件进行改动,但是不会在屏幕上返回结果,若想查看改动后的文件,可以使用命令 ...
- windows中ftp下载脚本(bat+vb)
做了个ftp下载脚本: ftpdownload.bat @rem 注释:从ftp服务器每小时下载北向性能文件的脚本 @rem 用vb脚本取昨天 for /f %%a in ('cscript //no ...
- DevExpress WinForms v19.1新版亮点:Tree List等控件性能增强
行业领先的.NET界面控件DevExpress v19.1终于正式发布,本站将以连载的形式介绍各版本新增内容.在本系列文章中将为大家介绍DevExpress WinForms v19.1中新增的一些控 ...
- Vue项目的痛点
前言 用Vue做项目,难免会有痛点,移动端还是PC端,我也总结了下关于问题: 进入详情页的传参问题. 服务器接口跨域 axios封装请求 UI库的按需加载 如何只在当前页面中覆盖ui库中组件的样式 定 ...
- Python的题目
1.将元组 (1,2,3) 和集合 {4,5,6} 合并成一个列表.2.在列表 [1,2,3,4,5,6] 首尾分别添加整型元素 7 和 0.3.反转列表 [0,1,2,3,4,5,6,7] .4.反 ...
- electron 编译报错
放在中文目录下的项目,会编译的时候报错 python 安装目录不要有空格,默认目录就好
- GO语言学习笔记6-Sort的使用
GoLang标准库的sort包提供了排序切片和用户自定义数据集以及相关功能的函数. Sort操作的对象通常是一个slice,需要满足三个基本的接口,并且能够使用整数来索引. 1.sort实现原理 So ...
- linux-系统启动流程-7
1,BIOS开机自检,检查cpu硬件及开机启动顺序,查找第一个磁盘磁头的MBR信息并加载BOOtloader,然后将控制权交与bootloader 2, GRUB GRUB(Grand Unified ...