rman备份恢复表空间
1 创建数据表空间
SQL> create tablespace test_tablespace logging datafile '/u01/app/oracle/oradata/orcl/test_tablespace.dbf'
size 10M autoextend on next 10M maxsize 100M;
2 创建用户test_user,隶属于test_tablespace表空间,赋予用户DBA权限
SQL> create user test_user identified by 123456 default tablespace test_tablespace;
SQL> grant dba to test_user;
3 登录test_user用户并建立新表test_table
SQL> conn test_user/123456;
已连接。
SQL> create table test_table(id number);
SQL> insert into test_table values(1001);
SQL> insert into test_table values(1002);
4 进RMAN环境并备份表空间
SQL> host
$ rman
RMAN> connect target /
连接到目标数据库: ORCL (DBID=1402553115)
RMAN> backup tablespace test_tablespace tag='test001';
启动 backup 于 20-3月 -15
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=42 设备类型=DISK
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00005 名称=/u01/app/oracle/oradata/orcl/test_tablespace.dbf
通道 ORA_DISK_1: 正在启动段 1 于 20-3月 -15
通道 ORA_DISK_1: 已完成段 1 于 20-3月 -15
段句柄=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2015_03_20/o1_mf_nnndf_TEST001_bjqr25yy_.bkp 标记=TEST001 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
完成 backup 于 20-3月 -15
5 用sys用户登录数据库,修改表空间test_tablespace状态为offline
RMAN> exit
$ exit
SQL> conn / as sysdba;
SQL> alter tablespace test_tablespace offline;
表空间已更改。
6 新开一个终端,破坏表空间test_tablespace(删除此文件或改名)
# cd /u01/app/oracle/oradata/orcl/
# mv test_tablespace.dbf test_tablespace_bak.dbf
7 试图恢复表空间test_tablespace的状态为online,报错
SQL> alter tablespace test_tablspace online;
alter tablespace test_tablspace online
*
第 1 行出现错误:
ORA-00959: 表空间 'TEST_TABLSPACE' 不存在
8 将备份文件恢复到原先位置
SQL> host
$ rman
RMAN> restore tablespace test_tablespace;
启动 restore 于 20-3月 -15
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=42 设备类型=DISK
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00005 还原到 /u01/app/oracle/oradata/orcl/test_tablespace.dbf
通道 ORA_DISK_1: 正在读取备份片段 /u01/app/oracle/flash_recovery_area/ORCL/backupset/2015_03_20/o1_mf_nnndf_TEST001_bjqr25yy_.bkp
通道 ORA_DISK_1: 段句柄 = /u01/app/oracle/flash_recovery_area/ORCL/backupset/2015_03_20/o1_mf_nnndf_TEST001_bjqr25yy_.bkp 标记 = TEST001
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
完成 restore 于 20-3月 -15
9 在另一个终端中查看表空间test_tablespace是否已经恢复到原先的位置
# ls
control01.ctl redo03.log temp01.dbf test_temp.dbf
redo01.log sysaux01.dbf test_tablespace_bak.dbf undotbs01.dbf
redo02.log system01.dbf test_tablespace.dbf users01.dbf
10 执行恢复操作
RMAN> recover tablespace test_tablespace;
启动 recover 于 20-3月 -15
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:00
完成 recover 于 20-3月 -15
11 验证恢复结果
SQL> alter tablespace test_tablespace online;
表空间已更改。