用NetBackup备份Oracle — 备份的实施

《用NetBackup备份Oracle》,这一系列文章已经连载了三期,这是第四篇,也是最后一篇。 在

《用NetBackup备份Oracle》,这一系列文章已经连载了三期,这是第四篇,也是最后一篇。

在前面三篇文章中,对技术细节作了尽可能精细的描述,实际可操作性较强。然而,在写下这些文字的时候,于脑海之中回旋的,在心里反复体味的,却是当时的一个个场景和情状。这些,是人生经历的重要组成部分,是个人成长的关键历程,远比技术细节更为重要。

源于此,在这一系列文章的开头部分,都作了一些非技术描述的文字记录,或自我感悟,或回忆过程,或总结归纳。我以为,这样的记录是有意义的。

此篇起首,讲一个就发生在那次技术实施中的故事:热衷于算计但实力不济,就会干出不可理喻的事情。

通常,如果时间足够长,空间足够大,很多事情会被刻意地隐匿其实质,然而,在这个非常典型的案例中,在几分钟的时间内,在机房这个空间里,所有若无其事的掩饰外衣还来不及披上,鲜明的实质就突显了出来,它一丝不挂地站在那里,狰狞不堪。

很多年前,先被风传“熟悉Oracle”,再申辩“不熟啊!”无效,便被领导派去那个城市,硬着头皮边学边干,在不眠不休不饮不食的两天后,完成了技术实施工作。

第三天,执行技术复盘和结果确认,无误。

第四天,进行技术交接。在向甲方负责人提交文档后,我又再以口头形式作一些说明。我一边说着,一边回答问题,一边在机器上做演示。

就在那个时候,坎,公司在当地的一个工程师,踱了过来,他一边说:”哦!这个啊!是这样的......“,一边把身体楔在了甲方负责人和我之间,手抓过鼠标,开始了他的讲解。

坎的讲解,就来自于我前一天对他所提问题的详细解答。

目睹那一幕,甲方负责人的表情迅速变化,先是惊讶和不解,旋即就明了,他虚看着我,一言不发,面容严肃,分明在说:“你现在怎么办?”

“一手把这小子拨开?或者,干脆来个兰博式锁喉?要不然,也那样把身子楔进去?”,看着坎的后脑勺,我在想。

看了看那小子,看了看甲方负责人,我走出了机房。

这退让,不是胆怯,是顾全大局。

不一会儿,另一位当地工程师小李摇着头出来了,一抬眼,看见我,说:“猛虎,坎不行,顶不住了,你来,赶紧来。”

我快步走进去,眼睛也不看坎,右手只轻蔑地一挥,便把他赶到一旁,余光扫过,瞥见了尴尬的蹩脚站姿。

这是不懂装懂并当场现形的典型案例,是一种极端的反映,而另一种极端的反映,则是略知则胀,是指掌握了一定技术或技能之后的自我膨胀。直白地说,就是以为自己会的那两下子很了不起,殊不知,人情练达才是最高级的技术。

知好歹,懂进退;明事理,有轻重,这本该是随岁月流逝而自然养成的基本素质,可是,总有一些人,并非孤芳,却偏要自赏。

此等案例,俯拾皆是,无需赘言。


本文的前序文章是:

(1)《用NetBackup备份Oracle — 驱动硬件》

(2)《用NetBackup备份Oracle — 配置RMAN》

(3)《用NetBackup备份Oracle — 安装和部署》

第五章 使用Veritas NetBackup 6.5进行数据库备份

5.1从RMAN中手动发起数据库备份

首先,为了测试RMAN和NetBackup for Oracle的集成设置的正确性,从Oracle数据库手动发起备份任务向IBM System Storage TS3100磁带库写入备份数据。

建立备份脚本RMAN_SCRIPT,具体内容如下:

{

#Backup the Oracle 10G database to library based tape drive

ALLOCATE CHANNEL C1 DEVICE TYPE sbt;

#Backup the whole database files

BACKUP TAG Oracle10g_DB_BACKUP DATABASE;

#Switch the current log file

SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';

 

#Backup the archived logs

BACKUP ARCHIVELOG ALL;

#Backup a copy of the current controlfile

BACKUP CURRENT CONTROLFILE TAG = CTL_Files;

RELEASE CHANNEL C1;

}

对Oracle数据库实例CWZW启动RMAN会话,运行以上的脚本:

RMAN> RUN { EXECUTE SCRIPT RMAN_SCRIPT };

备份任务启动后,可以在Master Server的NetBackup Administration Console的Activity Moitor中看到备份的实时运行情况。

