Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11681921
  • 博文数量: 8065
  • 博客积分: 10002
  • 博客等级: 中将
  • 技术积分: 96708
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-16 17:06
文章分类

全部博文(8065)

文章存档

2008年(8065)

分类: 服务器与存储

2008-07-16 10:43:56

对于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 'eracleackup\%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
阅读(271) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~