一. 配置数据库以ARCHIVELOG 模式运行
在ORACLE 10g 之前,在将数据库置入Archivelog 模式后,需要启动arch进程。 设置参数LOG_ARCHIVE_START 为true,也可启动arch进程。在10g以后,不需要使用该方法,当数据库处于archivelog模式时,Oracle 会自动启动arch进程。
Arch 进程由LGWR 进程调用,只要一个联机redo log 被填满。LGWR 进程就切换到另一个联机redo 组。 此时如果数据库处于archivelog 模式,LGWR进程也会通知ARCH,将该进程唤醒并开始工作。ARCH 进程相应LGWR的调用,在ORACLE 数据库参数LOG_ARCHIVE_DEST_n 定义的位置或者定义的闪回恢复区生成联机redo log的副本,知道arch 进程完成创建归档的重做日志副本后,Oracle 才能重用这个redo log 文件。
Oracle10g 提供了2种不同的位置来保存归档日志: ArchiveLog 目标目录和闪回区。
1.1 ArchiveLog 目标目录
使用LOG_ARCHVEI_DEST_n 参数可以定义10个不同的归档日志目标。这些目录可以是本地目录,网络目录。
下面对一些参数做相关说明:
(1) LOG_ARCHIVE_STAT_n 参数:该参数为每个归档日志定义两种不同的状态: ENABLE和 DEFER,如果是ENABLE,则该归档目录是有效的,如果是DEFER,就不会在指定的LOG_ARCHIVE_DEST_n 进行归档。
(2) LOG_ARCHIVE_FORMAT 参数: Oracle 创建归档日志时,按按参数指定的格式,重命名归档日志。
(3) LOG_ARCHIVE_MIN_SUCCEED_DEST: 允许DBA定义归档日志目标副本的最小数据,这些副本必须成功。这样Oracle 才可以重用关联的redo online log。
(4) LOG_ARCHIVE_START: 该参数在10g 中不再使用,用户自动启动ARCH 进程。
1.2 闪回恢复区
闪回恢复区(FRA)允许集中存储所有与恢复相关的文件。 FRA 可以本地使用附加的存储,Oracle 集群文件系统(Oracle File system: OCFS)或者 Oracle 10g 中新的自动存储管理(ASM)特性。FRA 中备份文件类型:归档的重做日志,控制文件,控制文件自动备份。闪回日志,重做日志,RMAN 数据文件副本,RMAN 备份和其他相关文件。
FRA 帮助管理全部的磁盘空间分配,并且为所有与恢复相关饿文件提供集中的存储区域。FRA 也提供更快速的备份和恢复操作。
FRA 中文件的保留与否由RMAN保存策略决定。 通过执行RMAN config retention policy 命令设置该策略。 如果文件在RMAN保存策略下没有过时,则不会被删除。如果归档日志过时,则可以删除。
FRA在由参数DB_RECOVERY_FILE_DEST 定义的特定位置中创建。 该位置可以是文件系统或者ASM卷。DB_RECOVER_FILE_DEST_SIZE 参数则用来定义FRA的最大尺寸。 这是Oracle 控制的文件空间的限制,而与文件系统自身中的全部可用空间无关。 Oracle 监控FRA中的可用空间,一旦FRA中的空间数据量减少到不安全的程度,Oracle 就会在警报日志中生成警告(90%已使用时生成一次警告,而在95%已使用时再次生成警告)。同样,当FRA中空闲空间少于10%时,Oracle 就会删除处于过时文件列表中的文件。
如果闪回恢复区是唯一归档目标,那么FRA中空间被用完时就会非常麻烦,可能造成数据库异常终止,所以如果只设置了唯一的归档目录,则应该仔细的监控空间可用性。 简单的说有以下几种方法:
(1) 增加DB_RECOVERY_FILE_DEST_SIZE.
(2) 用RMAN BACKUP recovery area。 将FRA的内容移动到其他位置。
(3) 物理删除较早的备份,然后用RMAN crosscheck 命令来让数据库认可已经删除的文件。
这类问题处理的方法参考:
Flash Recovery Area空间不足导致数据库不能打开或hang住
http://blog.csdn.net/xujinyang/article/details/6830475
和闪回恢复区相关的视图:
(1) DBA_OUTSTANDING_ALERTS
在FRA中添加和删除文件时,这些事件的记录被记录到数据库警告日志中。 可以通过该视图来了解一些FRA一些显著问题的信息。注意: 空间相关问题产生的时间和警告日志在该视图中的时间存在一定程度的延时。
SQL> select reason from dba_outstanding_alerts;
REASON
-------------------------------------------------------------------------------
db_recovery_file_dest_size 字节 (共 4039114752 字节) 已使用 100.00%, 尚有 0 字节可用。
(2)v$recovery_file_dest
该视图提供了在数据库中定义FRA的概念。 提供配置的FRA大小,所使用空间数量,可回收多少空间,以及FRA中文件量。
SQL> select * from v$recovery_file_dest;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
------------------------------------------------- ----------- ---------- -------
D:/app/Administrator/flash_recovery_area 4039114752 4005191680 0 85
如果SPACE_RECLAIMABLE 不为0. 即表示FRA中有可回收的文件。 如果需要该空间,可以强制日志切换,它将删除可回收的任何文件并释放空间。
SQL> alter system switch logfile;
系统已更改。
(3) v$flash_recovery_area_usage
该视图提供了关于占用FRA空间的文件类型的详细信息。该视图对文件类型组合,然后提供每个文件类型所使用的空间百分比,来自该组的总FRA可回收空间百分比,以及来自该组的FRA中文件数量。
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------------- ------------------ ------------------------- --------------
CONTROL FILE 0 0 0
REDO LOG 0 0 0
ARCHIVED LOG 99.16 0 85
BACKUP PIECE 0 0 0
IMAGE COPY 0 0 0
FLASHBACK LOG 0 0 0
FOREIGN ARCHIVED LOG 0 0 0
已选择7行。
包含FRA列的其他视图
可以在许多10g的视图中找到 IS_RECOVERY_DEST_FILE视图,例如:
V$CONTRILFILE,V$LOGIFLE,V$ARCHIVEC_LOG,V$DATAFILE_COPY,V$DATAFILE ,V$BACKUP_PIECE.
该列是一个布尔值,用来指示文件是否位于FRA中。
另一个列BYTES 可以在V$BACKUP_PIECE和RC_BACKUP_PIECE(rman 恢复目录视图)中找到,该列以字节为单位指示备份集片的大小。
其他闪回恢复区特性
在Oracle 10g,如果没有设置OMF 相关的DB_CREATE_ONLINE_LOG_DEST_n 参数,则alter database add logfile和alter database add standby logfile 命令创建FRA中的连接重做日志成员。 Alter database drop logfile 和alter database rename file命令也支持FRA中的文件。
在数据库创建期间,Oracle 可以使用FRA存储数据库控制文件和联机重做日志。 如果定义了OMF 相关参数:DB_CREATE_ONLINE_LOG_DEST_n, 则将在这些位置创建控制文件和重做日志,但不会在FRA中创建,即使定义了FRA。 如果没有定义DB_CREATE_ONLINE_LOG_DEST_n,但定义了CREATE_FILE_DEST,则由CREATE_FILE_DEST定义的位置创建控制文件和联机重做日志的副本。 最后,如果定义了DB_RECOVERY_FILE_DEST,则在该位置创建控制文件。 如果没有定义任何这些参数,则在OS 特定的默认位置创建控制文件和联机重做日志。
FRA和ASM
RMAN支持使用自动存储管理(ASM)存储RMAN备份。ASM是磁盘管理工具,使用该工具,DBA就不再需要管理与给定数据库关联的物理文件。 ASM在一定程度上类似于可用于UNIX 中的逻辑卷组。 ASM 使用ASM 磁盘组,该磁盘组是存储在逻辑单元。 物理磁盘被分配给ASM磁盘组,并且提供ASM 磁盘组整体存储功能。 ASM 磁盘组可以存在前面分配的文件系统上,或者存储在RAW磁盘上。 结合OCFS, 集群的服务器可以共享RAC配置中的ASM 磁盘。 配置ASM并定义各种磁盘组合,就可以分配数据文件,控制文件,联机重做日志,以及各种RMAN备份文件给ASM磁盘组。
ASM 提供了大量特性,包括负载均衡,数据冗余,并且很容易添加和删除ASM磁盘组中的新磁盘。RMAN 支持ASM磁盘组,但是对于大多数非RAC站点使用ASM 实现并没有多少价值。
1.3 是否应该使用FRA
我们认为隐藏在FRA后面的思想是优秀的,我们也喜欢将备份复制到一些其他的介质,如磁带,从而可以脱机使用它们以进行灾难恢复。
我们喜欢将FRA用于归档的重做日志,但仍喜欢将归档重做日志复制到多个位置(具体说是多个磁盘)。 归档的重做日志对于数据库恢复至关重要,如果丢失一个归档的重做日志,则在该重做日志之后的所有其他重做归档就会几乎没有任何价值。 因为,我们倾向于使用LOG_ARCHIVE_DEST_n 参数来配置数据库,而使用FRA 和另一单独的文件系统来存储归档的重做日志。
1.4 ARCHIVELOG 模式之间的切换
具体操作参考我的blog
Oracle 归档与非归档的切换
http://blog.csdn.net/xujinyang/article/details/6830327
二. RMAN 命令行
进入RMAN 有两种不同方法: 命令行 和 OEM。
2.1 通过RMAN 命令行连接
在OS 提示下简单的输入rman 命令就可以启动RMAN。 一旦启动了RMAN命令解释程序,就可以执行任何所需的操作。
RMAN 总是以SYSDBA身份连接目标数据库,所以连接账户必须具有SYSDBA权限。 具体用法参考帮助:
C:/Users/Administrator.DavidDai>rman help
参数 值 说明
-----------------------------------------------------------------------------
target 加引号的字符串 目标数据库连接字符串
目录 加引号的字符串 恢复目录的连接字符串
nocatalog 无 如果已指定, 则没有恢复目录
cmdfile 加引号的字符串 输入命令文件的名称
log 加引号的字符串 输出消息日志文件的名称
跟踪 加引号的字符串 输出调试信息日志文件的名称
append 无 如果已指定, 日志将以附加模式打开
debug 可选参数 激活调试
msgno 无 对全部消息显示 RMAN-nnnn 前缀
send 加引号的字符串 将命令发送到介质管理器
pipe 字符串 管道名称的构建块
timeout 整数 等待管道输入的秒数
checksyntax 无 检查命令文件中的语法错误
-----------------------------------------------------------------------------
单引号和双引号 (' 或 ") 均可用于加引号的字符串。
除非字符串中有空格, 否则不用引号。
2.2 使用RMAN 的connet 命令
如果启动了RMAN,发现没有连接到正确的数据库,或者要连接到一个不同的数据库(目标数据库,目录数据库,辅助数据库),可以使用connect 命令来更改RMAN要连接的数据库。 使用connect target 命令可以连接到一个不同的目标数据库;使用connect catalog 命令可以连接到不同的恢复目录,使用connect auxiliary 命令可以连接到一个不同的辅助数据库。
Connect target sys/pwd@sid
Connect catalog user/pwd@sid
2.3 退出RMAN 客户端
RMAN 退出命令有2个: quit 和 exit。
三. 为RMAN 操作配置数据库
3.1 设置数据库用户
在默认情况下,可以通过SYS账户(sysdba)来使用RMAN,该账户不需要任何配置。当然,在执行产品备份操作时,sysdba 并不是最佳的账户。 建议在使用RMAN执行备份操作之前创建一个用于RMAN 备份的单独账户设置。
C:/Users/Administrator.DavidDai>set ORACLE_SID=mynewccs
C:/Users/Administrator.DavidDai>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 6月 14 10:11:39 2010
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL> conn / as sysdba
已连接。
SQL> create user rman identified by rman;
用户已创建。
SQL> grant sysdba to rman;
授权成功。
SQL> host
Microsoft Windows [版本 6.1.7600]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:/Users/Administrator.DavidDai>rman target rman/rman@mynewccs;
恢复管理器: Release 11.2.0.1.0 - Production on 星期一 6月 14 10:12:45 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: MYNEWCCS (DBID=1108507251)
RMAN>
3.2 设置数据库安全性
先来看一下本地服务器上连接RMAN 和 通过ORACLE net 连接RMAN 两者之间的差异。 启动RMAN时,我们可能登录到数据库所在的服务器。 在这种情况下,如果使用特许的OS 用户账户登录,登录时用具有sysdba 权限的用户即可。 根据使用的操作系统,我们可以确定我们的用户账户是否是特许的。 如果使用UNIX,通常会存在一个名为dba的UNIX 组,它是在创建ORACLE特有的账户(通常名为Oracle)时创建的。 如果在这个Unix组中指定我们的UNIX用户账户,就可以不再执行其他操作而连接到一个目标数据库。 如果使用Windows 平台,特许用户会指定到一个通常名为ORA_DBA的NT组。
如果没有使用特许的账户登录本地服务器,或者从客户端工作站使用Oracle net来连接目标数据库(如:user/pwd@sid). 就需要配置数据库使用口令文件。 配置口令文件时,先要创建口令文件,然后配置数据库,使数据库明确使用这个口令文件。 创建口令文件的2个步骤如下:
3.2.1 创建口令文件
使用Oracle 使用程序orapwd 可以创建口令文件。 该命令有3个参数:
File:口令文件名
password: sys 用户的口令
Entries:为其他特许的Oracle 用户账户保留的条目数
缺省情况下,win下口令文件的格式是pwdsid.ora,unix下的格式是orapwSID(大小写敏感),
C:>orapwd file=pwdSID.ORA password=pwd entries=5;
3.2.2 配置数据库使用口令文件
在默认情况下,Oracle 不会被配置为使用口令文件(除非使用DBCA创建数据库)。 是否使用口令文件,是通过oracle提供的一个参数remote_login_passwordfile来控制的,remote_login_passwordfile有none,shared,exclusive3个值,
none表示不使用口令文件,停用口令文件验证,Oracle数据库不允许远程SYSDBA/SYSOPER身份登录
exclusive表示实例独占使用口令文件,也就是各自实例使用单独的口令文件,
shared表示多个实例共享一个口令文件.
Oracle数据库在启动时,首先查找的是orapw<sid>的口令文件,如果该文件不存在,则开始查找,orapw的口令文件,如果口令文件命名为orapw,多个数据库就可以共享.
Alter system set REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;
SQL> select name,value,issys_modifiable from v$parameter where name='remote_login_passwordfile';
NAME VALUE ISSYS_MOD
------------------------------ --------------- ---------
remote_login_passwordfile EXCLUSIVE FALSE
注意: 该参数不是动态修改的,修改后需要重启数据库。
也可参考blog:
Oracle OS认证 口令文件 密码丢失处理
http://blog.csdn.net/xujinyang/article/details/6830312
3.3 设置CONTROL_FILE_RECORD_KEEP_TIME 参数
为RMAN 配置数据库时,我们应当考虑在控制文件中存储备份记录的时间。 备份记录包括完全的数据库备份记录,以及指定的数据文件,控制文件,参数文件和归档目录的备份记录。数据库参数CONTROL_FILE_RECORD_KEEP_TIME以天为单位(默认值为7天),因此在默认情况下,Oracle 会将RMAN备份和恢复记录保存7天。 可以将该参数设置为0到365之间的任意值。
CONTROL_FILE_RECORD_KEEP_TIME参数会影响一系列的数据库操作。 首先,产生RMAN备份时,由于与这些备份相关的记录存储在控制文件中,所以该参数直接影响数据库控制文件的大小。 备份记录将不断的保存在控制文件中,控制文件将耗尽空间。 这时,Oracle 会扩展控制文件来调整备份记录所需的存储空间。 此外,设置为0时,将禁止扩展控制文件,并且会使得RMAN备份的保存周期不稳定。
我们建议将CONTROL_FILE_RECORD_KEEP_TIME 参数设置为不小于选中数据库的备份保存周期,否则就可能在备份介质上有数据库备份,但是控制文件不存在与备份相关的备份记录,在这种情况下,将无法恢复这些较早的文件。
SQL> select name,value from v$parameter where name='control_file_record_keep_time';
NAME VALUE
------------------------------ -------------------------------------------------
control_file_record_keep_time 7
SQL> alter system set control_file_record_keep_time=20;
系统已更改。
SQL> show parameter control_file_record_keep_time
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 20
SQL>
3.4 配置RMAN默认设置
RMAN 允许我们执行自动的数据库备份和恢复。 为了支持这个功能,我们为一些参数设置默认值。
3.4.1 configure 命令介绍
RMAN> show all;
使用目标数据库控制文件替代恢复目录
db_unique_name 为 MYNEWCCS 的数据库的 RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOA
D TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:/APP/ADMINISTRATOR/PRODUCT/11.2.0/DBHO
ME_1/DATABASE/SNCFMYNEWCCS.ORA'; # default
Show all 命令显示了默认的配置。 我们也可以使用查看v$rman_configuration 视图,它列出了非默认的RMAN 配额。
更多内容参考blog:
Oracle Rman 命令详解(List report backup configure)
http://blog.csdn.net/xujinyang/article/details/6838072
3.4.2 配置多种RMAN 配置
我们可以采用不同的方法来配置通道: 使用configure channel device type 命令可以配置用于所有通道的默认值;使用configure channel n device type 命令可以配置用于指定默认通道的默认值。
使用configure channel device type clear 命令可以清楚用于所有通道的默认值,使用configure channel n device type clear命令可以清除用于指定默认通道的默认值。
使用allocate channel 命令分配一个通道时,可以为分配的这个通道指定名称。 如: allocate channel d1 device type disk 命令可以创建一个名为d1的通道。 自动分配通道时,ORACLE 会为这些通道指定名称,他们的默认名称取决于默认设备类型。 磁盘设备,默认名:ORA_DISK_n; 磁带设备: 默认名:ORA_SBT_TAPE_n。
自动分配通道数取决于所定义的默认并行级别。 执行configure 命令时,Oracle 显示前面的配置设置,后面跟上新的配置设置。
3.4.3 configure 命令的一些示例:
配置通道默认设置
Configure default device type to sbt;
Configure default device type to disk;
当配置默认的设备类型时,Oracle 将使用默认的通道,直到使用backup device type参数重写默认值,也将自动分配用于delete 命令的维护通道和用于复制操作的辅助通道。
一旦配置了默认的设备类型,就可以配置特定备份类型的默认值,当使用备份时,应该进行这种备份。 例如,当备份到磁盘时,可以让Oracle 默认地使用标准的oracle 备份集方法备份数据库,或者让其默认为使用副本,或者默认为压缩备份集,并表明并行程度(这表示将分配给备份的通道数)。 相关实例如下:
Configure device type disk backup type to backupset;
Configure device type disk backup type to compressed backupset;
Configure device type disk backup type to copy;
Configure device type disk parallelism 2;
压缩 是Oracle 10g 里的新特性。 压缩提供了Oracle 备份的真正压缩,而不同于ZIP 压缩,它可以有效的减小备份集的大小。 当然,压缩占用资源并且需要更长的时间来完成备份和恢复。
在看一个自动备份和恢复操作期间分配的通道数示例,示例中,分配磁盘操作的并行级别为2,因此,如果启动自动备份操作,就会分配两个通道来并行执行备份操作。
Configure channel 1 device type disk format 'd:/backup/orcl/backup_%U';
Configure channel 2 device type disk format 'e:/backup/orcl/backup_%U';
注意: 通常在设置默认的并行级别时,应当设置为连接备份数据库的磁盘数或者磁带驱动器数。
在配置通道时有一些可用选项。 使用maxpiecesize 参数,可以控制备份集片的大小,用maxopenfile,可以控制RMAN 一次最多可以打开的文件数。 Rate 参数用于限制RMAN 并控制备份时读取字节的比率为每秒nB,nKB,nMB和nGB。
如:configure channcel 1 device type disk maxpiecesize 100m maxopenfile 8 rate 100MB;
注意: 不要混淆 maxpiecesize 参数 和 maxsetsize 参数之间的区别。 Maxpiecesize 限定单个备份集片的大小并且对备份的整体大小没有影响。 Maxsetsize 参数限制备份的整体大小,因此需要谨慎使用。
如果是限定所有通道,可以执行如下命令:
Configure channel device type disk maxpiecesize 100m.
为什么需要更改一个备份集片的最大尺寸呢? 首先是某些指定文件大小存在限制,比如磁带只能处理一定量的数据,而某些磁盘文件系统对给定的数据文件的大小有一些限制。
将一个磁带设备设置为所有通道的默认设备,并且指定一些参数的设置。 相关设置如下:
Configure channel devicetype双胞胎maxpiecesize100m parms 'ENV=(NB_ORA_CLASS=RMAN_RS100_TAPE)';
配置整个备份集的默认最大尺寸
Configure maxsetsize to 7500k;
将备份集的最大尺寸设为默认值,即没有限制
Configure maxsetsize clear;
注意: 使用maxsetsize 来限制创建的整个备份的大小时需要特别小心。 这是因为数据库在初始化阶段可能小于定义的maxsetsize值,但数据库很快就会超过maxsetsize 值,这样就会导致数据库备份操作失败。
使用configure 命令时,需要清楚给定的配置,这样才能使用默认值。 如:
Configure channel 1 device type disk clear;
可以将备份进程配置为创建双路备份(duplexed backup),也就是说在不同的位置创建同一个备份的多个副本。还可以使用configure 命令来配置数据库的默认设置,以使configure 命令执行双路的自动备份操作:
Configure datafile backup copies for device type disk to 2;
快照控制文件,该文件是RMAN 备份期间数据库控制文件的时间点副本,这样可以保证备份与给定时间点一致。 因此,如果在启动备份操作后在数据库中添加一个表空间或者数据文件, 这个表空间或数据文件就不会包含在备份中。 如果我们希望在默认位置外的位置创建备份控制文件,就可以使用configure 命令来定义这个新位置:
Configure snapshot control file name to 'd:/backup/snapshotSID';
注意: 既是配置了FRA,Oracle 也不会在FRA中创建控制文件。
在自动备份期间,我们可以将指定的表空间排除在备份之外,也可以使用configure 命令来实现这一功能:
Configure exclude for tablespace old_data;
Configure 命令允许我们启用和禁止备份优化,启用备份优化时,会使ORACLE 跳过在备份设备上已有的相同备份的文件的备份。
Configure backup optimization on;
注意:要执行优化操作,就必须启动备份优化。此外,我们也必须执行 backup database命令或者backup archivelog命令或与like/all 选项连用,或backup backupset all。 最后,还可以使用backup 命令的force 参数来禁止备份优化。
3.4.4 使用格式串
先看例子:Configure channel 1 device type disk format 'd:/backup/orcl/backup_%U';
在configure 命令中经常使用格式串,在backup,resotre,allocate channel 等其他RMAN 命令中也会经常看到格式串。RMAN 提供了与格式串关联的一些语法元素。 这些元素称: 占位符, rman 将使用相应的定义值来替换他们。 例如示例中的 %U 语法元素告诉RMAN要使用系统生成的唯一表示符替换文件名。
使用FORMAT参数时可使用的各种替换变量,如下(注意大小写)所示:
%a:Oracle数据库的activation ID即RESETLOG_ID。
%c:备份片段的复制数(从1开始编号,最大不超过256)。
%d:Oracle数据库名称。
%D:当前时间中的日,格式为DD。
%e:归档序号。
%f:绝对文件编号。
%F:基于"DBID+时间"确定的唯一名称,格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD为日期,QQ是一个1~256的序列。
%h:归档日志线程号。
%I:Oracle数据库的DBID。
%M:当前时间中的月,格式为MM。
%N:表空间名称。
%n:数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8。比如数据库名JSSBOOK,则生成的名称则是JSSBOOKx。
%p:备份集中备份片段的编号,从1开始。
%s:备份集号。
%t:备份集时间戳。
%T:当前时间的年月日格式(YYYYMMDD)。
%u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集生成一个唯一的名称。
%U:默认是%u_%p_%c的简写形式,利用它可以为每一个备份片段(即磁盘文件)生成一个唯一名称,这是最常用的命名方式,执行不同备份操作时,生成的规则也不同,如下所示:
生成备份片段时,%U=%u_%p_%c;
生成数据文件镜像复制时,%U=data-D-%d_id-%I_TS-%N_FNO-%f_%u;
生成归档文件镜像复制时,%U=arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u;
生成控制文件镜像复制时,%U=cf-D_%d-id-%I_%u。
%Y:当前时间中的年,格式为YYYY。
注:如果在BACKUP命令中没有指定FORMAT选项,则RMAN默认使用%U为备份片段命名。
3.4.5 配置控制文件和数据库参数文件的自动备份
Oracle 10g 版本中的RMAN 提供了备份控制文件和数据库参数文件的功能。我们可以配置默认执行这些备份操作。
示例:
Configure controlfile autobackup on;
Configure controlfile autobackup off;
配置控制文件和参数文件的自动备份时的一些规则:
(1) 在RUN 程序块之外执行每个RMAN的backup 或者 copy 命令时,都会自动备份控制文件和参数文件。
(2) 使用使用了RUN 程序块,而且该程序块的最后一个命令不是backup 或者copy,在RUN 程序块结尾处会备份控制文件和参数文件。
除了上面2种自动控制文件备份类型,我们还可以配置另一种特殊的控制文件备份类型。该类型发生在数据库变化时,这些变化包括添加新的表空间,添加数据文件,添加联机重做日志等。 这些自动备份类型只在磁盘上发生,使用configure controlfile autobackup命令的特殊选项可以简化备份。如:
Configure controlfile autobackup format for device type disk to 'd:/backup/sid_%F';
使用了该选项,RDBMS 会在数据结构的变化控制文件产生影响时自动备份控制文件。强调一点,只支持磁盘。
3.4.6 备份默认的保存策略:
RMAN 允许用户使用configure retention policy 命令来配置保存粗略。 配置保存粗略不会导致自动删除备份,需要使用delete obsolete 命令才能删除过期的备份集。 在report obsolete 命令时显示到期的备份集。 如果列出的某个文件不能被删除,需要鱼腥crosscheck 命令,否则,Oracle 删除delete obsolete命令输出的所有项。
如:
configure retention policy to recovery window of 7 days;
--recover window是保持所有足够的备份,可以将数据库系统恢复到最近七天内的任意时刻。任何超过最近七天的数据库备份将被标记为obsolete。
configure retention policy to redundancy 5;
--redundancy 是为了保持可以恢复的最新的5份数据库备份,任何超过最新5份的备份都将被标记为redundancy。它的默认值是1份。
configure retention policy clear;
-- 保存策略重置为默认值(冗余为1)
CONFIGURE RETENTION POLICY TO NONE;
-- 不应用任何保存策略。
注意: 如果使用磁带管理系统,该系统会具有自己的保存策略。如果磁带管理系统的保存策略与RMAN中定义的备份保存策略冲突,则磁带管理系统的保存策略优先,同时,恢复备份的能力会大受影响。
3.4.7 配置默认的加密级别
在Oracle 10g R2以后的版本中,RMAN 可以创建加密备份,在备份期间,Oracle 在创建备份集时对其进行加密。当还原备份时,则对其进行解密。
Oracle 提供了3种不同的机密模式:
(1) 透明模式: 透明模式的加密不需要DBA 干涉,为了使用该模式,必须配置Oracle 加密电子皮夹(Encryption Wallet).
(2) 口令模式:口令模式加密需要在创建将要加密的备份或还原(在创建时)加密的备份时提供口令。 在RMAN备份脚本中使用命令: set encryption on identified by password only 提供口令。
(3) 双重模式:可以通过口令或Oracle 加密电子皮夹来还原双重模式的备份。 因为不需要安装Oracle 加密电子皮夹,双重模式简化了备份的离站还原。可以使用: set encryption on identifiedby password 命令(注意,少了only) 创建双重模式加密备份。
使用configure 命令配置各种与RMAN备份加密相关的持久性设置。可以使用RMANconfigure 命令来设置以下相关内容:
(1) 是否应该加密所有的数据库文件
(2) 是否应该加密特定的表空间
(3) 应该使用那种可用的机密算法来机密备份
如果正在使用基于Oracle 加密电子皮夹的安全保护,则只需要设置configure 命令所需的持久性RMAN 设置。 如果希望使用口令模式加密或双重模式加密,就需要使用configure 命令配置持久性安全默认值,然后启动备份时使用set 命令设置备份口令,则在每次RMAN备份或者恢复会话期间必须输入该口令。
下面的示例中,为整个数据库配置并启用备份加密。 注意,如果没有配置Oracle 加密电子皮夹,随后的任何备份都将会失败,除非使用set 命令建立会话的加密口令。
RMAN> configure encryption for database on;
新的 RMAN 配置参数:
CONFIGURE ENCRYPTION FOR DATABASE ON;
已成功存储新的 RMAN 配置参数
RMAN> set encryption on identified by admin only;
正在执行命令: SET encryption
RMAN> backup database plus archivelog;
如果满足下列条件,则使用加密备份归档的重做日志备份:
(1) 在进行归档重做日志的备份时执行set encryption on 命令。
(2) 已经为整个数据库配置了加密,或者至少为数据库的一个表空间配置了加密。
3.4.8 配置归档日志删除策略。
可以配置RMAN来管理归档重做日志的删除策略。默认情况下,Oracle 将配置的备份保存策略应用于归档的重做日志。 然而,如果正在使用FRA和备用数据库,就可以配置RMAN, 在使用configure archivelog deletion policy to applied on standby 命令,将归档的重做日志应用与强制的备用数据库后将其标记为可删除。 在这种情况下,一旦已经成功将归档的重做日志应用于强制的备用数据库位置,Oracle 就可以将其从FRA 中删除。
3.5 使用共享服务器的情况
如果使用Oracle 的共享服务器选项(10g以前称为MTS,或者 多线程服务器),就必须配置一个RMAN使用的专用服务器,这是因为RMAN不能使用共享服务器会话连接到数据库。
如果共享的,就必须通过Net Manager 工具配置一个专用的:
MYICD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DavidDai)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = myicd)
)
)
四. 恢复目录
Oracle 在RMAN存储库中维护与RMAN操作相关的所有元数据。RMAN存储库总是被存储在目标数据库的控制文件中,我们可以用另一个位置存储数据的RMAN存储库。 这就是RMAN恢复目录。
在大多数操作中,RMAN 都不要恢复目录,因此在许多情况下,恢复目录实际上是一个可选的组件。 因为恢复目录在很大程度上可选,所以RMAN的默认配置中没有恢复目录。
4.1 恢复目录的定义
恢复目录是RMAN的一个可选组件,它存储来自RMAN备份的历史备份信息。 与数据库控制文件的RMAN信息不同,恢复目录数据不是定期的进行清楚,因此恢复目录会保存比控制文件更多的历史信息。 使用恢复目录比只使用数据库控制文件有更多的优点,这些优点包括:
(1) 如果要使用存储的RMAN脚本,就必须使用恢复目录
(2) 恢复目录提供存储全企业RMAN信息的单一存储库,它可以更方便,灵活地集中存储企业的备份信息
(3) 由于可以在当前时间之外的时间报告目标数据库的信息,所以恢复目录使得报告起来更有灵活性。
(4) 使用恢复目录可以保留某些默认的数据库RMAN 通道配置信息。
如果你是RMAN 老手,就会注意到这里缺少一些优点:
(1)Oracle 10g可以很容易的在没有恢复目录的情况下通过resetlogs 支持恢复
(2)如果使用控制文件自动备份,则不在需要将恢复目录用于控制文件恢复。
注意:如果不会使用恢复目录,则保存对数据库DBID的记录。 虽然这不是必须的内容,但是数据库的DBID很有用,而且使用DBID可以简化恢复操作。
C:/Users/Administrator.DavidDai>rman target /
恢复管理器: Release 11.2.0.1.0 - Production on 星期三 6月 16 19:48:48 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: MYNEWCCS (DBID=1108507251)
SQL> select dbid from v$database;
DBID
----------
1108507251
是否应该使用恢复目录?
如果只有很少的一些数据库,则恢复目录就可能不值得话费额外的时间和精力在它上面。 如果有许多数据库,则应该考虑使用恢复目录。 一般来说,恢复目录带来的灵活性和集中的全企业报告优点在价值上超过了它所增加的维护和管理成本。 然而,使用恢复目录的一个缺点在于,如果目录数据库关闭,则所有备份都会失败,除非已经编码的脚本,从而在使用恢复目录的第一个备份失败时,执行没有恢复目录的备份。
此外,恢复目录是数据保护备份环境和分割镜像(split mirror)备份的基础部分。 在这些配置中,当备份来自于备份主机的数据库时,可以认为恢复目录是最近的信息,因此它是该策略的核心内容,若维护不当则成为失败的导火索。记住,底线是看环境是否需要恢复目录。
连接RMAN时,必须使用catalog 命令行参数来表明将要建立RMAN与恢复目录的连接。在默认情况下,RMAN使用nocatalog 选项,该选项表明不使用恢复目录。使用catalog 参数后,需要指明包含恢复目录对象的恢复目录模式的用户ID 和口令。
如: rman target 'sys/pwd as sysdba@sid' catalog 'user/pwd@SID2';
4.2 创建恢复目录
4.2.1 配置恢复目录数据库
恢复目录数据库应该尽可能存在于敦力的数据库上。 然后,根据我们的经验,许多站点使用活动数据库作为恢复目录数据库,只要在备份数据库时采取预防措施,这也是可行的。每个注册的数据库可以分配20M左右的表空间。
SQL> create tablespace rman_ts datafile 'D:/APP/ADMINISTRATOR/ORADATA/MYNEWCCS/rmants.dbf' size 20M;
表空间已创建。
4.2.2 创建恢复目录用户
恢复目录用户需要connect,resource,recovery_catalog_owner 权限。
SQL> Create user rcat_dave identified by rcat_dave default tablespace rman_ts;
用户已创建。
SQL> Grant connect,resource,recovery_catalog_owner to rcat_dave;
授权成功。
4.2.3 创建恢复目录模式对象
创建恢复目录在Oracle 10g中是一个简单的过程,该过程仅需要使用RMAN。 启动RMAN时,使用target 参数连接目标数据库,再使用catalog参数连接恢复目录数据库模式。 最后在RMAN 提示符下执行 create catalog命令即可。
C:/Users/Administrator.DavidDai>rman target 'sys/admin as sysdba@mynewccs' catalog 'rcat_dave/rcat_dave@mynewccs';
恢复管理器: Release 11.2.0.1.0 - Production on 星期三 6月 16 21:34:56 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: MYNEWCCS (DBID=1108507251)
连接到恢复目录数据库
RMAN> create catalog tablespace rman_ts; -- rman_ts 是第一步创建的
恢复目录已创建
RMAN>
4.2.4 在恢复目录中注册数据库
使用恢复目录执行数据库的RMAN备份操作前必须注册数据库。方法如下:
RMAN> register database;
注册在恢复目录中的数据库
正在启动全部恢复目录的 resync
完成全部 resync
用report schema 命令验证是否注册成功:
RMAN> report schema;
4.2.5 删除恢复目录
使用drop_catalog 命令可删除恢复目录模式,不过这样也会使包含在模式中的所有信息都会丢失。因此在删除之前要考虑做好备份。
RMAN> drop catalog;
恢复目录所有者是RCAT_DAVE
再输入一次 DROP CATALOG 命令来确认目录删除
RMAN> drop catalog;
恢复目录已删除
RMAN>
4.2.6 在恢复目录中添加RMAN 备份
如果已经在没有恢复目录的情况下执行了RMAN备份,并且希望在后面将这些备份添加到恢复目录,则可以使用catalog命令。可以将数据文件副本,备份集片,归档日志备份,甚至整个备份目录添加到目录中。 示例如下:
RMAN>catalog datafilecopy 'D:/APP/ADMINISTRATOR/ORADATA/MYNEWCCS/system01.dbf';
RMAN>catalog archivelog 'D:/APP/ADMINISTRATOR/ORADATA/MYNEWCCS/arch_20.arc';
RMAN>catalog backuppiece 'D:/APP/ADMINISTRATOR/ORADATA/MYNEWCCS/backup_031.bkp';
RMAN>catalog start with 'D:/APP/ADMINISTRATOR/ORADATA/MYNEWCCS/';
注意: 要谨慎使用catalog start with 命令,必须在目录路径结尾加上反斜杠后缀,如果不加将遍历目录下的所有组合. 如:D:/APP/ADMINISTRATOR/ORADATA/MYNEWCCS-OLD .
4.2.7 在恢复目录中取消数据库注册
可以在RMAN 中使用unregister database 命令来取消数据库注册。如果希望取消已经存在的数据库注册,只要连接到数据库和恢复目录,并执行unregister database命令即可。
RMAN> unregister database;
如果已经删除数据库,并且希望从恢复目录中删除该数据库,则在大多数情况下只需要知道希望取消注册数据库的名称。
RMAN> unregister database mynewccs;
当恢复目录中有多个相同名称注册的数据库时,就需要知道需要取消注册的数据库的DBID。然后在run 代码块中运行unregister database,同时使用set dbid 命令。
RMAN> run
{
set dbid 1108507251;
unregister database mynewccs noprompt;
}
注: 整理自《Oracle 10g RMAN 备份与恢复》
------------------------------------------------------------------------------