经过大约30分钟的时间,备份任务正常执行,运行结果正常。这说明RMAN和NetBackup for Oracle之间的集成设置是正确和有效的。

5.2从Master Server中使用备份脚本发起数据库备份

为了从Master Server中发起Oracle的数据库备份,需要在Master Server上启动NetBackup Administration Console,然后设置Oracle Policy,再为Oracle Policy设置Schedules。

5.2.1启动NetBackup Administration Console

NetBackup Administration Console有不同的操作系统平台上有不同的界面表现形态:

对于在UNIX和Windows操作系统平台上安装的Master Server,NetBackup支持NetBackup-Java Administration Console。

对于在Windows操作系统平台上安装的Master Server,NetBackup支持Windows界面风格的NetBackup Administration Console。

虽然NetBackup Administration Console有两种不同的界面表现形态,但是这两者在功能上是一样的,在操作上也是类似的。

具体的启动过程如下:


一、对于在UNIX操作系统平台上安装的Master Server,按照步骤启动NetBackup Administration Console:

1)以root用户登录Master Server的操作系统;

2)确认auth.conf文件已经被恰当地设置(见4.4.1节所属),使用如下命令启动NetBackup 

Administration Console:

# /usr/openv/java/jnbSA &


二、对于在Windows操作系统平台上安装的Master Server,按照如下顺序启动程序即可:

Start --> All Programs --> Veritas NetBackup --> NetBackup Administration Console

也可以从NetBackup客户机上选择远程地连接Master Server以启动NetBackup Administration Console,然后再对Master Server进行设置。

5.2.2创建Oracle Policy和Schedules

将前述的脚本RMAN_SCRIPT转换为文本文件/home/oracle/RMAN_SCRIPT,为此,在RMAN会话状态下使用如下命令:

RMAN> PRINT SCRIPT CWZW_Oracle10g_Backup to file '/home/oracle/RMAN_SCRIPT';


这样,备份脚本就被保存在NetBackup客户机上(即:主机名为SRV05的Oracle 10g服务器)的目录/databackup/rman_netbackup中了。

以下,以在主机名为SRV05的Master Server例,使用Windows界面风格的NetBackup Administration Console设置Oracle Policy和Schedules:

如果需要,可以在“File”-->“Change Server”中进行Master Server的选择,使得Oracle Policy和Schedules被创建在预期的Master Server上。

在左边面板中右击“Policies”,在弹出菜单中选择“New Policy”,如下图所示:

然后,弹出“Add a New Policy”对话框,如下图所示:

在文本框里输入要新建的Oracle Policy的名称,不建议勾选“Use Backup Policy configuration Wizard.”,即不使用设置向导完成Policy的设置过程。具体步骤如下:


一、点击“OK”按钮,出现如下“Add New Policy”主界面:

在“Attributes”项中,在“Policy type”中,选择“Oracle” 。在“Policy storage unit”中选择TS3100磁带库。在“Policy volume pool” 中选择为Oracle 10g数据库服务器而建立的Policy volume pool--“CWSRV02” 。


二、点击“Schedules”项,出现如下的界面:

“Schedules”项目NetBackup for Oracle何时进行备份,对NetBackup for Oracle来说,至少需要2个不同的schedules:

(i) 1个Application Backup schedule,当创建一个Oracle的策略时,NetBackup自动创建一个Default-Application-Backup schedule。双击“Default-Application-Backup schedule”,出现如下界面:


对“Default-Application-Backup schedule” ,在没有用到更高级功能时,建议不要对其进行改动。

 (ii) 1个需要手动建立的Full Backup schedule,创建后才能在客户端(Oracle服务器端)进行预订的备份操作。

为此,在“Add New Policy”主界面中,在“Schedules”项的最下方,点击“New”按钮(图中未出现),出现如下的“Change Schedule”界面:

在“Attributes”中,在“Name”中输入名称,在“Type of backup”下拉菜单中,选择“Automatic Full Backup” 。

点击“Start Window”项,出现如下界面:

在如上的操作界面中,用鼠标拖动或者直接指定的方式,指定Automatic Full Backup的启动时间段和可持续时间段。

具体的设置需要根据实际情况来决定,主要是根据数据库的大小、应用程序访问数据库的频率和主要时段等指标来分析。

一次自动全备份也许需要很长时间才能完成,应该选择一个系统相对空闲的时段进行备份操作。比如,上图所示的备份时段就是选择了2个时段:周日17:00~24:00,周一0:00~8:00

点击“Exclude Dates”项,出现如下界面:

