NBU网络备份大全之oracle系统热备份

  作者:pipicat
2008/1/23 0:00:00
本文关键字: 存储 磁带 VTL

    学习和掌握如何使用NBU备份文件系统,对于一个数据管理员来说,仅仅是一个开始。因为对于大部分企业来说,买来NBU主要是为了备份企业数据库的数据,保护数据库的数据安全,进而保证企业应用的安全运行。因此,从本文起,将陆续推出针对oracle、DB2和sybase的数据库备份。

Oracle备份简介:

    简单的按照备份进行的方式,可以分为逻辑备份、冷备份(脱机备份)、热备份(联机备份),其实冷备份与热备份又可以合称为物理备份。

    按照备份的工具,可以分为EXP/IMP备份和RMAN。一般来说,Exp/Imp是oracle的一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理冲突等中有很强的功能。但是目前主要最广泛的Oracle备份恢复工具是rman 。RMAN是Oracle提供的一个数据库备份和恢复工具,利用rman可以方便进行数据库的冷备份和热备份。此外,有一些个人用户,会使用OS拷贝,但是它的缺点是占用空间大,而且拷贝文件的内容一般与系统环境有很大关系,转移到其他机器不容易恢复,不是企业用户的选择。

    在本文中,我们将介绍如何利用NBU和oracle的rman工具进行oracle的热备份。热备份也称为联机(Archivelog)备份,是当数据库打开并对用户有效是的OS级的数据备份。热备份与冷备份最大的区别就在于备份时不需要关闭数据库,适合于24×7业务类型的需要。

    注意,笔者假设用于已经阅读过前作《用NBU备份oracle系统-冷备份》,故在讲述中会忽略一些基本的配置过程,重点在于将冷备份和热备份的区别。所以如果对细节不是很清楚的用户,可以翻阅前作。

热备份的条件:

    用户如果需要进行热备份,那么必须将数据库设置为archivelog模式。用户可以登录数据库后,通过“SQL> archive log list”查看数据库的模式是否是archivelog模式。如果用户数据库不是在archivelog模式下,可以通过下列命令将其设置为归档模式:

    • SQL>shutdown immediate
    • SQL>startup mount
    • SQL>alter database archivelog
    • SQL>alter database open

    在归档模式下,用户的数据库会将所有的日志记录起来,所以时间一久就会占用大量的磁盘空间,所以用户可以按需,将数据库改回到非归档模式,方法如下所示:

    • SQL>shutdown immediate
    • SQL>startup mount
    • SQL>alter database noarchivelog
    • SQL>alter database open

热备份的类型:

    从NBU的角度来说,oracle的热备份分为两种:一种是数据库备份,可以在不关闭数据库的情况下,备份某个数据库的数据文件、控制文件和归档日志文件等等;第二种备份模式是热备份表空间,可以在数据库关闭的情况下,备份某个数据库表空间的内容。在本文中,我们就分别介绍一下如何进行数据库级备份和表空间级备份。

    注:在这里,我只会讲到如何修改备份脚本来进行备份,如果用户对于如何创建oracle备份策略、如何运行全备份和增量备份、如何寻找NBU提供的备份脚本模板等问题存在疑惑的话,请参加前文《用NBU备份oracle系统-冷备份》

数据库级热备份:

    对于数据库级热备份来说,我们可以利用NBU提供的脚本文件:/usr/openv/netbackup/ext/db_ext/oracle/samples/rman/hot_database_backup.sh,这是一个可执行脚本,内容就是在设置好运行oracle rman程序所需的一些环境变量后,从root用户切换到oracle系统用户的帐号下,利用rman程序,将数据库的数据文件、归档日志文件和控制文件备份到用户指定的存储单元中。在该文件中,我们需要修改如下参数(建议将该文件拷贝一份出来做修改,以免改错):

    ORACLE_HOME:表示oracle所在的目录,NBU需要到其目录下执行相应的rman命令;
    ORACLE_SID:指明需要冷备份的数据库;
    ORACLE_USER:oracle数据库所属的系统用户,NBU会先用该用户登录,再执行各种备份操作;
    TARGET_CONNECT_STR:登录oracle数据库的帐号,必须是系统管理员,因为冷备份需要停止oracle数据库先;

    热备份和冷备份模板脚本修改的区别在于:冷备份需要指定oracle启动文件参数,这是因为冷备份需要关闭和重新启动数据库,所以需要启动配置文件;而热备份不关闭数据库,所以不需要该变量。

    重要:另外需要用户注意的是,NBU提供的脚本运行时,会在脚本所在目录下生成一个同名的.out文件,里面记录了NBU脚本运行时产生的日志,然而该脚本会将这个日志名称作为参数传递给rman,而rman无法识别该参数中“.out”中的“.”,所以当运行该脚本时,会出现图一所示的错误,解决办法是:要么用户在hot_database_backup.sh脚本中,将这条rman命令中的记录日志相关内容删除(图二);要么利用转义字符处理该字符串,使得rman可以正确识别该命令。

