通常如果数据库不多,执行单数据库备份管理,可以在Nocatalog方式执行。
一个有效的完整备份应该包括所有数据文件的全备份、备份期间产生的所有归档日志备份、控制文件的备份,全备份脚本可能如下:
run{
allocate channel c1 type disk;
backup full tag ‘dbfull’ format ‘/path/full%u_%s_%p’ database
include current controlfile;
sql ‘alter system archive log current’;
backup fileaperset 3 format ‘/path/arch%u_%s_%p’
archivelog all delete input;
release channel c1;
}
注意:在数据库全备份完成之后,需要执行alter system archive log current命令将当前日志归档,备份归档日志时应该包括最后生成的归档。
从Oracle 9i开始,为了简化备份操作,Oracle引入了一个新的命令plus archivelog,当使用这个选项进行备份时,Oracle将执行如下步骤简化以上备份操作。
(1)运行一个ALTER SYSTEM ARCHIVELOG CURRENT命令。
(2)运行BACKUP ARCHIVELOG ALL命令。注意如果备份优化被启用,RMAN只会备份未备份过的日志。
(3)备份BACKUP命令中定义的文件。
(4)运行ALTER SYSTEM ARCHIVELOG CURRENT命令
(5)备份所有的剩下的归档日志。
现在一个完整的备份脚本可能如下:
run {
backup full tag 'eygle' database
include current controlfile format 'd:\backup\eyglefull_%d_%T_%s'
plus archivelog format 'd:\backup\eyglearch_%d_%T_%s' delete all input;
}
来看一下备份的过程。首先是通过恢复管理器连接到需要备份的目标数据库:
C:\>rman target /
恢复管理器: Release 10.2.0.1.0 - Production on 星期五 3月 2 10:53:33 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: EYGLE (DBID=1417824532)
然后执行如下备份脚本:
RMAN> run {
2> backup full tag 'eygle' database
3> include current controlfile format 'd:\backup\eyglefull_%d_%T_%s'
4> plus archivelog format 'd:\backup\eyglearch_%d_%T_%s' delete all input;
5> }
在执行过程中,Oracle将首先归档当前日志,然后执行归档日志文件的备份:
启动 backup 于 02-3月 -07
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =31 记录 ID=7 时间戳=616160447
通道 ORA_DISK_1: 正在启动段 1 于 02-3月 -07
通道 ORA_DISK_1: 已完成段 1 于 02-3月 -07
段句柄=D:\BACKUP\EYGLEARCH_EYGLE_20070302_17 标记=EYGLE 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
通道 ORA_DISK_1: 正在删除存档日志
存档日志文件名 =
D:\FRA\EYGLE\ARCHIVELOG\2007_03_02\O1_MF_1_31_2YH75Z2T_.ARC 记录 ID=7 时间戳 =616160447
完成 backup 于 02-3月 -07
完成日志备份后将启动指定的数据库全备份:
启动 backup 于 02-3月 -07
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:\ORADATA\EYGLE\DATAFILE\O1_MF_SYSTEM_2G8OHFX6_.DBF
输入数据文件 fno=00002 name=D:\ORADATA\EYGLE\DATAFILE\O1_MF_UNDOTBS1_2G8OJ6NB_.DBF
输入数据文件 fno=00003 name=D:\ORADATA\EYGLE\DATAFILE\O1_MF_SYSAUX_2G8OJHP9_.DBF
输入数据文件 fno=00005 name=D:\ORADATA\EYGLE\DATAFILE\O1_MF_EYGLE_2YDGSVH7_.DBF
输入数据文件 fno=00004 name=D:\ORADATA\EYGLE\DATAFILE\O1_MF_USERS_2G8OJYYS_.DBF
通道 ORA_DISK_1: 正在启动段 1 于 02-3月 -07
通道 ORA_DISK_1: 已完成段 1 于 02-3月 -07
段句柄=D:\BACKUP\EYGLEFULL_EYGLE_20070302_18 标记=EYGLE 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:25
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
由于指定了备份集中包含了当前的控制文件,所以接下来控制文件被备份:
备份集中包括当前控制文件
通道 ORA_DISK_1: 正在启动段 1 于 02-3月 -07
通道 ORA_DISK_1: 已完成段 1 于 02-3月 -07
段句柄=D:\BACKUP\EYGLEFULL_EYGLE_20070302_19 标记=EYGLE 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
完成 backup 于 02-3月 -07
完成全备份后,再次归档当前日志,并备份整个过程中生成的归档日志文件:
启动 backup 于 02-3月 -07
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =32 记录 ID=8 时间戳=616160538
通道 ORA_DISK_1: 正在启动段 1 于 02-3月 -07
通道 ORA_DISK_1: 已完成段 1 于 02-3月 -07
段句柄=D:\BACKUP\EYGLEARCH_EYGLE_20070302_20 标记=EYGLE 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
通道 ORA_DISK_1: 正在删除存档日志
存档日志文件名 =
D:\FRA\EYGLE\ARCHIVELOG\2007_03_02\O1_MF_1_32_2YH78T4Q_.ARC 记录 ID=8 时间戳 =616160538
完成 backup 于 02-3月 -07
最后,由于本数据库启用了控制文件自动备份,数据库还将自动备份控制文件和参数文件(仅限于spfile文件,init文件RMAN无法自动备份):
启动 Control File and SPFILE Autobackup 于 02-3月 -07
段 handle=
D:\FRA\EYGLE\AUTOBACKUP\2007_03_02\O1_MF_S_616160541_2YH78Y3O_.BKP comment=NONE
完成 Control File and SPFILE Autobackup 于 02-3月 -07
检查一下生成的备份文件:
C:\>dir d:\backup
2007-03-02 11:40 1,544,704 EYGLEARCH_EYGLE_20070302_17
2007-03-02 11:42 8,704 EYGLEARCH_EYGLE_20070302_20
2007-03-02 11:42 392,339,456 EYGLEFULL_EYGLE_20070302_18
2007-03-02 11:42 7,110,656 EYGLEFULL_EYGLE_20070302_19
从备份的结果来看,可能很多读者能够发现Oracle 10g和Oracle 9i的不同,比较一下Oracle 9i的备份过程:
RMAN> run {
2> backup full tag 'eygle' database
3>include current controlfile format '/opt/oracle/backup/eyglefull_%d_%T_%s'
4> plus archivelog format '/opt/oracle/backup/eyglearch_%d_%T_%s' delete all input;
5>}
Starting backup at 02-MAR-07
current log archived
piece handle=/opt/oracle/backup/eyglearch_EYGLE_20070302_8 comment=NONE
Starting backup at 02-MAR-07
using channel ORA_DISK_1
including current SPFILE in backupset
including current controlfile in backupset
input datafile fno=00002 name=/opt/oracle/oradata/eygle/undotbs01.dbf
input datafile fno=00001 name=/opt/oracle/oradata/eygle/system01.dbf
input datafile fno=00003 name=/opt/oracle/oradata/eygle/eygle01.dbf
channel ORA_DISK_1: starting piece 1 at 02-MAR-07
channel ORA_DISK_1: finished piece 1 at 02-MAR-07
piece handle=/opt/oracle/backup/eyglefull_EYGLE_20070302_9 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:47
Finished backup at 02-MAR-07
Starting backup at 02-MAR-07
current log archived
piece handle=/opt/oracle/backup/eyglearch_EYGLE_20070302_10 comment=NONE
留意一下备份结果:
[oracle@jumper oracle]$ ll backup
-rw-r----- 1 oracle dba 3072 Mar 2 11:12 eyglearch_EYGLE_20070302_10
-rw-r----- 1 oracle dba 3584 Mar 2 11:10 eyglearch_EYGLE_20070302_8
-rw-r----- 1 oracle dba 496386048 Mar 2 11:12 eyglefull_EYGLE_20070302_9
在Oracle 9i里同样的备份只有3个备份文件,而Oracle 10g中有4个,新增文件中就是控制文件的备份。在Oracle 9i中,控制文件和参数文件被包含在全备份中,所以如果丢失了当前控制文件,从备份集中恢复控制文件是比较复杂的,而Oracle 10g则干脆将其分离出来,大大简化了恢复难度。来看一下10g的备份报告,5个备份集都被清晰地记录:
RMAN> list backup;
备份集列表
===================
BS 关键字 大小 设备类型占用时间 完成时间
------- ---------- ----------- ------------ ----------
15 1.47M DISK 00:00:02 02-3月 -07
BP 关键字: 15 状态: AVAILABLE 已压缩: NO 标记: EYGLE
段名:D:\BACKUP\EYGLEARCH_EYGLE_20070302_17
备份集 15 中的已存档日志列表
Thrd Seq 低 SCN 短时间 下一个 SCN 下一次
---- ------- ---------- ---------- ---------- ---------
1 31 557631 02-3月 -07 559479 02-3月 -07
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
16 Full 374.16M DISK 00:01:17 02-3月 -07
BP 关键字: 16 状态: AVAILABLE 已压缩: NO 标记: EYGLE
段名:D:\BACKUP\EYGLEFULL_EYGLE_20070302_18
备份集 16 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
- ---- ------ ---------- ----
1 Full 559483 02-3月 -07 D:\ORADATA\EYGLE\DATAFILE\O1_MF_SYSTEM_2G8OHFX6_.DBF
2 Full 559483 02-3月 -07 D:\ORADATA\EYGLE\DATAFILE\O1_MF_UNDOTBS1_2G8OJ6NB_.DBF
3 Full 559483 02-3月 -07 D:\ORADATA\EYGLE\DATAFILE\O1_MF_SYSAUX_2G8OJHP9_.DBF
4 Full 559483 02-3月 -07 D:\ORADATA\EYGLE\DATAFILE\O1_MF_USERS_2G8OJYYS_.DBF
5 Full 559483 02-3月 -07 D:\ORADATA\EYGLE\DATAFILE\O1_MF_EYGLE_2YDGSVH7_.DBF
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
17 Full 6.77M DISK 00:00:02 02-3月 -07
BP 关键字: 17 状态: AVAILABLE 已压缩: NO 标记: EYGLE
段名:D:\BACKUP\EYGLEFULL_EYGLE_20070302_19
包括的控制文件: Ckp SCN: 559516 Ckp 时间: 02-3月 -07
BS 关键字 大小 设备类型占用时间 完成时间
------- ---------- ----------- ------------ ----------
18 8.00K DISK 00:00:02 02-3月 -07
BP 关键字: 18 状态: AVAILABLE 已压缩: NO 标记: EYGLE
段名:D:\BACKUP\EYGLEARCH_EYGLE_20070302_20
备份集 18 中的已存档日志列表
Thrd Seq 低 SCN 短时间 下一个 SCN 下一次
---- ------- ---------- ---------- ---------- ---------
1 32 559479 02-3月 -07 559520 02-3月 -07
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
19 Full 6.80M DISK 00:00:02 02-3月 -07
BP 关键字: 19 状态: AVAILABLE 已压缩: NO 标记: TAG20070302T114221
段名:
D:\FLASH_RECOVERY_AREA\EYGLE\AUTOBACKUP\2007_03_02\O1_MF_S_616160541_2YH78Y3O_.BKP
包括的控制文件: Ckp SCN: 559526 Ckp 时间: 02-3月 -07
包含的 SPFILE: 修改时间: 02-3月 -07




