对于9i之前,如果控制文件重建或者控制文件
恢复,导致部分
备份集信息丢失,是一件很麻烦的事情。
不过在10g中,Oracle增强了CATALOG的功能,不但可以将
数据文件、日志文件的拷贝增加到控制文件或CATALOG中,RMAN的备份集也可以手工添加到控制文件中,这样就可以轻松解决有备份难以恢复的
问题了。
看一个简单的例子,加入
数据库进行了如下备份:
RMAN> backup tablespace users;
启动 backup 于 24-8月 -07使用通道 ORA_DISK_1通道 ORA_DISK_1: 启动全部数据文件备份集通道 ORA_DISK_1: 正在指定备份集中的数据文件输入数据文件 fno=00004 name=E:
ORACLEORADATAYTKDATAFILEO1_MF_USERS_1TDY4JMK_
.DBF通道 ORA_DISK_1: 正在启动段 1 于 24-8月 -07通道 ORA_DISK_1: 已完成段 1 于 24-8月 -07段句柄=E:ORACLEBACKUPBIQ6MGD_1_1 标记=TAG20070824T141333 注释=NONE通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:15完成 backup 于 24-8月 -07
RMAN> run
2> {
3> allocate channel c1 device type disk format 'e
racleackup\%U' maxpiecesize 100m;
4> backup tablespace sysaux;
5> }
释放的通道: ORA_DISK_1分配的通道: c1通道 c1: sid=123 devtype=DISK
启动 backup 于 24-8月 -07通道 c1: 启动全部数据文件备份集通道 c1: 正在指定备份集中的数据文件输入数据文件 fno=00003 name=E:ORACLEORADATAYTKDATAFILEO1_MF_SYSAUX_1TDY3TRF_.DBF通道 c1: 正在启动段 1 于 24-8月 -07通道 c1: 已完成段 1 于 24-8月 -07段句柄=E:ORACLEBACKUPCIQ6MIS_1_1 标记=TAG20070824T141452 注释=NONE通道 c1: 正在启动段 2 于 24-8月 -07通道 c1: 已完成段 2 于 24-8月 -07段句柄=E:ORACLEBACKUPCIQ6MIS_2_1 标记=TAG20070824T141452 注释=NONE通道 c1: 正在启动段 3 于 24-8月 -07通道 c1: 已完成段 3 于 24-8月 -07段句柄=E:ORACLEBACKUPCIQ6MIS_3_1 标记=TAG20070824T141452 注释=NONE通道 c1: 正在启动段 4 于 24-8月 -07通道 c1: 已完成段 4 于 24-8月 -07段句柄=E:ORACLEBACKUPCIQ6MIS_4_1 标记=TAG20070824T141452 注释=NONE通道 c1: 正在启动段 5 于 24-8月 -07通道 c1: 已完成段 5 于 24-8月 -07段句柄=E:ORACLEBACKUPCIQ6MIS_5_1 标记=TAG20070824T141452 注释=NONE通道 c1: 备份集已完成, 经过时间:00:01:01完成 backup 于 24-8月 -07释放的通道: c1
检查一下系统中的备份信息:
RMAN> list backup;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
8 Full 91.88M DISK 00:00:09 24-8月 -07
BP 关键字: 13 状态: AVAILABLE 已压缩: NO 标记: TAG20070824T141333段名:E:ORACLEBACKUPBIQ6MGD_1_1
备份集 8 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
4 Full 4033892051 24-8月 -07 E:ORACLEORADATAYTKDATAFILEO1_MF_USERS_1TDY4JMK_.DBF
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
9 Full 409.81M DISK 00:01:01 24-8月 -07
备份集 9 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
3 Full 4033892136 24-8月 -07 E:ORACLEORADATAYTKDATAFILEO1_MF_SYSAUX_1TDY3TRF_.DBF
备份集 副本号 1 属于备份集 9
设备类型 经过时间 完成时间 压缩标记
----------- ------------ ---------- ---------- ---
DISK 00:01:01 24-8月 -07 NO TAG20070824T141452
备份集 9 副本号 1的备份段列表
BP 关键字 Pc# 状态 段名称
------- --- ----------- ----------
14 1 AVAILABLE E:ORACLEBACKUPCIQ6MIS_1_1
15 2 AVAILABLE E:ORACLEBACKUPCIQ6MIS_2_1
16 3 AVAILABLE E:ORACLEBACKUPCIQ6MIS_3_1
17 4 AVAILABLE E:ORACLEBACKUPCIQ6MIS_4_1
18 5 AVAILABLE E:ORACLEBACKUPCIQ6MIS_5_1
数据库备份了表空间USERS和SYSAUX,下面重建控制文件:
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
数据库已更改。
SQL> CONN YANGTK/YANGTK@YTK AS SYSDBA已连接。
SQL> SHUTDOWN IMMEDIATE数据库已经关闭。已经卸载数据库。
ORACLE 例程已经关闭。
SQL> STARTUP NOMOUNT
ORACLE 例程已经启动。
Total System Global Area 209715200 bytes
Fixed Size 1247068 bytes
Variable Size 92276900 bytes
Database Buffers 109051904 bytes
Redo Buffers 7139328 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "YTK" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 (
9 'E:ORACLEORADATAYTKONLINELOGO1_MF_1_1TDY20N0_.LOG',
10 'E:ORACLEFLASH_RECOVERY_AREAYTKONLINELOGO1_MF_1_1TDY22PG_.LOG'
11 ) SIZE 50M,
12 GROUP 2 (
13 'E:ORACLEORADATAYTKONLINELOGO1_MF_2_1TDY24K2_.LOG',
14 'E:ORACLEFLASH_RECOVERY_AREAYTKONLINELOGO1_MF_2_1TDY264W_.LOG'
15 ) SIZE 50M,
16 GROUP 3 (
17 'E:ORACLEORADATAYTKONLINELOGO1_MF_3_1TDY27PG_.LOG',
18 'E:ORACLEFLASH_RECOVERY_AREAYTKONLINELOGO1_MF_3_1TDY296C_.LOG'
19 ) SIZE 50M
20 -- STANDBY LOGFILE
21 DATAFILE
22 'E:ORACLEORADATAYTKDATAFILEO1_MF_SYSTEM_1TDY2CXS_.DBF',
23 'E:ORACLEORADATAYTKDATAFILEO1_MF_UNDOTBS1_1TDY3GNZ_.DBF',
24 'E:ORACLEORADATAYTKDATAFILEO1_MF_SYSAUX_1TDY3TRF_.DBF',
25 'E:ORACLEORADATAYTKDATAFILEO1_MF_USERS_1TDY4JMK_.DBF',
26 'E:ORACLEORADATAYTKDATAFILEO1_MF_YANGTK_1THCKSRW_.DBF',
27 'E:ORACLEORADATAYTKDATAFILEO1_MF_YANGTK_22MWCD5C_.DBF'
28 CHARACTER SET ZHS16GBK
29 ;
控制文件已创建。
SQL> VARIABLE RECNO NUMBER;
SQL> EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CHANNEL','DEVICE TYPE DISK FORMAT ''e
racleackup\%U''');
PL/SQL 过程已成功完成。
SQL> RECOVER DATABASE
ORA-00283: ??????????
ORA-00264: ?????
SQL> ALTER SYSTEM ARCHIVE LOG ALL;
系统已更改。
SQL> ALTER DATABASE OPEN;
数据库已更改。
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'E:ORACLEORADATAYTKDATAFILEO1_MF_TEMP_1TDY49L2_.TMP'
2 SIZE 419430400 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 65535M;
表空间已更改。
数据库控制文件完成,这时候会发现丢失所有的备份信息:
E:>
rman target /
恢复管理器: Release 10.2.0.1.0 - Production on 星期五 8月 24 14:24:21 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: YTK (DBID=97298047)
RMAN> list backup;
使用目标数据库控制文件替代恢复目录
使用CATALOG BACKUPPIECE就可以将备份集重新添加到控制文件中:
RMAN> catalog backuppiece 'E:ORACLEBACKUPBIQ6MGD_1_1';
已列入目录的备份段备份段 handle=E:ORACLEBACKUPBIQ6MGD_1_1 recid=1 stamp=631463169
RMAN> list backup;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
1 Full 91.88M DISK 00:00:00 24-8月 -07
BP 关键字: 1 状态: AVAILABLE 已压缩: NO 标记: TAG20070824T141333段名:E:ORACLEBACKUPBIQ6MGD_1_1
备份集 1 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
4 Full 4033892051 24-8月 -07 E:ORACLEORADATAYTKDATAFILEO1_MF_USERS_1TDY4JMK_.DBF
10g还增加了一个CATALOG的START WITH语句,可以批量的CATALOG对象:
RMAN> catalog start with 'E:ORACLEBACKUPCIQ6MIS_';
搜索与样式 E:ORACLEBACKUPCIQ6MIS_ 匹配的所有文件
数据库未知文件的列表
=====================================文件名: E:ORACLEBACKUPCIQ6MIS_1_1文件名: E:ORACLEBACKUPCIQ6MIS_2_1文件名: E:ORACLEBACKUPCIQ6MIS_3_1文件名: E:ORACLEBACKUPCIQ6MIS_4_1文件名: E:ORACLEBACKUPCIQ6MIS_5_1
是否确实要将上述文件列入目录 (输入 YES 或 NO)? yes正在编制文件目录...目录编制完毕
已列入目录的文件的列表
=======================文件名: E:ORACLEBACKUPCIQ6MIS_1_1文件名: E:ORACLEBACKUPCIQ6MIS_2_1文件名: E:ORACLEBACKUPCIQ6MIS_3_1文件名: E:ORACLEBACKUPCIQ6MIS_4_1文件名: E:ORACLEBACKUPCIQ6MIS_5_1
RMAN> list backup;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
1 Full 91.88M DISK 00:00:00 24-8月 -07
BP 关键字: 1 状态: AVAILABLE 已压缩: NO 标记: TAG20070824T141333段名:E:ORACLEBACKUPBIQ6MGD_1_1
备份集 1 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
4 Full 4033892051 24-8月 -07 E:ORACLEORADATAYTKDATAFILEO1_MF_USERS_1TDY4JMK_.DBF
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
5 Full 409.81M DISK 00:00:00 24-8月 -07
备份集 5 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
3 Full 4033892136 24-8月 -07 E:ORACLEORADATAYTKDATAFILEO1_MF_SYSAUX_1TDY3TRF_.DBF
备份集 副本号 1 属于备份集 5
设备类型 经过时间 完成时间 压缩标记
----------- ------------ ---------- ---------- ---
DISK 00:00:00 24-8月 -07 NO TAG20070824T141452
备份集 5 副本号 1的备份段列表
BP 关键字 Pc# 状态 段名称
------- --- ----------- ----------
2 1 AVAILABLE E:ORACLEBACKUPCIQ6MIS_1_1
3 2 AVAILABLE E:ORACLEBACKUPCIQ6MIS_2_1
4 3 AVAILABLE E:ORACLEBACKUPCIQ6MIS_3_1
5 4 AVAILABLE E:ORACLEBACKUPCIQ6MIS_4_1
6 5 AVAILABLE E:ORACLEBACKUPCIQ6MIS_5_1