实验环境: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.dbf8 /u01/app/oracle/oradata/lgr/ts_idx02.dbf7 /u01/app/oracle/oradata/lgr/ts26 /u01/app/oracle/oradata/lgr/ts14 /u01/app/oracle/oradata/lgr/users01.dbf2 /u01/app/oracle/oradata/lgr/sysaux01.dbf1 /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数据文件需要recoverySYS@LGR> recover datafile 1;     ---recover system数据文件
Media recovery complete.
SYS@LGR> alter database open;    ---启动到openDatabase 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恢复数据文件、控制文件相关推荐

  1. RMAN深入解析之--控制文件

        控制文件负责数据库的物理结构,控制文件控制数据库查找物理文件的位置,并控制每个文件当前包含的头信息,其内容包含数据文件信息,重做日志信息和归档日志信息:控制文件还还有与数据库关联的关键文件的每 ...

  2. oracle 控制文件在哪里设置_从Oracle到PostgreSQL:最全控制文件

    原文: 从Oracle到PostgreSQL:最全控制文件(上) https://www.enmotech.com/web/detail/1/770/1.html 从Oracle到PostgreSQL ...

  3. oracle体系三大文件,oracle 体系_第三章控制文件

    第三章 控制文件 1.功能特点 记录数据库当前的物理状态 维护数据库的一致性,是一个二进制的小文件 在mount阶段被读取,记录rman备份的元数据 查看database控制文件的位置 Show pa ...

  4. 从Oracle到PostgreSQL:最全控制文件

    墨墨导读:本文介绍了Oracle和PostgreSQL控制文件基本内容,对如何重建PostgreSQL控制文件进行了详细描述并进行了恢复测试. 控制文件内容 Oracle控制文件内容 从官方文档上可以 ...

  5. Oracle 11g重建控制文件——控制文件全部丢失,从零开始

    控制文件(control file)是一个相当小的文件(最多能增长到64M左右),其中包含Oracle需要的其他文件的一个目录.参数文件告知实例控制文件的位置,控制文件则告知示例数据库和在线重做日志文 ...

  6. 查询oracle数据库错误修改了,【案例】Oracle报错ora-00600[2662] 修改控制文件scn推进数据库scn...

    天萃荷净 运维DBA反映数据库重启后无法启动,报错ora-00600[2662],分析原因为SCN异常导致,通过修改控制文件scn推进数据库scn 在数据库遇到ora-600[2662],scn不一致 ...

  7. oracle增删控制文件,控制文件的增删改及备份

    一.增加一个控制文件 1.首先在数据库在open状态下,spfile里增加一条记录. alter system set control_files= '/u01/app/oracle/oradata/ ...

  8. 电脑如何恢复数据?电脑文件清空了如何恢复数据?

    在日常工作中,我们时常会清理自己的电脑内存,从而保证电脑的工作性能.在清理的过程中,很容易一不小心把什么重要文件给清空了,甚至严重点儿还可能会遇上数据丢失的情况,对于我们的工作而言是十分不利的.那么在 ...

  9. ORACLE 19c rman恢复 ORA-00283 ORA-01610 错误处理

    一.问题:在做数据库恢复演练的时候recover database时报如下错误: SQL> recover database; ORA-00283: recovery session cance ...

最新文章

  1. docker中部署redis主从模式
  2. UFS和eMMC闪存差异在哪?
  3. win 7 DHCP获取不到ip的解决办法
  4. Java之currenHashMap
  5. Google学术发布2019年最有影响力的7篇论文(附下载链接)
  6. 清理net use的BAT
  7. Solr的原理及使用
  8. 常见的国内外Linux服务器运维面板汇总
  9. 51Nod-1136 欧拉函数
  10. Unity3D上路_01-2D太空射击游戏
  11. 7z 类库解析之 Format7zF 工程
  12. com.sun.mail.smtp.protected void rcptTo() 方法
  13. linux系统update和upgrade区别
  14. 算法-时间频度 时间复杂度 空间复杂度
  15. 减字 浣溪沙-听歌有感 (清)况周颐
  16. 《深入理解Android 卷Ⅰ》深入理解init
  17. 思科 计算机网络 第四章测试考试答案
  18. 火车余票查询(python)
  19. 电商运营怎么去学?如何打造爆品?
  20. (二)C# winform C/S WebBrowser qq第三方授权登录

热门文章

  1. 史上最全android分辨率
  2. Android中Bitmap和Drawable 总结
  3. C#制作QQ截图的自动框选功能的个人思路(二)设置Hook
  4. 制打印如下所示的n行数字金字塔_关于央行数字货币的技术猜测
  5. 常见Linux发行版的异同
  6. Guava库学习:学习Concurrency(九)RateLimiter
  7. HTML5实践 -- 使用css装饰你的图片画廊
  8. 如何恢复任务栏中的显示桌面图标?
  9. 牛的障碍Cow Steeplechase
  10. Unit01: Servlet基础 、 HTTP协议