需求:AIX 5.3,Veritas Netbackup 6.5,ECC 6,需要配合使用完成备份。
安装Veritas Client和Veritas for SAP Agent,这个步骤比较简单,就是解包然后运行install,按几个回车就搞定了。
配置Veritas
#cd /usr/openv/netbackup
#mkdir scripts
#cd scripts
#cp /usr/openv/netbackup/db_ext/sap/scripts/sap_oracle/sap*_backup .
#chmod 755 *
修改各个脚本,把里面的su - orasap -c '$CMD_LINE'中的orasap改为ora<sid>
#cp /usr/openv/netbackup/ext/db_ext/sap/scripts/sap_oracle/initSAP.utl /
$ORACLE_HOME/dbs/initSAP.utl
#cp /usr/openv/netbackup/ext/db_ext/sap/scripts/sap_oracle/initSAP.sap /
$ORACLE_HOME/dbs/initSAP.sap
#ln -s /usr/openv/netbackup/bin/libsapora.a64 $ORACLE_HOME/lib/libobk.a
#ln -s /usr/openv/netbackup/bin/backint /usr/sap/<SID>/SYS/exe/run/backint
#su - ora<sid>
>cd 102_64/dbs
>cp init<SID>.sap init<SID>.sap.bak
>cp initSAP.sap init<SID>.sap
>cp initSAP.util init<SID>.utl
修改init<SID>.sap
backup_dev_type = util_file
util_par_file = $ORACLE_HOME/dbs/init<SID>.utl
rman_parms = "ENV=(NB_ORA_SAP=$ORACLE_HOME/dbs/init<SID>.utl)"
修改init<SID>.utl,这里只是一个例子,具体视情况而定
policy sap_policy_1
schedule Default-Application-Backup
client <the sap host name>
server <the NetBackup server name>
drivers 2
switch_list /oracle/<SID>sapbackup/.switch.lis
switch_sem /oracle/<SID>/sapbackp/.switch.sem
switch_log /oracle/sap/sapbackup/.switch.log
到NetBackup服务器端的图形界面里,指定一个备份策略,分别针对离线(offline),在线(online)和单独的归档日志(archived redo log)备份,调用的脚本分别是
/usr/openv/netbackup/scripts/sap_offline_backup
/usr/openv/netbackup/scripts/sap_online_backup
/usr/openv/netbackup/scripts/sap_redo_log_backup
然后从上面发起备份动作
第一把测试的是归档日志备份,一切顺利
第二把测试的是离线备份,也顺利
第三把测试的是在线备份,失败,报一个错误
cp: A system call received a parameter that is not valid
开始以为是权限问题,换成root来操作cp /oracle/<SID>/sapdata1/sr3_1/sr3.data1 /temp错误依旧。后来查了notes,发现是AIX增强文件系统JSF2的问题。SAP的解释大概是这样的:
从Oracle 10g开始,JFS2的高级I/O能力默认的会被数据库使用,如果JSF2文件系统被数据库检测到有使用,所有的数据文件都会使用CIO(Concurrent IO,并发IO)选项。CIO可以绕开AIX操作的文件缓存,为数据库提供更好的I/O性能。
如果数据文件被Oracle采用CIO的方式来打开,所有通过正常文件缓存来访问这些数据文件的方式都将被AIX操作系统禁止。诸如cp,dd,cpio,tar和dbv之类的工具,不能通过CIO选项来打开文件。所以这些工具如果想访问这些文件时将会报错。
SAP建议要么把这些数据文件所在的文件系统添加CIO选项(可以通过smitty来调整,或者这样挂mount -o cio xxx),要么就换支持CIO的backint程序,要么就采用RMAN的方式来进行备份。同时要特别注意的是,千万不要把$ORACLE_HOME和log file所有的文件系统加上cio这个选项。
我只给oracle分了一个文件系统,就挂在/oracle下,102_64也在这个文件系统里,如果把这个文件系统添加 cio选项,会根本就连不进数据库的。
所以,我选择了使用rman的文件
>brbackup -d rman_util -t online -m all -c force
成功。这边又要求能同时开两个通道来进行备份,以提高备份速度。于是修改init<SID>.sap文件,
增加一行
rman_channels = 2
再试,果然是双通道进行备份。
再接下来进行恢复测试,问题来了,总是失败,而且每次总在恢复sr3_10下的sr3.data10这个文件时报错,报的错是File or path does not exist什么的,再追到Veritas的日志,发现其实是因为这个错误
A file cannot be larger than the value set by ulimit
才记起来前面想解决那个在线备份的问题时,曾参考了SAP的安装文档,把root用户的soft size和hard size调整过,于是把这两个值修改回-1,重启后尝试恢复,终于一切正常。