本文是《用NetBackup备份Oracle — 驱动硬件》一文的续篇,本文的下一篇是《Veritas NetBackup 6.5的安装和部署》,将在近期发布。
在大数据时代,Oracle数据库,依然焕发着经典商业数据库的全新生命力,与众多后来者的竞争,毫不逊色。
Oracle数据库的坚不可摧和卓越性能,在那次经历中也得到了验证。
信息办主任,自诩技术专家,志得意满,顾盼自雄。某一日,在他的亲自操作下,机房掉电了,其时,恰逢UPS检修,只听得“砰!”一声巨响,机房瞬间寂静下来,时间停止流逝,所有人被定住原地,随后,无声的惊呼响起,佯装镇定的脸阻止不了颤抖的手指。
“快!RACK!快看RACK行不行!“,他压低了嗓门说,脸色苍白。
加上电了,RACK(Oracle数据库集群)起来了,几十个业务服务起来了,一切正常。
我一直坐在那里,写文档,假装什么都不知道,他看了看我,似乎想说些什么,但终于还是转身走了。
第三章 Oracle 10g数据库的RMAN配置
3.1配置Recovery Manager (RMAN)
RMAN不能直接读写磁带设备,必须使用介质管理层(MML)来做磁带备份。介质管理层可以是Oracle提供的Oracle Secure Backup,也可以是第三方提供的介质管理产品(如:Veritas NetBackup、HP Data Protector等)。
配置RMAN进行数据库备份有两种方法,一种是使用控制文件作为目录信息的存放地,另一种是使用目录数据库作为目录信息的存放地。与之相应地,使用RMAN进行数据库恢复也有两种方法:nocatalog方式和catalog方式。
以下对这两种方法的特性分别予以说明:
(1) nocatalog方式
nocatalog方式是用control file作为catalog,每一次备份都要往控制文件里面写入备份信息,这样,控制文件里会有越来越多的备份信息。
如果使用nocatalog方式备份Oracle数据库,那么,Oracle使用control file存放备份信息。因此,备份control file是非常重要的。
可以将Oracle参数文件中的CONTROL_FILE_RECORD_KEEP_TIME值适当地增大(缺省为7天),该参数在/dbs/initSID.ora中(在Oracle 9i版本之后,此参数在spfile中,只能通过Oracle语句更改)。
初始化参数CONTROL_FILE_RECORD_KEEP_TIME设置备份信息保存时间,到规定时间就自动清除以前的备份信息:
SQL> alter sysem CONTROL_FILE_RECORD_KEEP_TIME=7 scope=spfile;
设置了CONTROL_FILE_RECORD_KEEP_TIME=7,任何超过7天的纪录都有可能被覆盖,如果没有超过7天的记录,Oracle将扩展控制文件的大小,如果由于磁盘空间已满等限制而导致无法扩展控制文件的大小,Oracle会强制覆盖最老的记录并且在alter.log中记录这一情况。
使用nocatalog方式恢复数据库时,数据库必须处于“mount”状态。而Oracle数据库能够成功运行startup mount命令的前提条件是control file必须存在。因此,必须用文件恢复的方式首先恢复control file,然后再恢复数据文件。
使用nocatalog方式恢复数据库的步骤如下:
1) 建立Oracle运行环境(包括init或sp文件)
2) 用文件恢复的方式恢复control file到init文件指定的位置
3) 挂上数据库:SQL> startup mount;
4) 在rman状态下,恢复数据文件
5) 在SQL状态下,使用命令:
SQL> alter database open resetlogs;
(2) catalog方式
catalog方式则要求首先要创建恢复目录数据库。
使用rman catalog方式恢复数据库时,首先使用startup nomount命令,再使用restore controlfile命令恢复控制文件,然后再恢复数据文件。
使用catalog方式恢复数据库的步骤如下:
1) 建立oracle运行环境(包括init或sp文件)
2) 使用rman命令恢复控制文件
3) 在SQL状态下:SQL> alter database mount;
4) 使用rman命令恢复数据文件
5) 在SQL状态下,使用命令:
SQL> alter database open resetlogs;
nocatalog方式和catalog方式,这两者在操作方式上的最大差异是:使用rman nocatalog备份时,必须先用文件方式备份control file。
3.2在实际环境中初步配置RMAN
使用目录数据库配置RMAN。
一般地,如果没有特殊目的,为了安全和方便,不使用目标数据库的控制文件来管理rman的备份和恢复信息,而是使用使用恢复目录(即catalog方式)来备份和恢复数据库。
首先,启动SQLPLUS会话。用如下命令:
sqlplus as sysdba
然后,创建恢复目录模式,其具体步骤如下:
一、首先,为rman用户建立表空间:
1. 设置rman用户的表空间位置为/databackup/rman_netbackup.dbf,表空间的初始大小为512MB
SQL> CREATE TABLESPACE rman_netbackup DATAFILE '/databackup/rman_netbackup.dbf' SIZE 512M;
2. 让表空间rman_netbackup上线:
SQL> ALTER TABLESPACE rman_netbackup ONLINE;
二、创建rman用户并且将表空间rman_netbackup配置rman用户的默认表空间
SQL> CREATE USER RMAN IDENTIFIED BY rman
TEMPORARY TABLESPACE temp DEFAULT TABLESPACE rman_netbackup
QUOTA UNLIMITED ON rman_netbackup;
然后,用以下命令确认成功完成了如上的操作:
SQL> select username, default_tablespace from dba_users where username= 'RMAN';
【注意】“RMAN”为大写字符
在备份和恢复操作进行了一段时间之后,使用如下的的命令检查目录数据库自由空间情况:
SQL>SELECT tablespace_name,COUNT(block_id),SUM(blocks),SUM(bytes)
FROM dba_free_space
GROUP BY tablespace_name;
如果目录数据库的剩余空间不够,就需要将与之相关的表空间进行扩容。
三、为rman用户授权
SQL>GRANT CONNECT, RESOURCE TO rman;
SQL>GRANT RECOVERY_CATALOG_OWNER to rman;
授权完毕,用以下命令确认成功完成了授权操作:
SQL> select privilege from dba_sys_privs where grantee='RMAN';
SQL> select granted_role from dba_role_privs where grantee='RMAN';
四、以rman用户连接到RMAN状态:
rman target catalog rman/rman
连接到目标数据库: ZW (DBID=3198249379)
连接到恢复目录数据库
如果有多个实例,目标数据库和恢复目录数据库分别建立在与不同实例对应的数据库中,那么,在Oracle数据库管理系统所安装的服务器上,操作如下:
RMAN TARGET @CWZW CATALOG rman/rman@RMAN4CWZW
如果要从远程客户端连接Oracle数据库的RMAN进程,首先需要在远程客户端配置好网络服务名,然后,再使用如下的命令进行连接:
RMAN TARGET system/******@CWZW CATALOG rman/rman@RMAN4CWZW
五、创建恢复目录
RMAN>CREATE CATALOG;
恢复目录已创建
以上命令在在rman用户的默认表空间rman_netbackup中创建RMAN恢复目录。(这一步骤也可以在只连接恢复目录数据库的情形下进行,不用连接目标数据库。)
如需删除表空间,可以使用:
RMAN>DROP CATALOG;
恢复目录所有者是RMAN
再输入一次 DROP CATALOG 命令来确认目录删除
RMAN> DROP CATALOG;
恢复目录已删除
六、注册数据库
为了在恢复目录中注册一个新数据库,首先要连接到目标数据库,必须使用方法二进入RMAN状态再进行操作。
RMAN> REGISTER DATABASE;
注册在恢复目录中的数据库
正在启动全部恢复目录的 resync
完成全部 resync
注意:在恢复目录中注册数据库之前,先要确认ORACLE_SID为目标数据库的SID。
七、检验
在恢复目录中注册了目标数据库之后,进行一些检验。
要列出目标数据库的所有数据文件,如下命令:
RMAN>REPORT SCHEMA;
以下为在Windows系统上安装的Oracle 10g中演示样例,非本次技术实施中的真实情形:
用如下命令列出数据库原型列表
RMAN> list incarnation;
以下为在Windows系统上安装的Oracle 10g中演示样例,非本次技术实施中的真实情形:
八、同步
对目标数据库所作的更改并不能自动同步到恢复目录中,执行备份或者恢复时,会执行同步。
如果目标数据库经历了许多物理更改等情况,应该手动同步恢复目录:
RMAN> RESYNC CATALOG;
正在启动全部恢复目录的 resync
完成全部 resync
九、删除恢复目录数据库
如果需要,可以删除恢复目录数据库,首先开启RMAN会话连接目标数据库和恢复目录数据库,然后按照如下步骤进行:
(1) 在RMAN中注销目标数据库:
RMAN> UNREGISTER DATABASE;
(2) 在RMAN中删除恢复目录数据库
RMAN> DROP CATALOG;
(3) 对恢复目录所存储的数据库开启SQLPLUS会话:
sqlplus system/******@RMAN4CWZW as sysdba
取消对rman用户的授权:
SQL> REVOKE RECOVERY_CATALOG_OWNER FROM rman;
SQL> REVOKE CONNECT, RESOURCE FROM rman;
删除rman用户:
SQL> DROP USER RMAN;
让表空间rman_netbackup下线:
SQL> ALTER TABLESPACE rman_netbackup OFFLINE;
在数据库中删除表空间rman_netbackup和其在磁盘上的数据文件:
SQL> DROP TABLESPACE rman_netbackup INCLUDING CONTENTS AND DATAFILES;
3.3在实际环境中进一步配置RMAN
使用命令rman target catalog rman/rman进入RMAN命令状态,按如下步骤进行配置:
(1) 显示RMAN的所有当前配置
RMAN> show all;
(2) 打开自动备份功能
在ORACLE 10G中新增了对控制文件和参数文件的自动备份,如果打开这项配置,那么,每次进行数据文件的备份时,控制文件和SPFILE也都被自动备份,这对进行控制文件与参数文件的保护加上了一层保护。但是,在Oracle 10G安装后,自动备份是默认关闭的,需要在RMAN下打开自动备份开关。
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
可以再使用控制文件的AUTOBACKUP FORMAT参数来指定控制文件备份的位置和格式:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '/PATH/CtrlFile_%F';
在本次技术实施中,未配置控制文件备份的位置和格式,在此处提及此配置,仅供日后参考用。
(3) 打开备份优化选项
RMAN的备份优化(Backup Optimization)是指:在备份过程中,如果满足特定条件,RMAN将自动跳过某些文件而不将它们包含在备份集中,这样可以节省时间和空间。
通常必须满足如下几个条件的情况下,才能够启用备份优化的功能:
i)打开备份优化开关:
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
ii) 执行的BACKUP DATABASE或BACKUP ARCHIVELOG命令中带有ALL或LIKE参数。
iii) 分配的通道仅使用了一种设备类型,也就是没有同时分配使用sbt与disk的多个通道。
在理论上,备份优化仅对于只读表空间或offline表空间起作用,对于已经备份过的archive log文件,也会跳过。
(4) 设置默认的备份设备为磁带设备
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO SBT;
设置好这项之后,用show all命令查询当前配置,可以看到,除了默认的备份设备设置变成了’SBT_TAPE’之外,还自动增加了4项新增的配置项:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '%F'; # default
CONFIGURE DEVICE TYPE SBT_TAPE PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
【说明】如果再次将默认的备份设备从磁带设备转换为磁盘,那么,再次使用“show all”命令,可以看到这4项新增的配置项也会自动消失。
(5) 设置并行度和通道
通道是RMAN引导数据库备份和数据库恢复的手段,是到备份设备的数据流。如果配置了2个通道,将对目标数据库建立2个链接以打开2个独立的服务器会话。
只需配置1个通道:
RMAN> CONFIGURE CHANNEL 1 DEVICE TYPE SBT FORMAT '%F';
(6) 备份保留策略
备份保留策略设置RMAN何时废弃数据文件和日志文件的备份。但是,“废弃”是指将就备份文件标记为废弃,并不删除这个文件,应该定期使用命令“DELETE OBSOLETE”删除废弃的备份文件,一定不要采用操作系统层的命令去删除这些备份文件。
i)REDUNDANCY选项
CONFIGURE RETENTION POLICY TO REDUNDANCY 7;
这项配置将保留可以恢复的最新的7份数据库备份,任何超过最新7份的数据库备份都将被标记为废弃的(obsoleted)。
通常的备份策略都使用这个选项,在本次技术实施中,也是采用这个选项,REDUNDANCY的值也被设置为7。
ii) RECOVERY WINDOW
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
是保持所有足够的备份,可以将数据库系统恢复到最近7天内的任意时刻。任何超过最近7天的数据库备份将被标记为废弃的(obsoleted)。
iii) 恢复数据库备份保留策略的默认值:
RMAN> CONFIGURE RETENTION POLICY CLEAR;
这样的设置等同于如下设置:
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
iv) 设置数据库备份的不保留策略:
RMAN> CONFIGURE RETENTION POLICY TO NONE;
以上ii)、iii)和iv)各项所述内容均未在本次技术实施中采用,列出目的是为日后作为参考用。
配置完毕RMAN之后,使用“show all”命令显示当前的配置,本次技术实施中的最终配置如下:
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 7;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '%F'; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE SBT_TAPE PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT '%F';
CONFIGURE CHANNEL 1 DEVICE TYPE 'SBT_TAPE' FORMAT '%F';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/10g/dbs/snapcf_cwzw.f'; # default
RMAN参数的修改完成之后,也可以在sqlplus会话中查看经过修改的项和值,使用如下命令:
SQL> select * from v$rman_configuration;
下一篇是《Veritas NetBackup 6.5的安装和部署》,将在近期发布。