Oracle RMAN模拟数据文件丢失简单恢复方法

php中文网
发布: 2016-06-07 17:12:17
原创
1269人浏览过

1 Oracle创建简单项目环境1)创建表空间SQLgt; create tablespace dreamtry_tbs datafile

1 oracle创建简单项目环境
1)创建表空间
sql> create tablespace dreamtry_tbs datafile 'd:\oracledate\dreamtry_tbs01.dbf' size 100m;
表空间已创建。
2)创建用户
sql> create user dreamtry identified by dreamtry;
用户已创建。
3)给用户分配表空间
sql> alter user dreamtry default tablespace dreamtry_tbs quota unlimited on dreamtry_tbs;
用户已更改。
4)取消用户对表空间都拥有写权限(这点非必须,建议执行)
sql> alter user dreamtry default tablespace dreamtry_tbs quota unlimited on dreamtry_tbs;
用户已更改。
5)给用户分配基本权限 (可以加上with admin option)
sql> grant connect,resource to dreamtry;
授权成功。
6)切换用户
sql> conn dreamtry/dreamtry;
已连接。
2 模拟数据文件丢失的恢复(前提是以前有过备份,并且有日志)
1)       备份数据文件
rman> backup datafile 'd:\oracledate\dreamtry_tbs01.dbf' format 'd:\oracle\product\10.2.0\oradata\orcl\dreamtry_tbs01.dbf';
启动 backup 于 01-3月 -12
使用目标数据库控制文件替代恢复目录
分配的通道: ora_disk_1
通道 ora_disk_1: sid=145 devtype=disk
通道 ora_disk_1: 启动全部数据文件备份集
通道 ora_disk_1: 正在指定备份集中的数据文件
输入数据文件 fno=00007 name=d:\oracledate\dreamtry_tbs01.dbf
通道 ora_disk_1: 正在启动段 1 于 01-3月 -12
通道 ora_disk_1: 已完成段 1 于 01-3月 -12
段句柄=d:\oracle\product\10.2.0\oradata\orcl\dreamtry_tbs01.dbf 标记=tag20120301t223142 注释=none
通道 ora_disk_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 01-3月 -12
2)       切换用户dreamtry模拟数据操作
sql> conn dreamtry/dreamtry;
已连接。
sql> create table test(id number(10), name varchar2(20));
表已创建。
sql> insert into test(id,name) values(1,'zhangsan');
已创建 1 行。
sql> select * from test;
id name
---------- --------------------
1 zhangsan
3)       模拟数据文件dreamtry_tbs01.dfb丢失
手工删除os文件dreamtry_tbs01.dbf(移到别处也可,以防万一)
sql> startup
oracle 例程已经启动。
total system global area  612368384 bytes
fixed size                  1250428 bytes
variable size             251661188 bytes
database buffers          352321536 bytes
redo buffers                7135232 bytes
数据库装载完毕。
ora-01157: 无法标识/锁定数据文件 7 - 请参阅 dbwr 跟踪文件
ora-01110: 数据文件 7: 'd:\oracledate\dreamtry_tbs01.dbf'
sql> select status from v$instance;
status
------------
mounted
如上数据库只能启动mount状态.
4)       使用备份的数据文件恢复(当然在有日志的情况下没有备份也是可以恢复的)
rman> restore datafile 7;
启动 restore 于 01-3月 -12
使用通道 ora_disk_1
通道 ora_disk_1: 正在开始恢复数据文件备份集
通道 ora_disk_1: 正在指定从备份集恢复的数据文件
正将数据文件00007恢复到d:\oracledate\dreamtry_tbs01.dbf
通道 ora_disk_1: 正在读取备份段 d:\oracle\product\10.2.0\oradata\orcl\dreamtry_tbs01.dbf
通道 ora_disk_1: 已恢复备份段 1
段句柄 = d:\oracle\product\10.2.0\oradata\orcl\dreamtry_tbs01.dbf 标记 = tag20120301t223142
通道 ora_disk_1: 恢复完成, 用时: 00:00:04
完成 restore 于 01-3月 -12
5)       通过日志恢复备份以后操作数据库的内容
rman> recover datafile 7;
启动 recover 于 01-3月 -12
使用通道 ora_disk_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:03
完成 recover 于 01-3月 -12
6)       打开数据库
rman> alter database open;
数据库已打开
7)       验证数据
sql> select * from dreamtry.test;
id name
---------- --------------------
1 zhangsan
8)       由于是模拟,我还是把备份删掉以免占用空间
rman> list backup;
备份集列表
===================
bs 关键字  类型 lv 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
3       full    88.00k     disk        00:00:02     01-3月 -12
bp 关键字: 3   状态: available  已压缩: no  标记: tag20120301t223142
段名:d:\oracle\product\10.2.0\oradata\orcl\dreamtry_tbs01.dbf
备份集 3 中的数据文件列表
文件 lv 类型 ckp scn    ckp 时间   名称
---- -- ---- ---------- ---------- ----
7       full 1068184    01-3月 -12 d:\oracledate\dreamtry_tbs01.dbf
rman> delete backupset 3;
分配的通道: ora_disk_1
通道 ora_disk_1: sid=145 devtype=disk
备份段列表
bp 关键字  bs 关键字  pc# cp# 状态      设备类型段名称
------- ------- --- --- ----------- ----------- ----------
3       3       1   1   available   disk        d:\oracle\product\10.2.0\oradata\orcl\dreamtry_tbs01.dbf
是否确定要删除以上对象 (输入 yes 或 no)? yes
已删除备份段
备份段 handle=d:\oracle\product\10.2.0\oradata\orcl\dreamtry_tbs01.dbf recid=3 stamp=776817102
1 对象已删除
rman> crosscheck backup;
使用通道 ora_disk_1
rman> delete expired backup;
使用通道 ora_disk_1
9)       结论:日志是最后一道防线,所以最好先备份,最好也对archive log也备份,还是以防万一.

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号