在此项中,选择不应用备份日程的具体日期,用鼠标点击的方式进行操作。如果没有特别需要,一般不修改此项。

三、在“Add New Policy”主界面中,点击“Clients”项,出现如下界面:

这时,有两种操作方式,分别说明:

i) 如果NetBackup客户机上安装的是UNIX操作系统

在如上界面中,清除对“Detect operating system when adding or changing a client”的默认勾选。点击“New…”按钮,出现如下界面:

手工输入NetBackup客户机(Oracle 10g数据库服务器)的主机名“CWSRV02”,按回车键,出现“Client Hardware and Operating System”界面,选择“HP-UX-IA64, HP-UX 11.23”,如下图所示:

再点击“OK”按钮,出现如下界面:

在本次技术实施中,采用的就是这种操作方式。

ii) 如果NetBackup客户机上安装的是Windows操作系统

在如上的“Clients”项的界面中,保持对“Detect operating system when adding or changing a client”的默认勾选。点击“New…”按钮,同样出现如下界面:

点击最右边的小图标,出现如下界面:

点击“OK”,等待一会儿,NetBackup自动探测到了客户机的硬件和操作系统,出现如下界面:


四、在“Add New Policy”主界面中,点击“Backup Selections”项,出现如下界面:


点击“New”按钮,出现如下界面:

点击右边的文件夹形状的小图标“,出现NetBackup for Oracle客户机的文件浏览器,如下界面:

找到/home/oracle目录中的文件RMAN_SCRIPT,选择这个脚本文件,出现如下界面:

点击“Add New Policy”主界面下方的“OK”按钮,完成Oracle Policy和Schedules的创建。

要确保脚本保存在“Client” 项中的NetBackup客户机(Oracle服务器)中,脚本可以保存在NetBackup客户机上的任何位置,但是一定要确保NetBackup能够访问并运行脚本(如上图所示,是使用完整路径去访问备份脚本)。

除了可以用前述的方法自己写备份脚本,还要注意到:一旦在NetBackup Client安装了NetBackup for Oracle,备份脚本的例子也被一并安装在了NetBackup Client上,可以对这些例子进行一些修改以符合实际情况再使用。

使用命令也可以将备份模板(Backup Template)生成脚本,具体地说,NetBackup for Oracle提供命令行工具bpdbsbora,使用这个工具,可以将在NetBackup Client通过备份向导而生成的备份模板转换为备份脚本,然后再对备份脚本进行必要的修改以符合实际需要。

备份模板的生成方法和转换为脚本的方法将在后面的章节描述。

五、创建其他类型的Oracle备份策略和日程。

还可以建立差异增量备份和累计增量备份类型的备份策略,具体方法是:

在“Add New Policy”主界面的“Schedules”项,在“Type of backup”下拉选项中有如下界面:

如果要创建差异增量备份,选择“Automatic Differential Incremental Backup” 

如果要创建累计增量备份,选择“Automatic cumulative Incremental Backup” 。

对其余的各项设置方法如本节(即:5.2.2节)的内容所述。

5.3从NetBackup Client中使用备份模板发起数据库备份

为了从NetBackup Client中发起数据库备份,首先要从NetBackup Client中生成备份模板(Backup Template),为此,在NetBackup Client上使用NetBackup for Oracle的备份向导建立备份模板。

通过在NetBackup Client上启动Backup, Archive, and Restore来启动备份向导。备份向导收集RMAN备份操作需要的信息,然后使用这些信息去建立备份模板,备份模板建立后,可以立即在客户端使用备份模板发起备份操作,也可以将其保留在当前的Master Server上留作以后使用。

对于在不同操作系统上安装的NetBackup Client,这个过程是有所不同的。对HP-UX操作系统而言,使用典型Java应用界面特性的“Backup, Archive, and Restore” 或者NetBackup-Java Administration Console去执行此项任务。对Windows操作系统而言,使用典型Windows界面特性的“Backup, Archive, and Restore”去执行此项任务。

从安装在HP-UX操作系统上的NetBackup Client中建立备份模板,然后执行备份,具体步骤如下:

首先,以ROOT用户登录HP-UX,然后,使用命令“/usr/openv/java/jbpSA &”启动Backup, Archive, and Restore,如下图所示:


输入NetBackup Client的主机名(CWsrv02),注意:是输入NetBackup Client本机的主机名,不要输入Master Server的主机名,否则就是对Master Server执行备份任务了。

然后,再输入NetBackup Client本机的管理用户名(root)和相应的密码,点击“Login”按钮,开始登录,登录过程中,下方出现不断变化的状态条:

