暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle中用Plus archvielog选项简化备份

原创 eygle 2019-11-27
1171

通常如果数据库不多,执行单数据库备份管理,可以在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
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论