用rman备份,备份后破坏数据文件,再利用备份的库还原数据文件。测试如下:
1.进入rman,关闭数据库,启动加载状态
C:Documents and Settingspengwzh>rman target /
2. 执行备份脚本
run {
configure channel device type disk FORMAT='c:\ora_bak\%U' maxpiecesize = 2G;
sql 'alter system archive log current';
allocate channel disk1 type disk;
backup full as compressed backupset format='c:\ora_bak\%d_t%t_s%s_%U.bak' tag 'fullbak' (database);
release channel disk1;
allocate channel disk2 type disk;
BACKUP as compressed backupset FORMAT 'c:\ora_bak\al_%d_t%t_s%s_%U.arcbak' ARCHIVELOG ALL delete input;
release channel disk2;
allocate channel disk3 type disk;
backup current controlfile format='c:\ora_bak\ctl_%d_t%t_s%s_%U.ctlbak';
release channel disk3;
sql 'alter system archive log current';
}
3. --用test用户进入sqlplus
C:Documents and Settingspengwzh>sqlplus test/test
SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 4月 3 14:29:52 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
--创建表及插入数据
SQL> create table tmp(a varchar(2));
表已创建。
SQL> insert into tmp values('1');
已创建 1 行。
SQL> insert into tmp values('2');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from tmp;
A
--
1
2
--连接sysdba用户,关闭数据库,删除数据文件5
SQL> conn / as sysdba;
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del D:oracleproduct10.2.0oradataorcltest01.ora;
--启动数据库,启动失败,退出sqlplus操作如下:
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 125829824 bytes
Database Buffers 155189248 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 5 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 5: 'D:ORACLEPRODUCT10.2.0ORADATAORCLTEST01.ORA'
SQL> exit;
--进入rman命令提示符,利用rman备份的数据库来恢复删除的数据文件5
C:Documents and Settingspengwzh>rman target /
恢复管理器: Release 10.2.0.1.0 - Production on 星期五 4月 3 14:34:52 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接到目标数据库: ORCL (DBID=1210922825, 未打开)
RMAN> shutdown immediate;
使用目标数据库控制文件替代恢复目录
数据库已卸载
Oracle 实例已关闭
RMAN> startup mount;
已连接到目标数据库 (未启动)
Oracle 实例已启动
数据库已装载
系统全局区域总计 289406976 字节
Fixed Size 1248576 字节
Variable Size 125829824 字节
Database Buffers 155189248 字节
Redo Buffers 7139328 字节
RMAN> restore datafile 5;
启动 restore 于 03-4月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00005恢复到D:ORACLEPRODUCT10.2.0ORADATAORCLTEST01.ORA
通道 ORA_DISK_1: 正在读取备份段 D:BACKUP3KBI3RK_1_1
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:BACKUP3KBI3RK_1_1 标记 = TAG20090403T142556
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:08
完成 restore 于 03-4月 -09
RMAN> recover datafile 5;
启动 recover 于 03-4月 -09
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:03
完成 recover 于 03-4月 -09
RMAN>
--恢复成功,打开数据库,退出rman
RMAN> alter database open;
数据库已打开
RMAN> exit;
恢复管理器完成。
--用test用户连接sqlplus,刚备份之后新建的表及数据是否存在
C:Documents and Settingspengwzh>sqlplus test/test
SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 4月 3 15:01:47 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select * from tmp;
A
--
1
2
SQL>
Tmp表存在,数据也没丢失,虽然数据文件被删了,但还原后可以恢复到被删数据文件时的数据库状态。
附:测试环境如下
查看数据库归档模式
SQL> conn / as sysdba;
已连接。
SQL> archive log list;
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 1
当前日志序列 3
SQL>
查看数据库版本
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16226179/viewspace-701686/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16226179/viewspace-701686/