博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
删除表空间,有rman全备的恢复(使用dbms_backup_restore来进行恢复)
阅读量:2428 次
发布时间:2019-05-10

本文共 5819 字,大约阅读时间需要 19 分钟。

删除表空间,有rman全备的恢复

错删除表空间,有rman全备的恢复
错删除表空间,有rman全备的恢复
1.生成测试数据
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 105978600 bytes
Fixed Size 453352 bytes
Variable Size 79691776 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> select * from a;
select * from a
*
ERROR 位于第 1 行:
ORA-00942: 表或视图不存在
已用时间: 00: 00: 00.00
SQL> create table a (a int) tablespace users;
表已创建。
已用时间: 00: 00: 00.02
SQL> insert into a values (10)
2 ;
已创建 1 行。
已用时间: 00: 00: 00.00
SQL> commit;
提交完成。
已用时间: 00: 00: 00.00
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 d:oracleoradatartestarchive
最早的概要日志序列 1
下一个存档日志序列 2
当前日志序列 2
SQL> alter system switch logfile;
系统已更改。
已用时间: 00: 00: 00.00
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 d:oracleoradatartestarchive
最早的概要日志序列 2
下一个存档日志序列 3
当前日志序列 3
SQL> alter system switch logfile;
系统已更改。
已用时间: 00: 00: 03.00
SQL> select max(ktuxescnw * power(2, 32) + ktuxescnb) scn from x$ktuxe;
SCN
----------
69701
已用时间: 00: 00: 00.00
SQL> select max(ktuxescnw * power(2, 32) + ktuxescnb) scn from x$ktuxe;
SCN
----------
69783
已用时间: 00: 00: 00.00
SQL> select * from a;
A
----------
10
已用时间: 00: 00: 00.00
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 d:oracleoradatartestarchive
最早的概要日志序列 4
下一个存档日志序列 5
当前日志序列 5
2.做全备
RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
这里是CONFIGURE CONTROLFILE AUTOBACKUP OFF
RMAN> run {
2> allocate channel C1 type disk;
3> backup full tag 'FullBackup' format 'D:backupfull%d_%u_%s_%p.dbf' database include current controlfile;
4> sql ' alter system archive log current';
5> release channel C1;
6> }
RMAN> list backup;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
1 Full 191M DISK 00:00:21 09-6月 -06
BP 关键字: 1 状态: AVAILABLE 标记:FULLBACKUP
段名:D:BACKUPFULLRTEST_02HL6K65_2_1.DBF
包含的 SPFILE: 修改时间: 08-6月 -06
备份集 1 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
1 Full 69776 09-6月 -06 D:ORACLEORADATARTESTSYSTEM01.DBF
2 Full 69776 09-6月 -06 D:ORACLEORADATARTESTUNDOTBS01.DBF
3 Full 69776 09-6月 -06 D:ORACLEORADATARTESTUSERS01.DBF
注意这里的SCN,以后要恢复到这个SCN.这里没有用backup filesperset 3 archivelog all delete input;命令备份归档文件.如果这个执行了这个命令那么在最后恢复的时候要restore归档文件.
3.删表空间
SQL> drop tablespace users including contents;
表空间已丢弃。
已用时间: 00: 00: 01.02
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 d:oracleoradatartestarchive
最早的概要日志序列 4
下一个存档日志序列 5
当前日志序列 5
SQL> select max(ktuxescnw * power(2, 32) + ktuxescnb) scn from x$ktuxe;
SCN
----------
69874
已用时间: 00: 00: 00.00
删tablespace users的OS文件
4.shutdown immediate
5.从全备中恢复控制文件
SQL> startup nomount;
ORACLE 例程已经启动。
Total System Global Area 105978600 bytes
Fixed Size 453352 bytes
Variable Size 79691776 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
RMAN> restore controlfile from 'D:backupFULL02HL6FFO_2_1';
6.用dbms_backup_restore还原所有数据文件.注意是所有的数据文件,而不单是users表空间的数据文件.
SQL> DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>01,toname=>'D:oracleo
radatartestSYSTEM01.DBF');
8 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>02,toname=>'D:oracleo
radatartestUNDOTBS01.DBF');
9 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>03,toname=>'D:oracleo
radatartestUSERS01.DBF');
10 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'D:backupFU
LLRTEST_02HL6K65_2_1.DBF', params=>null);
11 sys.dbms_backup_restore.deviceDeallocate;
12 END;
13 /
PL/SQL 过程已成功完成。
已用时间: 00: 00: 02.02
/这时已经有D:oracleoradatartestUSERS01.DBF文件了.
SQL> startup force mount;
ORACLE 例程已经启动。
Total System Global Area 105978600 bytes
Fixed Size 453352 bytes
Variable Size 79691776 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
7.不完全恢复数据库到scn=69776时,注意这里要做不完全恢复,如果用until cancel,就恢复不了users表空间
RMAN> Recover database until scn 69776;
启动 recover 于 09-6月 -06
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 4 已作为文件 D:ORACLEORADATARTESTREDO01.LOG 存在于磁盘上
存档日志文件名 =D:ORACLEORADATARTESTREDO01.LOG 线程 =1 序列 =4
完成介质的恢复
完成 recover 于 09-6月 -06
(如果开始备份了归档文件,并删除了,那么要先用dbms_backup_restore.restoreSetArchivedLog来恢复归档文件,如果直接执行RMAN>restore ARCHIVELOG ALL会报错RMAN-20242: specification does not match any archive log in the recovery catalog)
恢复归档文件的命令举例如下:
DECLARE
devtype varchar2(256);
done boolean;
BEGIN
devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');
sys.dbms_backup_restore.restoreSetArchivedLog(destination=>'D:ORACLEORADATAARCHIVELOG');
sys.dbms_backup_restore.restoreArchivedLogRange;
sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'D:TESTRMANFULL_LOG_03HKHN39_1_1.BAK', params=>null);
sys.dbms_backup_restore.deviceDeallocate;
END;
/
8.打开数据库
SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
已用时间: 00: 00: 00.04
SQL> alter database open resetlogs;
数据库已更改。
已用时间: 00: 00: 06.07
SQL> select * from a;
A
----------
10
已用时间: 00: 00: 00.00
SQL>
最初想通过rman来恢复数据文件,但是发现不行,全备中控制文件的备份没有记录备份的信息,如果是CONFIGURE CONTROLFILE AUTOBACKUP ON,那么通过
控制文件单独备份的备份集来恢复控制文件,那么就可以rman来恢复数据文件.
ref: [@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7916042/viewspace-890976/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7916042/viewspace-890976/

你可能感兴趣的文章
打开数“智”化之门,一字之差带来的思考
查看>>
阿里技术人的成长路径是什么?
查看>>
你值得拥有!更省钱地完成数据监听
查看>>
漫画 | TCP,一个悲伤的故事
查看>>
张一鸣无圈胜破圈?
查看>>
抓紧!抓紧!CSDN年终重榜福利来了~人手一份,快来投稿!!
查看>>
干货! AI 推断解决方案栈 Vitis AI 全流程独家解析
查看>>
真相了 | 敲代码时,程序员戴耳机究竟在听什么?
查看>>
回首互联网十年,我们能从八次烧钱大战中学到什么
查看>>
漫画:如何辨别二逼互联网公司!?
查看>>
麒麟信安面向场景化创新,赋能openEuler商业验证
查看>>
王者又连跪了?快让 AI 帮你上分!
查看>>
1 分钟带你认识从 "�" 到 "锟斤拷"
查看>>
3 年培养 10 万“码农”,郑州推出“码农计划”
查看>>
一个三本程序猿的大厂逆袭之路
查看>>
程序员弃码投中医?还做成了不错的生意! | 极客视频
查看>>
百度一 29 岁程序员因“篡改数据”被抓
查看>>
去年我年薪 30W,今年我一天做 3 顿饭
查看>>
入职大厂,我容易吗?
查看>>
《互联网人退化简史》
查看>>