新博客http://www.cnblogs.com/zhjh256 欢迎访问
分类: Oracle
2008-01-21 12:53:17
设置RMAN的全局变量
在调用RMAN前,通常设置NLS_DATE_FORMAT和NLS_LANG环境变量,这些环境变量决定了RMAN中使用的时间参数的格式。
NLS_LANG=american
NLS_DATE_FORMAT='Mon DD YYYY HH24:MI:SS'
通常设置为这两个参数。如果要使用RMAN连接到未挂载的数据库,然后在RMAN连接时挂在数据库,那么设置NLS_LANG声明数据库将使用的字符集。
未挂载的数据库假设为默认字符集,为US7ASCII。如果字符集不同于默认字符集,RMAN在数据库挂载后会返回错误。
RMAN下使用命令文件
为了重复执行,可以创建一个包含RMAN命令的文件,然后带@命令加文件名启动RMAN客户端。
如下:
% rman TARGET / @cmdfile1
命令执行完成后RMAN将会退出。
也可以在会话期间执行命令文件:RMAN> @cmdfile1
执行完成后,将显示RMAN> **end-of-file**。
检查RMAN命令和命令文件的语法:CHECKSYNTAX
以CHECKSYNTAX参数启动RMAN将使RMAN仅解析输入的命令的语法,而不执行,并在语法出错时返回RMAN-00558。
% rman CHECKSYNTAX
RMAN> run [ backup database; ]
RMAN-00571: ===========================================================
RMAN-00569: ====== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01006: error signalled during parse
RMAN-02001: unrecognized punctuation symbol "["
RMAN> run { backup database; }
The command has no syntax errors
检查命令文件的语法:
% rman CHECKSYNTAX @/tmp/goodcmdfile
使用RMAN启动和关闭数据库
% rman TARGET /
RMAN> SHUTDOWN IMMEDIATE # closes database consistently
RMAN> STARTUP MOUNT
RMAN> SQL 'ALTER DATABASE OPEN';--只能使用该语法
RMAN中连接使用的数据库类型
·恢复目录数据库;
·auxiliary数据库,可能是一个standby库,或执行特定任务的复制数据库;
数据库连接的认证
连接目标库或auxiliary库时,必须具有SYSDBA权限。不过连接不要求声明SYSDBA,因为所有的RMAN连接都要求SYSDBA权限。
如果使用操作系统认证连接,必须设置环境变量声明Oracle SID的值,如下:
% ORACLE_SID=trgt; export ORACLE_SID
连接恢复目录不要求SYSDBA权限,但要求RECOVERY_CATALOG_OWNER角色。
对于自动auxiliary实例,RMAN确保用户具有SYSDBA权限。
连接目标数据库
% rman TARGET / NOCATALOG
% rman TARGET SYS/oracle@trgt NOCATALOG
如果在启动RMAN后没有声明CONNECT CATALOG,RMAN将运行在NOCATALOG模式,直到第一次运行需要RMAN容器的命令。如果在NOCATALOG模式下执行了需要RMAN恢复目录的命令,必须重启RMAN以连接到恢复目录。
设置数据库进行RMAN Backup
持久的配置选项:控制RMAN的行为
使用RMAN SHOW和CONFIGURE分别察看和更改RMAN配置选项。
显示当前RMAN配置设置:SHOW
SHOW命令可显示当前RMAN的一个/多个配置值,以及它们是否为默认值。如下:
RMAN> SHOW RETENTION POLICY;
RMAN> SHOW DEFAULT DEVICE TYPE;
SHOW ALL命令显示所有参数的设置。输出包含默认值和非默认值。
转储默认值:CONFIGURE... CLEAR
如:RMAN> CONFIGURE RETENTION POLICY CLEAR;
配置备份的默认设备
默认情况下,RMAN备份到一个OS具体的磁盘目录。也可以配置为到磁带。在配置磁带sbt后(见供应商文档),即可以使介质管理器作为默认设备:
CONFIGURE DEFAULT DEVICE TYPE TO sbt;
也可以使用BACKUP DEVICE TYPE sbt DATABASE;将具体的备份配置到具体的设备,使用BACKUP的DEVICE TYPE子句。
为磁盘备份配置默认备份类型
可以配置备份集或者映像拷贝作为默认的备份方式,如下:
RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY; # image copies
RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET; # uncompressed
默认的方式是备份集,但是对于介质管理器没有类似的选项,只能是备份集。
配置备份集的压缩属性
可以配置RMAN在特定的设备类型上使用默认使用压缩备份集CONFIGURE DEVICE TYPE命令的BACKUP TYPE TO COMPRESSED BACKUPSET选项,如下:
RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET;
RMAN> CONFIGURE DEVICE TYPE sbt BACKUP TYPE TO COMPRESSED BACKUPSET;
如要取消,使用以下命令:
RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET;
RMAN> CONFIGURE DEVICE TYPE sbt BACKUP TYPE TO BACKUPSET;
配置磁盘设备和通道
RMAN通道执行所有RMAN任务,默认情况下,RMAN为所有操作配置一个通道。
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/ora_df%t_s%s_s%p';
其中%t是时间戳,%s是备份集号,%p是备份片号;
也可以配置ASM作为默认的位置:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '+dgroup1';
这样就可以不配置到默认的FRA。
配置磁带设备和通道
CONFIGURE CHANNEL DEVICE TYPE sbt PARMS='ENV=mml_env_settings';
PARMS的值依赖于供应商文档。
可以使用CONFIGURE DEVICE TYPE SBT配置并行性,备份集压缩等。设备类型的这些设置独立于设备的通道配置。
CONFIGURE DEVICE TYPE sbt PARALLELISM 2;--配置两个通道;
执行该命令后显示:
old RMAN configuration parameters:
CONFIGURE DEVICE TYPE 'SBT_TAPE' BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 1;
new RMAN configuration parameters:
CONFIGURE DEVICE TYPE 'SBT_TAPE' PARALLELISM 2 BACKUP TYPE TO COMPRESSED BACKUPSET;
new RMAN configuration parameters are successfully stored
配置控制文件和spfile自动备份
可以配置RMAN在控制文件源数据改变和增加备份纪录时自动备份控制文件和SPFILE。自动备份允许RMAN在即使丢失当前控制文件,恢复目录和SPFILE的情况下仍然可以恢复数据库。这些控制文件使用有意义的名称,RMAN不需要恢复目录就可以查找然后转储SPFILE。在使用转储的SPFILE启动实例后RMAN会从自动备份转储控制文件。在挂载控制文件后,RMAN将可用并且RMAN可以转储数据文件并找到归档日志。
CONFIGURE CONTROLFILE AUTOBACKUP ON;
禁用:CONFIGURE CONTROLFILE AUTOBACKUP OFF;
配置控制文件自动备份的格式
默认情况下,自动备份文件的格式为替代变量%F,被转换为c-IIIIIIIIII-YYYYMMDD-QQ格式。可以使用以下命令改变默认格式:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE deviceSpecifier TO 'string';
'string'中必须包含%F,如下:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '?/oradata/cf_%F';
也可以到ASM磁盘组:
CONFIGURE CONTROLFILE AUTOBACKUP FOR DEVICE TYPE DISK TO '+dgroup1/%F';
通过以下命令清除特定配置:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR;
此时控制文件自动备份将到FRA,如果使用的话。
覆盖控制文件自动备份格式
可以在RUN块中,也可以在RMAN提示符下。优先级如下:
1.SET CONTROLFILE AUTOBACKUP FORMAT(RUN块中的);
2.SET CONTROLFILE AUTOBACKUP FORMAT(RMAN提示符下);
3.CONFIGURE CONTROLFILE AUTOBACKUP FORMAT
为RMAN设置FRA
FRA特征允许在磁盘上创建一个目录使数据库用来创建和管理备份和恢复相关的文件。使用FRA简化了连续的数据库管理任务,通过自动命名恢复相关的文件,并保留所有转储和恢复相关的文件足够长,删除不在需要的备份文件。
将设置FRA作为实施备份策略的第一个步骤。
选择FRA的位置
在设置FRA时,通常第一步需要设置保存文件的位置(或者一个ASM磁盘组)。FRA不能存储在裸文件上。
同时必须确定FRA的磁盘引用,存储文件的最大空间。
FRA的位置应该与数据库文件在不同的磁盘上,否则磁盘失败时将丢失备份和数据库。
在RAC下时,FRA的位置必须是集群文件系统,ASM或通过NFS的共享目录,并且每个实例中的引用必须相同。
FRA,ASM和OMF
FRA非常适合于ASM和OMF这两个数据库特征一起使用。OMF是一种基于初始化参数自动命名,定位,创建,和删除数据库文件,控制文件,重做日志文件等的服务。其可以简化许多DBA的任务。
在ASM下使用OMF不使用FRA是支持的,但官方不推荐。
可以存储在FRA中的文件
可以存储的文件分为持久的和临时的。持久的文件只有当前控制文件和在线重做日志的拷贝,并且这些文件不能被删除。临时的文件包括归档日志,数据库文件拷贝,控制文件拷贝,控制文件自动备份,备份片。
计划FRA的大小
FRA的大小至少应该能够包括以下文件的大小。
·所有数据文件的拷贝;
·增量备份;
·归档日志;
·控制文件;
·控制文件自动备份;
如果不能提供这么大,最好能有一个区域足以容纳重要的表空间以及全部的归档。不过FRA至少应该能够包含全部的归档日志文件。
要查看当前的配置,可以查询V$RECOVERY_FILE_DEST。
估计FRA的几个因素:
·数据库中改变频繁的数据文件的数据块的数量;
·是否仅在磁盘上存储备份,或者磁盘+磁带;
·使用基于冗余的备份保留策略还是基于恢复窗口的保留策略;
·是否使用Flashback Database和确保转储点作为时间点恢复的一部分替代;
为FRA设置初始化参数和位置
要启用FRA,必须设置两个初始化参数:DB_RECOVERY_FILE_DEST_SIZE(FRA大小)和DB_RECOVERY_FILE_DEST(FRA位置)。
DB_RECOVERY_FILE_DEST_SIZE必须在DB_RECOVERY_FILE_DEST之前设置。
在RAC下,所有这些参数在所有实例下必须相同。
DB_RECOVERY_FILE_DEST_SIZE
以字节为单位设置,不包含某类磁盘负载。并且如果底层文件系统使用镜像,压缩时,该参数并不代表实际在磁盘上的大小。
DB_RECOVERY_FILE_DEST
声明为ASM磁盘组或者文件系统中的目录。
多个数据库之间共享一个FRA
如果以下条件之一满足,多个数据库可以具有相同的DB_RECOVERY_FILE_DEST:
·没有两个数据库具有相同的DB_UNIQUE_NAME;
·如果没有提供DB_UNIQUE_NAME,两个数据库的DB_NAME也不相同。
使用FRA时的初始化参数限制
·不能使用LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST初始化参数,而必须使用LOG_ARCHIVE_DEST_n;
·LOG_ARCHIVE_DEST_10隐示设置为USE_DB_RECOVERY_FILE_DEST,如果创建了恢复区并且没有设置其他本地归档目的地;
·Oracle推荐DB_RECOVERY_FILE_DEST与DB_CREATE_FILE_DEST或DB_CREATE_ONLINE_LOG_DEST_n不在相同的目录;
增加FRA到已存在的数据库
要创建FRA,只需要设置必要的参数,并重启数据库即可;也可以使用ALTER SYSTEM。如下:
1.SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 10G SCOPE=BOTH SID='*';
2.SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/disk1/flash_recovery_area' SCOPE=BOTH SID='*';
3.SQL> startup force;
使用V$RECOVERY_FILE_DEST和V$FLASH_RECOVERY_AREA_USAGE
这两个视图可以帮助确定是否在FRA分配了足够的空间。
禁用FRA
要禁用FRA,只需要设置DB_RECOVERY_FILE_DEST为空字符串即可:
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='' SCOPE=BOTH SID="*";
数据库将不再为文件存储提供FRA特征,但是RMAN仍然知道其中的文件,并且可用于转储和恢复。
配置备份保留策略
配置基于窗口的保留策略
CONFIGURE命令的RECOVERY WINDOW参数生命从当前时间开始保留的天数。如果任何全备或0级增量备份在恢复窗口时间范围内,RMAN不会考虑它们为obsolete。另外,RMAN将保留所有恢复到窗口范围任意点的所有归档和一级增量备份。运行CONFIGURE RETENTION POLICY命令,如下:
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
RMAN不会自动删除恢复窗口范围内obsolete的备份。而是在REPORT OBSOLETE中报告或V$BACKUP_FILES的OBSOLETE列。
配置冗余级别的保留策略
CONFIGURE RETENTION POLICY的REDUNDANCY参数声明RMAN应该保留的数据文件和控制文件拷贝数量。如果超过了REDUNDANCY的设置,RMAN将会认为额外的备份是obsolete的。
CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
显示当前的策略
SHOW RETENTION POLICY;
禁用保留策略
如果禁用保留策略,RMAN将不会认为任何备份是obsolete的。
CONFIGURE RETENTION POLICY TO NONE;
禁用不同与清除,清除将使保留策略设置为REDUNDANCY=1。
如果使用FRA,不应该将数据库运行在保留策略禁用状态。
Oracle如何管理FRA中的空间
Oracle不会删除FRA中合法的文件,除非必须回收一些空间用于其它目的。如将一些备份移动到了磁带,但是文件仍然没有回收,因此FRA可以看作是磁带的缓存。
什么时候文件可以从FRA被合法的删除
·持久文件不能够被合法的删除;
·在保留策略下obsolete的文件可被合法删除;
·临时文件被移动到磁带后可被合法删除;
·在Data Guard环境下,归档日志删除策略决定何时归档日志文件能够被删除;
安全和可信的删除文件的方法是更改保留策略。
当FRA中的空间不可用时
当FRA中的可回收空间小于15%时,警告日志中间出现一条消息,并在小于3%时将会出现严重警告(也会出现在DBA_OUTSTANDING_ALERTS中),但是数据库将会继续消耗FRA直到完全填充满。
当完全满时,将会出现以下错误:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim nnnnn bytes disk space from mmmmm limit
Nnnnn是要求的空间,mmmm时FRA的磁盘引用。
Oracle处理FRA满的情况和磁盘满一样,通常是数据库挂起,但不全是。
为磁盘备份配置FRA的例子
·归档日志和RMAN备份存储在FRA;
·控制文件和在线日志拷贝存储在FRA外的目录中;
·数据文件不超过3GB,归档日志不超过4GB。
备份策略基于增量备份,控制文件自动备份到FRA;
FRA为10GB,足以存储控制文件自动备份,全数据库0级增量备份,加上一些1级增量备份。
实施策略:
DB_NAME=sample
DB_CREATE_FILE_DEST = '/u02/oradata/wrk_area'—当前数据文件所在位置;
DB_CREATE_ONLINE_LOG_DEST_1 = '/u03/oradata/wrk_area'—控制文件和在线日志文件位置;
DB_CREATE_ONLINE_LOG_DEST_2 = '/u04/oradata/wrk_area'
DB_RECOVERY_FILE_DEST = '/u01/oradata/rcv_area'—FRA地址;
DB_RECOVERY_FILE_DEST_SIZE = 10G—FRA位置;
如果没有设置LOG_ARCHIVE_DEST_n,Oracle仅存储归档日志到FRA。
一旦数据库启动,执行以下命令配置环境:
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
创建控制文件在FRA中包含复制文件
假设创建一个以下类型的数据库:
·控制文件,数据文件,在线日志存储为OMF在一个单独的文件目录中;
·一个重复的控制文件包含在FRA中;
·重复的在线日志包含在FRA中;
·归档日志存储在FRA和其他单独的文件目录中;
·RMAN备份直接到FRA中;
实施方式如下:
1.创建PFILE:
DB_NAME=sample
DB_CREATE_FILE_DEST = /u01/oradata/wrk_area/--OM文件位置;
LOG_ARCHIVE_DEST_1 = 'LOCATION=/arc_dest1'—设置归档目的地到FS目录;
LOG_ARCHIVE_DEST_2 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST'—设置归档目的地到FRA;
DB_RECOVERY_FILE_DEST = 'LOCATION=/u01/oradata/rcv_area'—设置控制文件和在线日志拷贝到FRA;
DB_RECOVERY_FILE_DEST_SIZE = 10G
DB_CREATE_FILE_DEST设置所有数据文件,在线日志,控制文件的默认目录,其他拷贝的控制文件和在线日志创建在FRA中;
2.创建数据库:
SQL> CREATE DATABASE sample;
该语句的作用:
·数据文件在DB_CREATE_FILE_DEST中以OMF创建;
·在线日志组默认创建;每组两个成员,分别在DB_CREATE_FILE_DEST和DB_RECOVERY_FILE_DEST中;
·在DB_CREATE_FILE_DEST中创建一个控制文件,DB_RECOVERY_FILE_DEST中也创建一个控制文件;
·Oracle使用LOG_ARCHIVE_DEST_1和LOG_ARCHIVE_DEST_2作为归档目的地;因为设置了本地归档目的地,因此LOG_ARCHIVE_DEST_10不会默认设置为FRA;FRA中创建的归档文件名基于OMF而不是LOG_ARCHIVE_FORMAT声明的格式;
3.使用ALTER DATABASE ADD LOGFILE语句创建更多的归档组;如果没有声明文件,将在DB_CREATE_FILE_DEST和FRA中分别创建一个文件。如下:
ALTER DATABASE ADD LOGFILE;
创建仅在FRA中归档的文件
假设需要创建一个数据库,其控制文件,在线日志,数据文件以OMF创建在单独的文件系统目录中。另外具有以下特征:
·仅归档日志到FRA;
·RMAN备份到FRA;
实施方式:
1.设置PFILE:
DB_NAME=sample
DB_CREATE_FILE_DEST = '/u02/oradata/wrk_area'
DB_RECOVERY_FILE_DEST = '/u01/oradata/rcv_area'
DB_RECOVERY_FILE_DEST_SIZE = 10G
DB_CREATE_ONLINE_LOG_DEST_1 = '/u03/oradata/wrk_area'—在线日志和控制文件的默认目录;
DB_CREATE_ONLINE_LOG_DEST_2 = '/u04/oradata/wrk_area'
DB_CREATE_FILE_DEST设置默认文件系统目录;DB_RECOVERY_FILE_DEST设置归档目录;
2.创建数据库:
CREATE DATABASE sample;
没有拷贝文件将创建在FRA中。
3.因为启用了FRA,并且没有设置归档目的地为本地,Oracle自动设置LOG_ARCHIVE_DEST_10为FRA。FRA中的文件名给予OMF而不是LOG_ARCHIVE_FORMAT。
4.创建额外的日志组:
ALTER DATABASE ADD LOGFILE;
将会在DB_CREATE_ONLINE_LOG_DEST_n中创建在线日志文件,但是不会在FRA。