图一:执行NBU脚本出现的问题

图二:用户需要在脚本中所做的删除

    这样,用户就可以将该脚本放到oracle备份策略中的备份选择中并执行它了。

    小窍门:为了保证NBU脚本没有问题,用户在运行NBU备份策略之前,最好手动运行该脚本,并通过查看相关的“.out”文件来检查是否脚本可以运行正确,如果脚本运行错误,则用户输入“# echo $?”则返回非零值,在这种情况下,用户需要从输入文件中发现错误原因并修改运行脚本。只有该脚本可以手动运行成功后,才能在备份策略中运行成功。

表空间级热备份:

    在使用表空间级备份之前,我们需要先解释一下catalog数据库(此catalog非NBU之catalog,是oracle的内容)。Catalog也是一个数据库(几十兆而已),只不过这个数据库用来保存备份信息,一个恢复目录可以用来备份多个数据库。RMAN可以在没有恢复目录(NOCATALOG)下运行,这个时候备份信息保存在控制文件。保存在控制文件的备份信息是很危险的,如果控制文件的破坏将导致备份信息的丢失与恢复的失败,而且,没有恢复目录,很多RMAN的命令将不被支持。所以对于重要的数据库,建议创建恢复目录。

    在表空间级热备份中,需要首先创建一个catalog数据库,所需命令如下:

    1, 为目录创建一个单独的表空间:
    SQL>Create tablespace TS_RMAN datafile '/oracle/catalog_rman.bdf size 50m;
    2, 创建RMAN用户:
    SQL>Create user RMAN identified by RMAN default tablespace TS_RMAN temporary tablespace temp;
    3, 给RMAN授予权限:
    SQL>Grant connect , resource , recovery_catalog_owner to rman;
    4, 连接到目标数据库和CATALOG数据库:
    rman target system/manager@target_tnsname rcvcat rman/rman@catalog_tnsname
    其中,target_tnsname是我们想要备份的数据库名称,catalog_tnsname是刚才创建rman表空间和rman用户所在数据库的名称,可以和备份数据库一个,因为我们这里仅仅是备份其他表空间。
    5, 创建CATALOG用户的表:
    rman>create catalog
    6, 登记目标数据库:
    rman>register database

    这样,我们就成功创建了catalog表空间来存放备份信息。

    为了使得用户可以热备份oracle表空间,NBU为用户提供了一个模板脚本:/usr/openv/netbackup/ext/db_ext/oracle/samples/rman/hot_tablespace_backup.sh。用户需要修改的内容,除了和上述数据库级热备份需要的参数外,还需要下列参数:

    RCVCAT_TNS:就是catalog表空间所在的数据库名称;
    RCVCAT_CONNECT_STR:就是连接RCVCAT_TNS数据库所需要的rman的帐号信息,在本例中就是“RCVCAT_CONNECT_STR=rman/rman”。

    此外,在模板脚本中,只是热备份用户的SYSTEM表空间,而用户可以修改脚本,使得可以热备份其他的表空间。首先我们需要查找到数据库中所有的表空间,见图三:

图三:查看数据库的表空间

    在找到需要热备份的表空间后,用户需要修改hot_tablespace_backup.sh脚本中的字段,见图四:

图四:修改表空间名称

    由图四可知,我们在脚本中修改黄圈以内的名称为任何存在的表空间名称即可。

    这样,对于表空间级的备份脚本就修改完毕了,用户可以试着运行该脚本,并通过输入文件hot_tablespace_backup.sh.out来解决可能出现的错误(一步一步教着,应该没什么错误吧!),如果脚本可以运行正常,那么就需要将其加入到NBU的备份策略中,并设置好全备份和差分备份的日程表即可。

    通过本文的介绍,用户可以通过修改NBU自带的备份脚本,对oracle系统做数据库级或者表空间级的热备份了。希望本文可以在用户使用NBU oracle代理的过程中,加深用户对于oracle数据库和NBU的理解。

责编:
vsharing微信扫一扫实时了解行业动态
portalart微信扫一扫分享本文给好友

著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
最新专题
流动存储 为大数据而生

伴随信息技术的突飞猛进,更大量级的非结构化数据与结构化数据构成的大数据成为企业级存储所面临的最大挑战:一方..

磁盘阵列及虚拟化存储

利用数组方式来作磁盘组,配合数据分散排列的设计,提升数据的安全性。虚拟化存储,对存储硬件资源进行抽象化表现。

    畅享
    首页
    返回
    顶部
    ×
      信息化规划
      IT总包
      供应商选型
      IT监理
      开发维护外包
      评估维权
    客服电话
    400-698-9918