【Oracle】非RMAN恢复数据文件、控制文件
实验环境:OEL 5.6 oracle 11g(11.2.0.4.0)
注意:
system表空间数据文件不能在线recover,需要启动到mount状态再recover;
undo表空间数据文件可以在线recover;
用到的命令:
ps -ef |grep dbw |grep -v grep
ps -ef |grep ckpt |grep -v grep
ll /proc/7971/fd
1.恢复system表空间文件实验:
SYS@LGR> select * from v$dbfile; ---查看system数据文件的所在位置
FILE# NAME
---------- --------------------------------------------------
10 /u01/app/oracle/oradata/lgr/undotbs02.dbf
8 /u01/app/oracle/oradata/lgr/ts_idx02.dbf
7 /u01/app/oracle/oradata/lgr/ts2
6 /u01/app/oracle/oradata/lgr/ts1
4 /u01/app/oracle/oradata/lgr/users01.dbf
2 /u01/app/oracle/oradata/lgr/sysaux01.dbf
1 /u01/app/oracle/oradata/lgr/system01.dbf
[oracle@localhost ~]$ ps -ef |grep dbw |grep -v grep ---查看DBWR进程号,如果是控制文件则查看CKPT进程号
oracle 7971 1 0 Dec16 ? 00:00:01 ora_dbw0_LGR
[oracle@localhost ~]$ cd /u01/app/oracle/oradata/lgr/ ---切换到system数据文件的所在目录
[oracle@localhost lgr]$ ll
total 2399084
-rw-r----- 1 oracle oinstall 430592 Dec 9 19:37 1_16_929983013.dbf
-rw-r----- 1 oracle oinstall 11776 Dec 9 19:45 1_17_929983013.dbf
-rw-r----- 1 oracle oinstall 1536 Dec 9 19:45 1_18_929983013.dbf
-rw-r----- 1 oracle oinstall 1024 Dec 9 19:46 1_19_929983013.dbf
-rw-r----- 1 oracle oinstall 822784 Dec 9 19:49 1_20_929983013.dbf
-rw-r----- 1 oracle oinstall 334848 Dec 9 20:00 1_21_929983013.dbf
-rw-r----- 1 oracle oinstall 88064 Dec 12 20:40 1_25_929983013.dbf
-rw-r----- 1 oracle oinstall 44032 Dec 12 20:46 1_26_929983013.dbf
-rw-r----- 1 oracle oinstall 52736 Dec 12 20:50 1_27_929983013.dbf
-rw-r----- 1 oracle oinstall 15708160 Dec 12 22:52 1_28_929983013.dbf
-rw-r----- 1 oracle oinstall 356352 Dec 12 23:09 1_29_929983013.dbf
-rw-r----- 1 oracle oinstall 182272 Dec 12 23:21 1_30_929983013.dbf
-rw-r----- 1 oracle oinstall 96256 Dec 12 23:27 1_31_929983013.dbf
-rw-r----- 1 oracle oinstall 264704 Dec 12 23:33 1_32_929983013.dbf
-rw-r----- 1 oracle oinstall 85504 Dec 12 23:43 1_33_929983013.dbf
-rw-r----- 1 oracle oinstall 30996480 Dec 16 21:50 1_34_929983013.dbf
-rw-r----- 1 oracle oinstall 9846784 Dec 17 00:37 ora_control1.ctl
-rw-r----- 1 oracle oinstall 104858112 Dec 16 21:50 redo01a.log
-rw-r----- 1 oracle oinstall 104858112 Dec 9 19:49 redo01b.log
-rw-r----- 1 oracle oinstall 104858112 Dec 17 00:35 redo02a.log
-rw-r----- 1 oracle oinstall 104858112 Dec 9 19:46 redo02b.log
-rw-r----- 1 oracle oinstall 104858112 Dec 9 11:20 redo03a.log
-rw-r----- 1 oracle oinstall 340795392 Dec 17 00:35 sysaux01.dbf
-rw-r----- 1 oracle oinstall 1073750016 Dec 17 00:25 system01.dbf
-rw-r----- 1 oracle oinstall 104865792 Dec 12 23:40 tbs.dbf
-rw-r----- 1 oracle oinstall 20979712 Dec 16 22:00 temp01.dbf
-rw-r----- 1 oracle oinstall 10493952 Dec 6 10:41 temp1
-rw-r----- 1 oracle oinstall 10493952 Dec 5 22:00 temp2
-rw-r----- 1 oracle oinstall 41951232 Dec 16 21:50 ts1
-rw-r----- 1 oracle oinstall 104865792 Dec 16 21:50 ts2
-rw-r----- 1 oracle oinstall 41951232 Dec 16 21:50 ts_idx02.dbf
-rw-r----- 1 oracle oinstall 104865792 Dec 17 00:35 undotbs02.dbf
-rw-r----- 1 oracle oinstall 52436992 Dec 16 21:50 users01.db
[oracle@localhost lgr]$ rm -f system01.dbf ---删除system数据文件
system数据文件丢失后,数据库可能不会立即觉察,仍然可以做正常操作,这只会在Linux/Unix上出现,windows中不会出现。
[oracle@localhost lgr]$ ll /proc/7971/fd
total 0
lr-x------ 1 oracle oinstall 64 Dec 17 00:47 0 -> /dev/null
l-wx------ 1 oracle oinstall 64 Dec 17 00:47 1 -> /dev/null
lrwx------ 1 oracle oinstall 64 Dec 17 00:47 10 -> /u01/app/oracle/product/11.2.0/db_1/dbs/lkLGR
lr-x------ 1 oracle oinstall 64 Dec 17 00:47 11 -> /u01/app/oracle/product/11.2.0/db_1/rdbms/mesg/oraus.msb
l-wx------ 1 oracle oinstall 64 Dec 17 00:47 2 -> /dev/null
lrwx------ 1 oracle oinstall 64 Dec 17 00:47 256 -> /u01/app/oracle/oradata/lgr/ora_control1.ctl
lrwx------ 1 oracle oinstall 64 Dec 17 00:47 257 -> /u01/app/oracle/oradata/lgr/system01.dbf (deleted) ---会一直闪:Hi,I'm here!
lrwx------ 1 oracle oinstall 64 Dec 17 00:47 258 -> /u01/app/oracle/oradata/lgr/sysaux01.dbf
lrwx------ 1 oracle oinstall 64 Dec 17 00:47 259 -> /u01/app/oracle/oradata/lgr/users01.dbf
lrwx------ 1 oracle oinstall 64 Dec 17 00:47 260 -> /u01/app/oracle/oradata/lgr/ts1
lrwx------ 1 oracle oinstall 64 Dec 17 00:47 261 -> /u01/app/oracle/oradata/lgr/ts2
lrwx------ 1 oracle oinstall 64 Dec 17 00:47 262 -> /u01/app/oracle/oradata/lgr/ts_idx02.dbf
lrwx------ 1 oracle oinstall 64 Dec 17 00:47 263 -> /u01/app/oracle/oradata/lgr/undotbs02.dbf
lrwx------ 1 oracle oinstall 64 Dec 17 00:47 264 -> /u01/app/oracle/oradata/lgr/temp01.dbf
[oracle@localhost lgr]$ cp /proc/7971/fd/257 /u01/app/oracle/oradata/lgr/system01.dbf ---把文件复制到system数据文件原来的位置
SYS@LGR> shutdown immediate ---关闭数据库
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@LGR> startup
ORACLE instance started. ---重启 Total System Global Area 835104768 bytes
Fixed Size 2257840 bytes
Variable Size 536874064 bytes
Database Buffers 289406976 bytes
Redo Buffers 6565888 bytes
Database mounted.
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/u01/app/oracle/oradata/lgr/system01.dbf' ---错误提示,system数据文件需要recovery SYS@LGR> recover datafile 1; ---recover system数据文件
Media recovery complete.
SYS@LGR> alter database open; ---启动到open Database altered.
2.undo数据文件的恢复和system的恢复步骤基本相同,不同之处:
拷贝完数据文件后:
①:将数据文件offline
alter database datafile 6 offline;
select file#,status,name from v$datafile;
②:恢复数据文件
recover datafile 6;
③:将数据文件online
alter database datafile 6 online;
3.如果丢失的非undo/system数据文件,则可以在线恢复,步骤如下:
①:将数据文件offline
alter database datafile 6 offline;
select file#,status,name from v$datafile;
②:恢复数据文件
recover datafile 6;
③:将数据文件online
alter database datafile 6 online;
4.控制文件的恢复和system恢复基本相同,不同之处是:
①需要用到 ps -ef |grep ckpt |grep -v grep 查ckpt的进程号;
②拷贝完数据文件后,直接停启库,不需要recovery。
【Oracle】非RMAN恢复数据文件、控制文件的更多相关文章
- oracle 11g 数据库恢复技术 ---02 控制文件
oracle 11g 数据库恢复技术 ---02 控制文件 SYS@ orcl >show parameter control_file NAME TYPE VALUE ------------ ...
- Oracle 物理结构(四) 文件-控制文件
一.什么是控制文件 控制文件是Oracle数据库中十分重要的文件.Oracle启动时,首先会读取参数文件,读取了参数文件,实例所需要的共享内存和后台进程就可以启动了,这就是数据库实例的nomunt阶段 ...
- RMAN恢复数据文件
实验之前先备份数据库 RMAN>backup database; 在操作系统中删除数据文件 5 SQL> startup ORACLE 例程已经启动. Total System Globa ...
- ORACLE 移动数据文件 控制文件 重做日志文件
ORACLE数据库有时候需要对存储进行调整,增加分区.IO调优等等,此时需要移动数据文件.重做日志文件.控制文件等等,下文结合例子总结一下这方面的知识点. 进行数据文件.重做日志文件.控制文件的迁移前 ...
- ORACLE查看数据文件-控制文件-日志文件-表空间信息
1.查看当前数据库中的所有用户:select username from dba_users; 2.查看当前会话登录的用户:show user或select username from user_us ...
- oracle学习之数据库数据保存成文件
常常需要将数据库中的数据生成文档,由于比较喜欢脚本的方式,所以就需要使用spool的时候进行格式设置,以下简单整理了一下oracle中进行格式设置的一些东西,一共十八条,其实常用的也就那么几个,稍后会 ...
- oracle之 RAC 11G ASM下控制文件多路复用
如果数据库仅有一组control file文件,需要添加一组或者多组,保证一组文件损坏或者丢失导致数据库宕机. -- 环境说明SQL> select * from v$version;BANNE ...
- 从binlog恢复数据及Mysqlbinlog文件删除
做了mysql主从也有一段时间了,这两天检查磁盘空间情况,发现放数据库的分区磁盘激增了40多G,一路查看下来,发现配置好主从复制以来到现在的binlog就有40多G,原来根源出在这里,查看了一下my. ...
- 使用rman恢复数据小结
恢复前提有数据备份 以 alter database open resetlogs 开机以后多要做一次全备(以前的备份失效了) 恢复参数文件: restore spfile from '/home/o ...
随机推荐
- webstorm中vue项目--运行配制
## npm搭建的项目,需要运行npm run dev来启动 webstorm作为一款优秀的编辑器,通过配置运行设置,达到一键运行 1.添加node.js配置 2.configuration-> ...
- SQLServer · BUG分析 · Agent 链接泄露分析(转载)
背景 SQLServer Agent作为Windows服务提供给用户定期执行管理任务,这些任务被称为Job:考虑应用镜像的场景如何解决Job同步问题,AWS RDS的做法是不予理会,由用户维护Job, ...
- Codeforces 816C/815A - Karen and Game
传送门:http://codeforces.com/contest/816/problem/C 本题是一个模拟问题. 有一个n×m的矩阵.最初,这个矩阵为零矩阵O.现有以下操作: a.行操作“row ...
- VS2015 C++ 获取 Edit Control 控件的文本内容,以及把获取到的CString类型的内容转换为 int 型
UpdateData(true); //读取编辑框内容,只要建立好控件变量后调用这个函数使能,系统就会自动把内容存在变量里 //这里我给 Edit Control 控件创建了一个CString类型.V ...
- 洛谷 P3227 BZOJ 3144 [HNOI2013]切糕
题目描述 经过千辛万苦小 A 得到了一块切糕,切糕的形状是长方体,小 A 打算拦腰将切糕切成两半分给小 B.出于美观考虑,小 A 希望切面能尽量光滑且和谐.于是她找到你,希望你能帮她找出最好的切割方案 ...
- 如何用PYTHON的CGIHTTPSERVER模块模拟POST请求?
这次又要逼真一点点,可以弄POST请求啦. 在WEB根目录下新建cgi-bin目录(据说是规模要求),然后运行命令: python -m CGIHTTPServer CGI-BIN目录下,form.p ...
- HDU 3691
一个源点,一个汇点,明显是网络流的问题,但据说用网络流来求最小割,会超时..囧,那出题的人是怎么想的... 用SW的算法来求最小割. #include <iostream> #includ ...
- Github Pages 建立过程记录
之前建立过一个測试页面. 如今在折腾CreateJS 试着把离线版的文档传到github pages上面. 第一步:创建Repository 第二步:本地初始化 主要命令:git init 第三步:复 ...
- Java IO之简单输入输出
Java中的IO分为两个部分,以InputStream和Reader为基类的输入类,以OutputStream和Writer为基类的输出类. 当中InputStream和OutputStream以字节 ...
- uva live 6827 Galaxy collision
就是给出非常多点,要求分成两个集合,在同一个集合里的点要求随意两个之间的距离都大于5. 求一个集合.它的点数目是全部可能答案中最少的. 直接从随意一个点爆搜,把它范围内的点都丢到跟它不一样的集合里.不 ...