|
原帖由 棉花糖ONE 于 2008-3-13 17:30 发表 ![]()
我觉得不用删除所有数据文件,如果是裸设备这也太麻烦了~,也不用恢复控制文件,直接用现在的就可以,lz要恢复的时间点数据文件的结构也没有改变~
如下:
---1.建立测试环境
全备数据库;
建立lz的test表(将被truncate的那个);
创建TS1表空间,并在上面建立T表(用来测试是否可以恢复TS1表空间数据);
C:\Documents and Settings\RequieM>sqlplus " / as sysdba"
SQL*Plus: Release 9.2.0.8.0 - Production on 星期四 3月 13 19:13:41 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
已连接到空闲例程。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 101785012 bytes
Fixed Size 454068 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> exit
从Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production中断开
C:\Documents and Settings\RequieM>rman target /
恢复管理器: 版本9.2.0.8.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: MYDB (DBID=2561219694)
RMAN> report schema;
正在使用目标数据库控制文件替代恢复目录
数据库方案报表
文件 KB 表空间 RB segs 数据文件名称
---- ---------- -------------------- ------- -------------------
1 409600 SYSTEM *** F:\ORACLE\ORADATA\MYDB\SYSTEM01.DBF
2 204800 UNDOTBS1 *** F:\ORACLE\ORADATA\MYDB\UNDOTBS01.DB
F
3 102400 TEST *** F:\ORACLE\ORADATA\MYDB\TEST.DBF
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 ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'F:\oracle\oraba
ckup\MYDB\%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'F:\oracle\orabackup\MYDB\%d_%s_%p.B
AK';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'F:\ORACLE\PRODUCT\9.2.0\DATABASE\SNCFMYD
B.ORA'; # default
RMAN> backup database include current controlfile plus archivelog delete all inp
ut;
启动 backup 于 13-3月 -08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=12 devtype=DISK
分配的通道: ORA_DISK_2
通道 ORA_DISK_2: sid=13 devtype=DISK
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =32 记录 ID=30 时间戳=648952586
通道 ORA_DISK_1: 正在启动段 1 于 13-3月 -08
通道 ORA_DISK_1: 已完成段 1 于 13-3月 -08
段 handle=F:\ORACLE\ORABACKUP\MYDB\MYDB_45_1.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
通道 ORA_DISK_1: 正在删除存档日志
存档日志文件名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_32.DBF 记录 ID=30 时间戳 =64895
2586
完成 backup 于 13-3月 -08
启动 backup 于 13-3月 -08
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00002 name=F:\ORACLE\ORADATA\MYDB\UNDOTBS01.DBF
输入数据文件 fno=00003 name=F:\ORACLE\ORADATA\MYDB\TEST.DBF
通道 ORA_DISK_1: 正在启动段 1 于 13-3月 -08
通道 ORA_DISK_2: 正在启动 full 数据文件备份集
通道 ORA_DISK_2: 正在指定备份集中的数据文件
备份集中包括当前控制文件
输入数据文件 fno=00001 name=F:\ORACLE\ORADATA\MYDB\SYSTEM01.DBF
通道 ORA_DISK_2: 正在启动段 1 于 13-3月 -08
通道 ORA_DISK_1: 已完成段 1 于 13-3月 -08
段 handle=F:\ORACLE\ORABACKUP\MYDB\MYDB_46_1.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:09
通道 ORA_DISK_2: 已完成段 1 于 13-3月 -08
段 handle=F:\ORACLE\ORABACKUP\MYDB\MYDB_47_1.BAK comment=NONE
通道 ORA_DISK_2: 备份集已完成, 经过时间:00:00:24
完成 backup 于 13-3月 -08
启动 backup 于 13-3月 -08
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
说明与恢复目录中的任何存档日志均不匹配
完成 backup 于 13-3月 -08
启动 Control File and SPFILE Autobackup 于 13-3月 -08
段 handle=F:\ORACLE\ORABACKUP\MYDB\C-2561219694-20080313-00 comment=NONE
完成 Control File and SPFILE Autobackup 于 13-3月 -08
RMAN> exit
恢复管理器完成。
C:\Documents and Settings\RequieM>sqlplus " / as sysdba"
SQL*Plus: Release 9.2.0.8.0 - Production on 星期四 3月 13 19:17:08 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
连接到:
Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production
SQL> alter database open;
数据库已更改。
SQL> create table test tablespace TEST as select * from v$version;
表已创建。
SQL> select * from test;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
PL/SQL Release 9.2.0.8.0 - Production
CORE 9.2.0.8.0 Production
TNS for 32-bit Windows: Version 9.2.0.8.0 - Production
NLSRTL Version 9.2.0.8.0 - Production
SQL> CREATE TABLESPACE "TS1"
2 LOGGING
3 DATAFILE 'F:\ORACLE\ORADATA\MYDB\TS1.ora' SIZE 5M EXTENT
4 MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
5 /
表空间已创建。
SQL> create table T tablespace TS1 as select * from v$version;
表已创建。
SQL> select * from T;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
PL/SQL Release 9.2.0.8.0 - Production
CORE 9.2.0.8.0 Production
TNS for 32-bit Windows: Version 9.2.0.8.0 - Production
NLSRTL Version 9.2.0.8.0 - Production
---2.开始模拟错误
记录当前SCN;(实际环境可以logmnr来查)
truncate 表test;
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
99420
SQL> truncate table TEST;
表已截掉。
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
99434
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 101785012 bytes
Fixed Size 454068 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> exit
从Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production中断开
关闭数据库后,做基于SCN的不完全恢复,发现失败,因为datafile 4,也就是TS1表空间的数据文件没有备份~
C:\Documents and Settings\RequieM>target /
'target' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
C:\Documents and Settings\RequieM>rman target /
恢复管理器: 版本9.2.0.8.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: MYDB (DBID=2561219694)
RMAN> report schema;
正在使用目标数据库控制文件替代恢复目录
数据库方案报表
文件 KB 表空间 RB segs 数据文件名称
---- ---------- -------------------- ------- -------------------
1 409600 SYSTEM *** F:\ORACLE\ORADATA\MYDB\SYSTEM01.DBF
2 204800 UNDOTBS1 *** F:\ORACLE\ORADATA\MYDB\UNDOTBS01.DB
F
3 102400 TEST *** F:\ORACLE\ORADATA\MYDB\TEST.DBF
4 5120 TS1 *** F:\ORACLE\ORADATA\MYDB\TS1.ORA
RMAN> run {
2> set until scn 99420;
3> restore database;
4> recover database;
5> }
正在执行命令: SET until clause
启动 restore 于 13-3月 -08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=12 devtype=DISK
分配的通道: ORA_DISK_2
通道 ORA_DISK_2: sid=13 devtype=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 03/13/2008 19:25:55
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN> exit
恢复管理器完成。
--- 使用命令 ALTER DATABASE CREATE DATAFILE 4 AS 'F:\ORACLE\ORADATA\MYDB\TS1.ORA' reuse 清空datafile4
C:\Documents and Settings\RequieM>sqlplus " / as sysdba"
SQL*Plus: Release 9.2.0.8.0 - Production on 星期四 3月 13 19:28:58 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
连接到:
Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production
SQL> ALTER DATABASE CREATE DATAFILE 4 AS 'F:\ORACLE\ORADATA\MYDB\TS1.ORA' reuse;
数据库已更改。
SQL> exit
从Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production中断开
基于SCN再次转储除datafile 4,以外的所有数据文件~然后恢复数据库;
C:\Documents and Settings\RequieM>rman target /
恢复管理器: 版本9.2.0.8.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: MYDB (DBID=2561219694)
RMAN> run {
2> set until scn 99420;
3> restore datafile 1,2,3;
4> recover database;
5> }
正在执行命令: SET until clause
启动 restore 于 13-3月 -08
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00002恢复到F:\ORACLE\ORADATA\MYDB\UNDOTBS01.DBF
正将数据文件00003恢复到F:\ORACLE\ORADATA\MYDB\TEST.DBF
通道 ORA_DISK_2: 正在开始恢复数据文件备份集
通道 ORA_DISK_2: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到F:\ORACLE\ORADATA\MYDB\SYSTEM01.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=F:\ORACLE\ORABACKUP\MYDB\MYDB_46_1.BAK tag=TAG20080313T191627 params=N
ULL
通道 ORA_DISK_1: 恢复完成
通道 ORA_DISK_2: 已恢复备份段 1
段 handle=F:\ORACLE\ORABACKUP\MYDB\MYDB_47_1.BAK tag=TAG20080313T191627 params=N
ULL
通道 ORA_DISK_2: 恢复完成
完成 restore 于 13-3月 -08
启动 recover 于 13-3月 -08
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
正在开始介质的恢复
完成介质的恢复
完成 recover 于 13-3月 -08
RMAN> exit
恢复管理器完成。
恢复成功~! 打开数据库,查看TEST已经恢复,并且TS1中的数据并未丢失~
C:\Documents and Settings\RequieM>sqlplus " / as sysdba"
SQL*Plus: Release 9.2.0.8.0 - Production on 星期四 3月 13 19:30:36 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
连接到:
Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production
SQL> alter database open resetlogs;
数据库已更改。
SQL> select * from test;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
PL/SQL Release 9.2.0.8.0 - Production
CORE 9.2.0.8.0 Production
TNS for 32-bit Windows: Version 9.2.0.8.0 - Production
NLSRTL Version 9.2.0.8.0 - Production
SQL> select * from T;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
PL/SQL Release 9.2.0.8.0 - Production
CORE 9.2.0.8.0 Production
TNS for 32-bit Windows: Version 9.2.0.8.0 - Production
NLSRTL Version 9.2.0.8.0 - Production
如果LZ在建立表空间或添加数据文件后及时地备份了新加入的数据文件,就跟简单了,直接不完全恢复就可以~ |
|