硬件环境:
Master Server:C4 1.7GHz/512 DDR/80GB IDE/D-Link 100Mbps
Client:Dell 1750/3GHz志强/512MB ECC/18.3GB SCSI/Broadcom1000Mbps*2
软件环境:
Master Server: Windwos 2000 Server with SP4
Oracle 9i (9.0.1.1.1)
Veritas NetBackup 5.0MP5简体中文(DiskBackup)
Client:RedHat Linux Enterprise Server 3.0
Oracle 9i (9.2.0.4.0)
Veritas NetBackup Client for Linux
Veritas NetBackup DB Agent for Oracle
对于DataBase Agent,在NetBackup Server for Windows以及NetBackup Client for Windows程序中均包含,只是需要用注册号来激活
随笔
启用NetBackup for Oracle
1. 在客户机上停止Oracle 服务。
2. 在主服务器上的NetBackup 管理控制台中,单击帮助(Help) > 许可证密钥(License
Keys)。
3. 添加NetBackup for Oracle 的许可证密钥。
4. 在客户机上重新启动Oracle 服务。
或者:先激活NetBackup for Oracle 许可证后,重新启动Oracle 服务。
使用Windows 控制台设置“每个客户机的最大作业数”属性
1. 在NetBackup 管理控制台的左窗格中,展开主机属性(Host Properties)。
2. 选择主服务器(Master Server)。
3. 在右窗格中,双击服务器图标。
“主服务器属性”对话框随即显示。
4. 在“主服务器属性”对话框中,单击全局属性(Global Attributes)。
每个客户机的最大作业数(Maximum jobs per client) 的默认值为1。
5. 将每个客户机的最大作业数(Maximum jobs per client)改为99。
如果想输入一个较小的值,请使用上面提供的公式计算每个客户机允许的最大备份数。
提示 为避免出现任何问题,我们建议您为每个客户机的最大作业数(Maximum jobs per client)全局属性输入值99。(Veritas NetBackup 5.0 for oracle 系统管理员指南 –Windows,P45)
第一部分 Windows平台上使用NB备份Oracle
一、 使用模板自动备份
1. 安装数据库
2. 启用Oracle数据库归档模式
在Oracle 数据库服务器上,修改Oracle 数据库的初始化文件intiSID.ora;在此文件中修改以下语句:
# log_archive_start=true (启动Oracle 归档模式)
# log_archive_dest_1 = "location=/archivelog" (设置Oracle 归档文件存放路径)
# log_archive_format = arch_%t_%s.arc (设置Oracle 归档文件格式)
将语句前的#去掉,将log_archive_dest_1 修改为archivelog 实际的存放路径;
在命令提示符下,运行Oracle9i 的sqlplus 管理工具,执行以下语句启动归档:
sqlplus>shutdown immediate; (启动归档前先要停止数据库)
sqlplus>startup mount; (数据库以mount 方式启动)
sqlplus>alter database archivelog; (启动数据库归档)
sqlplus>alter database open; (打开数据库)
sqlplus>archive log list; (查看归档是否已经打开)
3. 安装Veritas NetBakcup 5.0
安装NB_50_5_M_276290.winnt.intel补丁包,并安装ZH_NBWin简体中文语言包
4. 配置主机属性中主服务器的的“每个客户机最大作业数”为“99”
5. 使用“入门”向导配置主服务器以及Catalog备份
6. 创建备份策略
对于系统自动创建的“Default-Application-Backup”备份日程表,不可更改,只可更改“保留”的时限,与自动完全备份保持相同即可
7. 运行“备份、归档和恢复”控制台,创建模板,并保存。
8. 在刚刚创建的策略中添加“备份选择”列表,选择刚创建的模板
备注:这样比较简单,不用写脚本了,直接使用在Client上生成的Oracle备份模板来备份Oracle
二、 使用RMAN脚本自动备份
1. 创建RAM备份脚本:
在C:\Program Files\VERITAS\NetBackup\DbExt\Oracle\Samples\rman\中有模板,做适当更改后即可使用。建议选择hot_database_backup备份脚本模板和database_restore恢复脚本模板
修改备份脚本hot_database_backup.sh,主要修改以下几点:
ORACLE_HOME=/oracle/product/9.2.0.1/ 改为实际的备份路径
ORACLE_SID=orcl 改为实际的SID
TARGET_CONNECT_STR=sys/sys 改为sys 用户的登录口令
……
RUN {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
#ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
只创建一个备份通道,所以将第二句注释掉。
BACKUP
%BACKUP_TYPE%
FORMAT '%d-c%c-p%p-s%s-t%t'
设定数据文件备份集的格式。
DATABASE;
sql 'alter system archive log current';
RELEASE CHANNEL ch00;
#RELEASE CHANNEL ch01;
只有一个备份通道,所以将第二个通道的释放语句注释掉。
# Backup all archive logs
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
#ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
只创建一个备份通道,所以将第二句注释掉。
BACKUP
FILESPERSET 20
FORMAT '%d-c%c-p%p-s%s-t%t'
设定归档日志备份集的格式。
ARCHIVELOG ALL DELETE INPUT;
此句表示在备份完归档日志后自动删除所有已备份的归档日志
RELEASE CHANNEL ch00;
#RELEASE CHANNEL ch01;
只有一个备份通道,所以将第二个通道的释放语句注释掉。
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
BACKUP
FORMAT '%d-c%c-p%p-s%s-t%t'
CURRENT CONTROLFILE;
RELEASE CHANNEL ch00;
增加备份控制文件的语句,并指定控制文件备份集的格式。
}
……
2. 创建Oracle备份策略,并“备份选择”中添加刚创建的脚本的完整路径
备注:在选择脚本时,打开浏览列表,选择C:\会导致整个控制台关闭
第二部分 Linux平台使用NB备份Oracle
一、 安装
1. 安装NetBackup Client,提示java的东东未能成功安装
2. 安装DataBase for Oracle的Agent
3. 启用Oracle数据库归档模式
在Oracle 数据库服务器上,修改Oracle 数据库的初始化文件intiSID.ora;在此文件中修改以下语句:
# log_archive_start=true (启动Oracle 归档模式)
# log_archive_dest_1 = "location=/archivelog" (设置Oracle 归档文件存放路径)
# log_archive_format = arch_%t_%s.arc (设置Oracle 归档文件格式)
将语句前的#去掉,将log_archive_dest_1 修改为archivelog 实际的存放路径;
在命令提示符下,运行Oracle9i 的sqlplus 管理工具,执行以下语句启动归档:
sqlplus>shutdown immediate; (启动归档前先要停止数据库)
sqlplus>startup mount; (数据库以mount 方式启动)
sqlplus>alter database archivelog; (启动数据库归档)
sqlplus>alter database open; (打开数据库)
sqlplus>archive log list; (查看归档是否已经打开)
4. 链接NBU5.0 备份软件与oracle 数据库的文件
Note:在做此项操作前必须使用oracle 用户,且数据库必须是shutdown 的。
#su – oracle
$svrmgrl
SVRMGR>connect internal
SVRMGR>shutdown immediate;
SVRMGR>exit
$cd /usr/openv/netbackup/bin
$./oracle_link
此操作需要第二次关闭数据库
注:Oracle_link 的过程包含两个动作,均由oracle_link 的脚本自动执行。
第一步,创建一个Oracle 和NetBackup 的系统连接文件
# su – oracle
$ cd $ORACLE_HOME/lib
$ mv libobk.a libobk.a.back 如果存在此文件,则重命名保留
$ ln –s /usr/openv/netbackup/bin/libobk.a libobk.a
第二步,重新编译新的Oracle 文件的二进制代码
$ cd $ORACLE_HOME/bin
$ mv oracle oracle.back 如果存在此文件,则重命名保留
$ make –f ins_rdbms.mk ioracle LLIBMM=-lobk
整个执行过程均由oracle_link 的脚本自动执行,包括自动判断Oracle 数据库的版本、创建Link文件和重新Make oracle 文件。
提示成功完成后,重新启动oracle 数据库。
SVRMGR>startup;
数据库被重新启动。
5. 创建RAM备份脚本:
在/usr/openv/netbackup/ext/db_ext/oracle/samples/rman/中有模板,做适当更改后即可使用。建议选择hot_database_backup备份脚本模板和database_restore恢复脚本模板
修改备份脚本hot_database_backup.sh,主要修改以下几点:
ORACLE_HOME=/oracle/product/9.2.0.1/ 改为实际的备份路径
ORACLE_SID=orcl 改为实际的SID
TARGET_CONNECT_STR=sys/sys 改为sys 用户的登录口令
……
RUN {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
#ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
只创建一个备份通道,所以将第二句注释掉。
BACKUP
%BACKUP_TYPE%
FORMAT '%d-c%c-p%p-s%s-t%t'
设定数据文件备份集的格式。
DATABASE;
sql 'alter system archive log current';
RELEASE CHANNEL ch00;
#RELEASE CHANNEL ch01;
只有一个备份通道,所以将第二个通道的释放语句注释掉。
# Backup all archive logs
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
#ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
只创建一个备份通道,所以将第二句注释掉。
BACKUP
FILESPERSET 20
FORMAT '%d-c%c-p%p-s%s-t%t'
设定归档日志备份集的格式。
ARCHIVELOG ALL DELETE INPUT;
此句表示在备份完归档日志后自动删除所有已备份的归档日志
RELEASE CHANNEL ch00;
#RELEASE CHANNEL ch01;
只有一个备份通道,所以将第二个通道的释放语句注释掉。
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
BACKUP
FORMAT '%d-c%c-p%p-s%s-t%t'
CURRENT CONTROLFILE;
RELEASE CHANNEL ch00;
增加备份控制文件的语句,并指定控制文件备份集的格式。
}
……
环境描述:
Netbackup Master Server:windows 2003 Veritas Netbackup 6.0
Netbackup Advanced Client:windows 2003 Oracle oracle 9.2
一、安装Veritas Netbackup Server 6.0和Netbackup Client
所有的license key 都在安装Netbackup Server时输入,
带有 Advanced Client 功能的 NetBackup for Oracle具有快照备份、即时修复、脱离主机备份等功能
二、配置 NetBackup for Oracle 策略和日程表
2。1创建 Oracle 策略和日程表
1、单击开始 > 所有程序 > VERITAS NetBackup > NetBackup 管理控制台
2、右击所有策略(All Policies) 窗格,然后单击新建策略(New Policy)
a、备份策略配置向导
b、策略名称和类型(Policy Name and Type) 选择 Oracle 作为策略类型
c、客户机列表(Client List) 添加 NetBackup forOracle 客户机名称。选择硬件和操作系统
d、备份类型(Backup Type) 默认值
e、循环(Rotation) 默认值
f、启动时段(Start Window) 默认值
g、完成(Finish)
如果需要设置Snapshot Backup,在对应的策略Attributes上 选择perform snapshot Backups,Advanced snapshot options选择VSS
3、创建日程表
日程表决定 NetBackup for Oracle 何时启动备份。一个 Oracle 备份至少需要两个不同的日程表:
◆ 一个应用程序备份日程表。在创建 Oracle 策略时, NetBackup for Oracle 自动创建一个 Default-Application-Backup 日程表。
◆ 一个“自动完全备份”日程表。该日程表需要由您创建。使用该日程表,可以在客户机上执行预定的备份操作。
a、策略(Policy) 对话框--日程表(Schedules) 选项卡
b、新建(New) 创建另一个日程表
c、选择自动完全备份(Automatic Full Backup) 作为备份类型 保留期为 3 个月。复用路数为 1。
d、启动时段(Start Window) 选项卡 每天18:00-23:00
e、确定(OK)
2。2备份 Oracle 数据库
1、登录到客户机,然后调用备份向导,单击开始 > 所有程序 > VERITAS NetBackup > 备份、归档和恢复
2、单击备份文件(Backup Files) 选项卡
3、确定是要备份完整 Oracle 实例
4、单击操作(Actions) > 开始备份标记的文件(Start Backup of Marked Files)(Oracle处于归档模式)
5、调用备份向导
6、目标数据库登录凭据(Target Database Logon Credentials) 对话框
7、“修复目录登录凭据(Recovery Catalog Logon Credentials)
8、已归档的重做日志(Archived Redo Logs) 屏幕
9、配置选项(Configuration Options) 屏幕。
10、数据库状态(Database State)屏幕。
11、NetBackup 配置变量(NetBackup Configuration Variables) 屏幕
在备份策略名称(Backup policy name) 字段中,输入在 NetBackup 主服务器上创建的Oracle 策略的名称。备份服务器,客户名称
12、单击向导完成后立即执行备份(Perform backup immediately after wizard finishes)
13、要开始备份,请单击完成(Finish)
以下通过View Status看到的备份log
INF - Begin progress logging for process: (3968.4024)
INF - Using policy oracle9i to perform a user directed Standard backup.
INF - Starting Oracle Recovery Manager.
INF - Using: "e:\oracle\ora92\bin\rman.exe"
INF - Connection info: target 'SYS/*****@ORCL' nocatalog
INF - Start of Recovery Manager input.
INF - Begin progress logging for process: (336.560)
INF - # -----------------------------------------------------------------
INF - # RMAN command section
INF - # -----------------------------------------------------------------
INF - RUN {
INF - ALLOCATE CHANNEL ch00
INF - TYPE 'SBT_TAPE';
INF - SEND 'NB_ORA_CLIENT=Oracle9i,NB_ORA_POLICY=oracle9i,NB_ORA_SERV=ASUS,NB_ORA_SCHED=app';
INF - BACKUP
INF - INCREMENTAL LEVEL=0
INF - FORMAT 'bk_u%u_s%s_p%p_t%t'
INF - DATABASE;
INF - RELEASE CHANNEL ch00;
INF - # Backup Archived Logs
INF - sql 'alter system archive log current';
INF - ALLOCATE CHANNEL ch00
INF - TYPE 'SBT_TAPE';
INF - SEND 'NB_ORA_CLIENT=Oracle9i,NB_ORA_POLICY=oracle9i,NB_ORA_SERV=ASUS,NB_ORA_SCHED=app';
INF - BACKUP
INF - FORMAT 'arch-s%s-p%p-t%t'
INF - ARCHIVELOG
INF - ALL
INF - DELETE INPUT;
INF - RELEASE CHANNEL ch00;
INF - # Control file backup
INF - ALLOCATE CHANNEL ch00
INF - TYPE 'SBT_TAPE';
INF - SEND 'NB_ORA_CLIENT=Oracle9i,NB_ORA_POLICY=oracle9i,NB_ORA_SERV=ASUS,NB_ORA_SCHED=app';
INF - BACKUP
INF - FORMAT 'bk_u%u_s%s_p%p_t%t'
INF - CURRENT CONTROLFILE;
INF - RELEASE CHANNEL ch00;
INF - }
INF - Start backup of backup piece: (bk_u07id25h2_s7_p1_t617682466)
INF - End of Recovery Manager input.
INF - Start of Recovery Manager output.
INF - Recovery Manager: Release 9.2.0.1.0 - Production
INF - connected to target database: ORCL (DBID=1132391046)
INF - using target database controlfile instead of recovery catalog
INF - allocated channel: ch00
INF - channel ch00: starting incremental level 0 datafile backupset
INF - including current SPFILE in backupset
INF - including current controlfile in backupset
INF - input datafile fno=00001 name=E:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
INF - input datafile fno=00002 name=E:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
INF - input datafile fno=00005 name=E:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF
INF - input datafile fno=00010 name=E:\ORACLE\ORADATA\ORCL\XDB01.DBF
INF - input datafile fno=00006 name=E:\ORACLE\ORADATA\ORCL\INDX01.DBF
INF - input datafile fno=00009 name=E:\ORACLE\ORADATA\ORCL\USERS01.DBF
INF - input datafile fno=00003 name=E:\ORACLE\ORADATA\ORCL\CWMLITE01.DBF
INF - input datafile fno=00004 name=E:\ORACLE\ORADATA\ORCL\DRSYS01.DBF
INF - input datafile fno=00007 name=E:\ORACLE\ORADATA\ORCL\ODM01.DBF
INF - Backup id: oracle9i_1174382945
INF - Policy: oracle9i
INF - Master server: asus
INF - Beginning backup on server asus of client oracle9i.
INF - End backup of backup piece: (bk_u07id25h2_s7_p1_t617682466)
INF - Server status = 0
INF - Begin progress logging for process: (336.560)
INF - Start backup of backup piece: (arch-s8-p1-t617683382)
INF - Backup id: oracle9i_1174383855
INF - Policy: oracle9i
INF - Master server: asus
INF - Beginning backup on server asus of client oracle9i.
INF - End backup of backup piece: (arch-s8-p1-t617683382)
INF - Server status = 0
INF - input datafile fno=00008 name=E:\ORACLE\ORADATA\ORCL\TOOLS01.DBF
INF - piece handle=bk_u07id25h2_s7_p1_t617682466 comment=API Version 2.0,MMS Version 5.0.0.0
INF - channel ch00: backup set complete, elapsed time: 00:15:07
INF - released channel: ch00
INF - sql statement: alter system archive log current
INF - allocated channel: ch00
INF - current log archived
INF - channel ch00: starting archive log backupset
INF - input archive log thread=1 sequence=8 recid=7 stamp=617683376
INF - input archive log thread=1 sequence=9 recid=8 stamp=617683377
INF - input archive log thread=1 sequence=10 recid=9 stamp=617683378
INF - input archive log thread=1 sequence=11 recid=10 stamp=617683381
INF - piece handle=arch-s8-p1-t617683382 comment=API Version 2.0,MMS Version 5.0.0.0
INF - channel ch00: backup set complete, elapsed time: 00:04:56
INF - channel ch00: deleting archive log(s)
INF - archive log filename=E:\ORACLE\ORA92\RDBMS\ARC00008.001 recid=7 stamp=617683376
INF - Begin progress logging for process: (336.560)
INF - Start backup of backup piece: (bk_u09id26n1_s9_p1_t617683681)
INF - Backup id: oracle9i_1174384149
INF - Policy: oracle9i
INF - Master server: asus
INF - Beginning backup on server asus of client oracle9i.
INF - End backup of backup piece: (bk_u09id26n1_s9_p1_t617683681)
INF - Server status = 0
INF - archive log filename=E:\ORACLE\ORA92\RDBMS\ARC00009.001 recid=8 stamp=617683377
INF - archive log filename=E:\ORACLE\ORA92\RDBMS\ARC00010.001 recid=9 stamp=617683378
INF - archive log filename=E:\ORACLE\ORA92\RDBMS\ARC00011.001 recid=10 stamp=617683381
INF - released channel: ch00
INF - allocated channel: ch00
INF - channel ch00: starting full datafile backupset
INF - including current controlfile in backupset
INF - piece handle=bk_u09id26n1_s9_p1_t617683681 comment=API Version 2.0,MMS Version 5.0.0.0
INF - channel ch00: backup set complete, elapsed time: 00:04:26
INF - released channel: ch00
INF - Recovery Manager complete.
INF - End of Recovery Manager output.
INF - End Oracle Recovery Manager.
NetBackup通过RMAN nocatalog方式备份设置步骤
当通过rman nocatalog方式备份Oracle,Oracle使用controlfile存放备份信息。因此,当使用rman nocatalog方式备份时,备份controlfile是非常重要的。
有一个问题,当使用rman nocatalog恢复时,数据库必须是处于“mount”状态的。而Oracle startup mount的前提条件是control必须存在。因此,你必须在恢复datafile之前先恢复controlfile。使用rman catalog方式时,可以startup nomount然后restore control file;但使用rman nocatalog时,必须先用文件方式恢复controlfile。
下面对比一下rman nocatalog和rman catalog的恢复时的步骤,以便建立正确的备份策略(以下的恢复都是在online状态下的备份):
rman nocatalog恢复:
1) 建立oracle运行环境(包括init或sp文件)
2) 文件方式恢复controlfile到init文件指定的位置
3) startup mount
4) rman,恢复datafile
5) alter database open resetlogs
rman catalog恢复:
1) 建立oracle运行环境(包括init或sp文件)
2) rman ,restore controfile
3) alter database mount
4) rman, restore datafile
5) alter database open resetlogs
可以看出,rman nocatalog备份时,必须用文件方式备份controlfile。
另外,由于nocatalog时利用controlfile存放备份信息,建议将Oracle参数文件中的CONTROL_FILE_RECORD_KEEP_TIME值加大(缺省为7天), 该参数在$ORACLE_HOME/dbs/initSID.ora中(9i后也可能在spfile中,只能通过Oracle语句更改)。
以下描述如何使用NetBackup对Oracle进行rman nocatalog方式下的备份:
一、备份服务器上的工作
1. 建立NetBackup policy,用于备份control file
建立policy “oracle_control_file”, backup type “standard”, client “oracle_server”, filelist “/scripts/control.ora”, schedule “user” type “user backup”, 选择所有时间范围。
2. 建立NetBackup policy,用于备份 Oracle database
建立policy “oracle_full”, backup type “oracle”, client “oracle_server”, script “/scripts/hot_database_level0.sh”,schedule自己定。
3. 如果需要,建立NetBackup policy用于备份archivelog,方法同上,脚本另写。
二、Oracle服务器上的工作
1. 在 “oracle_server”上,编辑“/scripts/hot_database_level0.sh”文件,加入下行,在rman指令结束符“}”前:
ALLOCATE CHANNEL ch00 TYPE disk;
COPY CURRENT CONTROLFILE to '/scripts/control.ora';
RELEASE CHANNEL ch00;
2. 在 “/scripts/hot_database_level0.sh”相关行(快结束的地方),加入:
/usr/openv/netbackup/bin/bpbackup -p oracle_control_file -s user –t 0 /scripts/control.ora
3. 如果另外有archivelog的备份,重复以上1、2步骤,加在archivelog备份的脚本中。
4. 改变oracle参数(可选,Oracle9i使用spfile的话通过oracle指令修改)
(1) shutdown oracle
(2) 编辑 $ORACLE_HOME/dbs/initSID.ora, 设置
CONTROL_FILE_RECORD_KEEP_TIME=365
(3) startup oracle
scripts举例:
#!/bin/sh
# $Header: hot_database_backup.sh,v 1.9 2002/02/06 16:48:56 lstrub Stab $
#
#bcpyrght
#***************************************************************************
#* $VRTScprght: Copyright 1993 - 2002 VERITAS Software Corporation, All Rights Reserved $ *
#***************************************************************************
#ecpyrght
#
# ---------------------------------------------------------------------------
# hot_database_backup.sh
# ---------------------------------------------------------------------------
# This script uses Recovery Manager to take a hot (inconsistent) database
# backup. A hot backup is inconsistent because portions of the database are
# being modified and written to the disk while the backup is progressing.
# You must run your database in ARCHIVELOG mode to make hot backups. It is
# assumed that this script will be executed by user root. In order for RMAN
# to work properly we switch user (su -) to the oracle dba account before
# execution. If this script runs under a user account that has Oracle dba
# privilege, it will be executed using this user's account.
# ---------------------------------------------------------------------------
# ---------------------------------------------------------------------------
# Determine the user which is executing this script.
# ---------------------------------------------------------------------------
CUSER=`id |cut -d"(" -f2 | cut -d "
" -f1`
# ---------------------------------------------------------------------------
# Put output in <this file name>;.out. Change as desired.
# Note: output directory requires write permission.
# ---------------------------------------------------------------------------
RMAN_LOG_FILE=${0}.out
# ---------------------------------------------------------------------------
# You may want to delete the output file so that backup information does
# not accumulate. If not, delete the following lines.
# ---------------------------------------------------------------------------
if [ -f "$RMAN_LOG_FILE" ]
then
rm -f "$RMAN_LOG_FILE"
fi
# -----------------------------------------------------------------
# Initialize the log file.
# -----------------------------------------------------------------
echo >;>; $RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE
# ---------------------------------------------------------------------------
# Log the start of this script.
# ---------------------------------------------------------------------------
echo Script $0 >;>; $RMAN_LOG_FILE
echo ==== started on `date` ==== >;>; $RMAN_LOG_FILE
echo >;>; $RMAN_LOG_FILE
# ---------------------------------------------------------------------------
# Replace /db/oracle/product/ora81, below, with the Oracle home path.
# ---------------------------------------------------------------------------
ORACLE_HOME=/oracle/app/oracle/product/8.1.7
export ORACLE_HOME
# ---------------------------------------------------------------------------
# Replace ora81, below, with the Oracle SID of the target database.
# ---------------------------------------------------------------------------
ORACLE_SID=ora81
export ORACLE_SID
# ---------------------------------------------------------------------------
# Replace ora81, below, with the Oracle DBA user id (account).
# ---------------------------------------------------------------------------
ORACLE_USER=oracle
# ---------------------------------------------------------------------------
# Set the target connect string.
# Replace "sys/manager", below, with the target connect string.
# ---------------------------------------------------------------------------
TARGET_CONNECT_STR=/
# ---------------------------------------------------------------------------
# Set the Oracle Recovery Manager name.
# ---------------------------------------------------------------------------
RMAN=$ORACLE_HOME/bin/rman
# ---------------------------------------------------------------------------
# Print out the value of the variables set by this script.
# ---------------------------------------------------------------------------
echo >;>; $RMAN_LOG_FILE
echo "RMAN: $RMAN" >;>; $RMAN_LOG_FILE
echo "ORACLE_SID: $ORACLE_SID" >;>; $RMAN_LOG_FILE
echo "ORACLE_USER: $ORACLE_USER" >;>; $RMAN_LOG_FILE
echo "ORACLE_HOME: $ORACLE_HOME" >;>; $RMAN_LOG_FILE
# ---------------------------------------------------------------------------
# Print out the value of the variables set by bphdb.
# ---------------------------------------------------------------------------
echo >;>; $RMAN_LOG_FILE
echo "NB_ORA_FULL: $NB_ORA_FULL" >;>; $RMAN_LOG_FILE
echo "NB_ORA_INCR: $NB_ORA_INCR" >;>; $RMAN_LOG_FILE
echo "NB_ORA_CINC: $NB_ORA_CINC" >;>; $RMAN_LOG_FILE
echo "NB_ORA_SERV: $NB_ORA_SERV" >;>; $RMAN_LOG_FILE
echo "NB_ORA_POLICY: $NB_ORA_POLICY" >;>; $RMAN_LOG_FILE
# ---------------------------------------------------------------------------
# NOTE: This script assumes that the database is properly opened. If desired,
# this would be the place to verify that.
# ---------------------------------------------------------------------------
echo >;>; $RMAN_LOG_FILE
# ---------------------------------------------------------------------------
# If this script is executed from a NetBackup schedule, NetBackup
# sets an NB_ORA environment variable based on the schedule type.
# The NB_ORA variable is then used to dynamically set BACKUP_TYPE
# For example, when:
# schedule type is BACKUP_TYPE is
# ---------------- --------------
# Automatic Full INCREMENTAL LEVEL=0
# Automatic Differential Incremental INCREMENTAL LEVEL=1
# Automatic Cumulative Incremental INCREMENTAL LEVEL=1 CUMULATIVE
#
# For user initiated backups, BACKUP_TYPE defaults to incremental
# level 0 (full). To change the default for a user initiated
# backup to incremental or incremental cumulative, uncomment
# one of the following two lines.
# BACKUP_TYPE="INCREMENTAL LEVEL=1"
# BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE"
#
# Note that we use incremental level 0 to specify full backups.
# That is because, although they are identical in content, only
# the incremental level 0 backup can have incremental backups of
# level >; 0 applied to it.
# ---------------------------------------------------------------------------
if [ "$NB_ORA_FULL" = "1" ]
then
echo "Full backup requested" >;>; $RMAN_LOG_FILE
BACKUP_TYPE="INCREMENTAL LEVEL=0"
elif [ "$NB_ORA_INCR" = "1" ]
then
echo "Differential incremental backup requested" >;>; $RMAN_LOG_FILE
BACKUP_TYPE="INCREMENTAL LEVEL=1"
elif [ "$NB_ORA_CINC" = "1" ]
then
echo "Cumulative incremental backup requested" >;>; $RMAN_LOG_FILE
BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE"
elif [ "$BACKUP_TYPE" = "" ]
then
echo "Default - Full backup requested" >;>; $RMAN_LOG_FILE
BACKUP_TYPE="INCREMENTAL LEVEL=0"
fi
# ---------------------------------------------------------------------------
# Call Recovery Manager to initiate the backup. This example does not use a
# Recovery Catalog. If you choose to use one, replace the option 'nocatalog'
# from the rman command line below with the
# 'rcvcat <userid>;/<passwd>;@<tns alias>;' statement.
#
# Note: Any environment variables needed at run time by RMAN
# must be set and exported within the switch user (su) command.
# ---------------------------------------------------------------------------
# Backs up the whole database. This backup is part of the incremental
# strategy (this means it can have incremental backups of levels >; 0
# applied to it).
#
# We do not need to explicitly request the control file to be included
# in this backup, as it is automatically included each time file 1 of
# the system tablespace is backed up (the inference: as it is a whole
# database backup, file 1 of the system tablespace will be backed up,
# hence the controlfile will also be included automatically).
#
# Typically, a level 0 backup would be done at least once a week.
#
# The scenario assumes:
# o you are backing your database up to two tape drives
# o you want each backup set to include a maximum of 5 files
# o you wish to include offline datafiles, and read-only tablespaces,
# in the backup
# o you want the backup to continue if any files are inaccessible.
# o you are not using a Recovery Catalog
# o you are explicitly backing up the control file. Since you are
# specifying nocatalog, the controlfile backup that occurs
# automatically as the result of backing up the system file is
# not sufficient; it will not contain records for the backup that
# is currently in progress.
# o you want to archive the current log, back up all the
# archive logs using two channels, putting a maximum of 20 logs
# in a backup set, and deleting them once the backup is complete.
#
# Note that the format string is constructed to guarantee uniqueness and
# to enhance NetBackup for Oracle backup and restore performance.
#
#
# NOTE WHEN USING TNS ALIAS: When connecting to a database
# using a TNS alias, you must use a send command or a parms operand to
# specify environment variables. In other words, when accessing a database
# through a listener, the environment variables set at the system level are not
# visible when RMAN is running. For more information on the environment
# variables, please refer to the NetBackup for Oracle Admin. Guide.
#
# ---------------------------------------------------------------------------
CMD_STR="
ORACLE_HOME=$ORACLE_HOME
export ORACLE_HOME
ORACLE_SID=$ORACLE_SID
export ORACLE_SID
$RMAN target $TARGET_CONNECT_STR nocatalog msglog $RMAN_LOG_FILE append << EOF
allocate channel for maintenance type disk;
change archivelog all validate;
release channel;
RUN {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
ALLOCATE CHANNEL ch02 TYPE 'SBT_TAPE';
ALLOCATE CHANNEL ch03 TYPE 'SBT_TAPE';
ALLOCATE CHANNEL ch04 TYPE 'SBT_TAPE';
BACKUP
$BACKUP_TYPE
SKIP INACCESSIBLE
TAG hot_db_bk_level0
FILESPERSET 7
# recommended format
FORMAT 'bk_%s_%p_%t'
DATABASE;
sql 'alter system archive log current';
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
RELEASE CHANNEL ch02;
RELEASE CHANNEL ch03;
RELEASE CHANNEL ch04;
# backup all archive logs
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
ALLOCATE CHANNEL ch02 TYPE 'SBT_TAPE';
BACKUP
filesperset 20
FORMAT 'al_%s_%p_%t'
ARCHIVELOG ALL DELETE INPUT;
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
RELEASE CHANNEL ch02;
#
# Note: During the process of backing up the database, RMAN also backs up the
# control file. This version of the control file does not contain the
# information about the current backup because "nocatalog" has been specified.
# Too include the information about the current backup, the control file should
# be backed up as the last step of the RMAN section. This step would not be
# necessary if we were using a recovery catalog.
#
ALLOCATE CHANNEL ch00 TYPE disk;
COPY
CURRENT CONTROLFILE to '/scripts/control.ora';
RELEASE CHANNEL ch00;}
EOF
"
# Initiate the command string
if [ "$CUSER" = "root" ]
then
su - $ORACLE_USER -c "$CMD_STR" >;>; $RMAN_LOG_FILE
RSTAT=$?
else
/usr/bin/sh -c "$CMD_STR" >;>; $RMAN_LOG_FILE
RSTAT=$?
fi
# ---------------------------------------------------------------------------
# Log the completion of this script.
# ---------------------------------------------------------------------------
if [ "$RSTAT" = "0" ]
then
LOGMSG="ended successfully"
/usr/openv/netbackup/bin/bpbackup -p oracle_control_file -s user -t 0 /scripts/control.ora
else
LOGMSG="ended in error"
fi
echo >;>; $RMAN_LOG_FILE
echo Script $0 >;>; $RMAN_LOG_FILE
echo ==== $LOGMSG on `date` ==== >;>; $RMAN_LOG_FILE
echo >;>; $RMAN_LOG_FILE
exit $RSTAT