......

......

在成功登录后,出现如下的界面:

在“Backup Files”项中出现的“Directory Structure”中,列出了本机(CWsrv02)可供备份的资源,点击Oracle实例图标左边的树状分支形小图标,会出现Oracle数据库登录界面,如下:

输入数据库DBA的用户名sys和密码,输入Oracle实例的网络服务名,点击“OK” ,正常登录Oracle数据库后,出现如下界面:

将Oracle实例“cwzw”展开并勾选要备份的项,出现如下界面:

从“Backup, Archive, and Resotre”主界面中选择菜单“Actions”-->“Backup…” ,出现“Backup for Oracle Backup Wizard” ,起始界面的主要部分如下:

以上启动“Backup for Oracle Backup Wizard”的操作,也可以通过这样的方式完成:

点击“Backup Files”项中右下方的按钮:

点击“Backup for Oracle Backup Wizard”起始界面下方的“Next”按钮,出现如下界面:

在上图所示的界面中选择目标数据库的登录信息,可以使用操作系统认证进行登录,也可以使用“Oracle”的认证进行登录。选择完毕,点击”Next”按钮,出现如下界面:

点击上图的“Next”按钮,出现如下的短暂信息界面:

几秒过后,出现如下界面:

在上图中保持默认选择“Default configuration”,也可以选择“Existing template configuration”,选择使用已经存在的模板的设置。点击“Next”继续,出现如下的短暂信息界面:

几秒过后,出现如下界面:

在以上界面中,“Backup file name format”就是RMAN参数“Format” ,而“Backup set identifier”就是RMAN参数TAG。根据需要进行设置,然后按“Next”继续,出现如下界面:

在以上界面中选择:是否要在被备份数据库前将数据库下线,是否要在备份数据库后将数据库上线。一般不对此项做修改,保留不选择的默认状态,按“Next”按钮继续,出现如下界面:

没有特别的原因,一般不在如上界面进行设置,按“Next”按钮继续,出现如下界面:

没有特别的原因,一般不在如上界面进行设置,按“Next”按钮继续,出现如下的短暂信息界面:

几秒过后,出现如下界面:

如果要在向导完成备份模板创建后立即运行数据库备份脚本,在上图所示的界面中,勾选“Perform backup immediately after wizard finishes” 。如果要保存备份模板,勾选“Save Template”选项;在“Template Information”中输入要创建的备份模板名,比如:Oracle10g_Veritas;在“Description”输入对备份脚本的文字说明,在“User name for scheduled backup(s)”中输入此备份的创建账户,比如当前账户root 。如下图所示:

设置完毕,点击“Finish”按钮结束备份向导。脚本“Oracle10g_Veritas”被保存在Master Server(当前是SRV05)上,其保存的默认目录是:

VERITAS产品安装目录\NetBackup\db\dbtemplates\oracle\ ,可以到Master Server上确认备份模板文件已经创建。

需要注意的是:NetBackup for Oracle备份向导并不能支持所有的RMAN命令和选项,如果有非常复杂的备份要求,需要自己写模板文件以实现预期的功能。

如果勾选了“Perform backup immediately after wizard finishes” ,点击“Finish”按钮后,可以在“Backup, Archive, and Restore” 主界面的“Task Progress” 中看见备份进程的执行过程,也可以在Master Server上启动NetBackup Administration console,在“Áctivity Monitor” 中查看备份的执行过程。

5.4从Master Server中使用备份模板发起数据库备份

在NetBackup Client上,如果使用NetBackup for Oracle Backup Wizard建立了备份模板文件,这些备份模板文件就被保存在Master Server上,具体目录是:

“VERITAS产品安装目录\NetBackup\db\dbtemplates\oracle\”

比如:

D:\Program Files\Veritas\NetBackup\Db\DbTemplates\Oracle 

这时,可以从Master Server的NetBackup Administration Console中使用备份模板发起数据库备份,具体的操作步骤与“5.2.2创建Oracle Policy和Schedules” 所述过程基本一致,只是对“Add New Policy”主界面中的“Backup Selections”项的设置有所不同。具体的操作如下:

在“Add New Policy”主界面中,点击“Backup Selections”项,出现如下界面:

点击“New”按钮,出现如下界面:

点击最右边的文件形状小图标,出现如下界面:

在上图中,在“Template set”下拉项中选择“Oracle_RMAN” ,在“Template”中选择备份模板文件名(即:使用5.3节中所述的方法创建的备份模板),点击“OK”回到“Add New Policy”主界面,点击“Add New Policy”主界面下方的“OK”按钮,完成Oracle Policy和Schedules的创建。

第六章 使用Veritas NetBackup 6.5进行数据库恢复

使用前面章节中所述的方法建立备份策略后,再按照实际需要进行Oracle数据库的备份,对数据库备份需要进行必要的维护工作。比如:使用RMAN命令“report”或“list”查看Oracle数据库的备份文件集,使用RMAN命令“delete obsolete”删除废弃备份集。

如果数据库出现问题,需要执行恢复任务,一般所采用的主要方法有:

从NetBackup Client启动NetBackup for Oracle recovery wizard创建数据库恢复模板和执行恢复任务;

使用bpdbsbora命令行工具;

一、在NetBackup Client使用NetBackup for Oracle的数据库恢复脚本(shell script);

NetBackup for Oracle的recover wizard搜集执行RMAN数据库恢复操作所需要的信息,之后可以生成数据库恢复脚本并且运行恢复任务。

【功能的限制】

使用这种方式执行数据库恢复,有几个功能方面的限制

(1)由于Oracle数据库只会显示它目前的状态,如果从上一次备份后,某些对象从数据库中删除了,那么,在恢复界面中就无法显示这些被删除的对象,为了恢复这些需要恢复的对象,就必须恢复在这些对象被删除前的整个数据库;

(2) 数据只能被恢复到源位置;

(3) 无法恢复控制文件;

因此,在数据库不是处于极端损坏的情况下,这种恢复数据库的方法才是可以应用的。当然,这也是频率最高使用的数据库恢复任务。

从安装在HP-UX操作系统上的NetBackup Client中建立恢复模板,然后执行恢复,具体步骤如下:

首先,以root用户登录HP-UX,然后,使用命令“/usr/openv/java/jbpSA &”启动Backup, Archive, and Restore

注意,在登录时一定不要输入Master Server的主机名,否则就是对Master Server执行备份和恢复操作了。应该输入NetBackup Client(数据库服务器)所在的主机名。

进行登录操作,出现如下界面(默认就是打开“Restore Files”项):

在“Actions”中选择“Specify NetBackup Machines and Policy Type…”项,出现如下信息: 

在以上界面中,在“Policy type for restores”下拉选项中选择“Oracle”,再点击“OK”按钮。在NetBackup-Java Administration Console主界面中“Directory Structure”下方,出现了Oracle数据库实例,

以下操作步骤与NeBackup for Oracle Backup Wizard的操作过程有许多可以类比的地方,虽然一个创建备份模板,一个是创建恢复模板,但是有一些选项是一致的。因此,以下对这些相似的地方不再作重复描述,只是对不同之处进行说明。

点击Oracle实例图标左边的树形分支形状的小图标,会出现Oracle数据库登录界面,如下:

在上图中输入数据库用户的帐号,密码和网络服务名,点击“OK“ ,数据库实例被展开,选择需要恢复的数据库对象,如下图所示:

在上图所示界面中,点击“Restore”按钮,启动NetBackup for Oracle Recovery Wizard,如下:

点击“Next”继续:

点击“Next”继续:

在上图中勾选“Restore”和“Recover” ,根据实际需要对其他选项进行选择或者输入。点击“Next”继续,出现如下界面:

在上图中,选择用来恢复数据库的备份集,可以选择最近的一次备份集,也可以设置条件选择相应的备份集用作恢复。点击“Next” ,出现如下界面:

在如上界面中,选择数据库恢复的时间点,或者数据库恢复的上限。选择完毕后,点击“Next”继续,出现如下界面:

在上图中,根据需要选择:是否要在数据库恢复前将其下线,是否要在数据库恢复后将其上线。选择完毕后,点击“Next”继续,出现如下短暂信息界面:

几秒后,短暂信息界面消失,出现如下界面:

可以选择将数据库恢复的设置保存为数据库恢复模板,勾选“Save as”按钮,在文本框中输入想要保存恢复模板文件的完整路径,如下图所示:

【注意】

(1)如果输入的只是一个模板文件名,点击“Finish”按钮,就会出现如下的报错信息框:

(2)恢复模板文件是保存在NetBackup Client上,而且必须给出完整的保存路径,而备份模板文件是保存在Master Server的预定目录下,要注意区分清楚。

如果选择了“Run immediately after finishing wizard” ,点击“Finish”按钮,就会根据前面所述的设置进行恢复数据库的操作。可以在“Backup, Archive, and Restore”主界面中的“Task Progress”项中看到数据库恢复过程的实时进展信息。

【全文完】

打开APP阅读更多精彩内容