测试环境: linux2.69+oracle 10.2.0+veritas 5.1
node1: 备份服务器( master server
node2: 数据库服务器( client server
node3: 测试服务器( client server)
测试目标:
配置备份环境,并将有效数据库备份恢复到测试服务器上
. master 上安装 netback 软件
#./install
VERITAS Installation Script
Copyright 1993 - 2004 VERITAS Software Corporation, All Rights Reserved.
Installation Options
1 NetBackup
2 NetBackup Client Software
q To quit from this script
Choose an option [default: q]: 1
根据提示选择安装
. client 上安装 netbackup client 软件
#./install
VERITAS Installation Script
Copyright 1993 - 2004 VERITAS Software Corporation, All Rights Reserved.
Installation Options
1 NetBackup
2 NetBackup Client Software
q To quit from this script
Choose an option [default: q]: 2
根据提示选择安装
. client 上安装 oracle 10g
1)安装其他所需程序包的版本(或更高版本):
? gcc-2.96-124
? make-3.79
? binutils-2.11
? openmotif-2.1.30-11
? glibc-2.2.4-31
要查看系统上安装了这些程序包的哪些版本,运行以下命令:
rpm -q gcc make binutils openmotif glibc
程序包安装,运行如下命令:
rpm -ivh *.rpm
2)配置 Linux 内核参数
打开/etc/sysctl.conf,添加以下参数:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
保存后退出。
然后使参数生效使用以下命令:
# /sbin/sysctl -p
3)创建用户和用户组
#/usr/sbin/groupadd oinstall
#/usr/sbin/groupadd dba
#usr/sbin/useradd -g oinstall -G dba oracle
#passwd oracle
4)为 oracle 用户设置 Shell 限制
Oracle 建议对每个 Linux 帐户可以使用的进程数和打开的文件数设置限制。要进行这些更改,以 root 用户的身份执行下列命令:
打开 /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
保存后退出。
添加如下的行到/etc/pam.d/login 文件:
session required /lib/security/pam_limits.so
保存后退出。
编辑 /etc/profile 文件,添加如下部分:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
保存后退出。
5)配置.bash_profile文件
unset USERNAME
umask 022
ORACLE_BASE=/oracle
ORACLE_HOME=$ORALCE_BASE/product/10.2.0/db_1;
ORALCE_SID=rac1;
LD_ASSUME_KERNEL=2.4.19;
PATH=$ORALCE_HOME/bin:/usr/bin:/usr/sbin:
export ORACLE_BASE ORACLE_HOME ORALCE_SID PATH LD_ASSUME_KERNEL
6)安装oracle
#xhost +
#su - oracle
#export DISPALY=:0.0 /解决can't connect to x11 window server问题
#cd /mnt/hgfs/cluster/clusterware
#./runInstaller
7)打开数据库,启动归档,简单配置rman,并创建测试表空间和数据
#sqlplus "/as sysdba"
SQL>shutdown immediate
SQL>startup mount
SQL>alter database archivelog;
SQL>alter database open
SQL>archive log list
SQL>show parameter archive
SQL>alter system archive log current;
SQL>select name from v$archived_log;
SQL>create tablespace test datafile '/oradata/orcl/test01.dbf' size 10M autoextend on extent management local;
SQL>create user shl identified by shl default tablespace test quota 5M on test temporary tablespace temp;
SQL>conn shl/shl
SQL>create table t1(no number);
SQL>insert into table values(1);
SQL>commit;
#rman target /
RMAN>configure controlfile autobackup on;
. client 端安装 for oracle agent 软件
安装完client soft后需要安装for oracle的agent,否则执行备份时会出现报错:
ORA-19554: error allocating device, device type: SBT_TAPE, device name:
ORA-27211: Failed to load Media Management Library
安装agent软件需要停止数据库
#tar -xvf /tmp/NB_ORA_51_1_M.linux.2.4.tar /tmp/nb_ora_linux
#cd /tmp/nb_ora_linux
#./Vrts_pack.install
安装提示选择安装
运行oracle_link,在oracle用户下完成
#su - oracle
$/usr/openv/netbackup/bin/oracle_link
. 配置 master server
1)创建storage_unit
因为环境有限,所以在master端添加一块4GB硬盘,通过硬盘备份
1.创建虚拟硬盘(windows下)
在虚拟机软件的安装目录下,有个vmware-vdiskmanager.exe文件(老版本用plainmaker.exe),把它复制到vm目录下,创建共享磁盘(老版本共享磁盘文件的扩展名为.pln)
C:\>cd D:\vm
D:\>vmware-vdiskmanager.exe -c -s 4Gb -a lsilogic -t 2 disk.vmdk
创建完毕后,目录下有四个新文件
disk-flat.vmdk
disk.vmdk
sharedisk-flat.vmdk
sharedisk.vmdk
2.添加虚拟硬盘到虚拟机
在虚拟机器界面选择“Edit virtual machine settings”à添加硬盘,选“Use a existing virtual disk”,分别添加disk.vmdk、sharedisk.vmdk
LINUX下Oracle for NBU实验手册_第1张图片
双击新加的磁盘,在弹出的磁盘属性窗选“advance”,为新加的硬盘选择虚拟设备节点:disk.vmdk选订“SCSI 1:1”。如图所示:
LINUX下Oracle for NBU实验手册_第2张图片
分别打开虚拟机目录中的vmx文件,在最后一行添加:
disk.locking="FALSE"
scsi1:1.SharedBus="Virtual"
3.创建备份目录
#fdisk -l //查看分区
#mkfs -t ext3 /dev/sdb //格式化分区
#mkdir /backup //创建文件系统
#chmod 660 /backup //属性设置
#mount /dev/sdb /backup //装载文件系统
#vi /etc/fstab //修改/etc/fstab文件,开机自动mount文件系统
/dev/sdb /oradata ext3 defaults 0 0
4.创建unit_disk作为备份单位
打开administration console
#/usr/openv/netbackup/bin/jnbSA
点击左侧NetBackup Management下Storage Units-->右键选择new-->add a new storage unit.如下图所示:
LINUX下Oracle for NBU实验手册_第3张图片
2)配置catalog目录,存放NetBackup 备份和配置的信息
点击左侧NetBackup Management下Catalog-->右键选择configure netbackup catalog backup-->设置attibutes。如下图所示:
LINUX下Oracle for NBU实验手册_第4张图片
-->设置Schdule-->选择after each session of scheduled,user,or manual backups
3)配置备份策略
创建一个oracle策略,用于数据库备份。创建一个orcl_control策略,用户控制文件归档。
1.创建oracle策略
点击左侧NetBackup Management下Policies-->new-->设置attibutes。如下图所示:
LINUX下Oracle for NBU实验手册_第5张图片
-->设置schedules->创建full_schedule。(测试原因,备份都由手工发起,所以未设置备份时间)如下图所示:
LINUX下Oracle for NBU实验手册_第6张图片
-->设置backup selecttions-->添加调用client端的脚本。如下图所示:
LINUX下Oracle for NBU实验手册_第7张图片
-->设置clients-->添加客户端。如下图所示:
如下图所示:
LINUX下Oracle for NBU实验手册_第8张图片
2.创建orcl_control策略,该策略由脚本命令发起。命令存在rman脚本中,当全备完成后,通过bparchive发起归档。
点击左侧NetBackup Management下Policies-->new-->设置attibutes-->选择policy type为Standed,选择policy storage unit为disk_unit.
-->设置schedules->创建arhive-->选择type of backup为user archive,其中在start window里选择备份时间为周一到周七,0时到0时,全天归档(等待归档发起)。
-->设置clients-->添加node2为客户端
4)配置rman脚本
1.通过配置向导创建备份模板,通过公用程序bpdbsbora从模板生成shell脚本
2.手工创建shell脚本
脚本oracle_full.sh如下,测试可用
#!/bin/sh
CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1`
#------------------------------------------
#Initialize the log file.
#------------------------------------------
RMAN_LOG_FILE=/usr/openv/scripts/backup.out
if [ -f "$RMAN_LOG_FILE" ]
then
rm -f "$RMAN_LOG_FILE"
fi
echo >>$RMAN_LOG_FILE
chmod 777 $RMAN_LOG_FILE
echo Script $0 >> $RMAN_LOG_FILE
echo ==== started on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
#------------------------------------------
#export ORACLE PARAMETER
#------------------------------------------
ORACLE_HOME=/u01/oracle/product/10.2.0/db_1
export ORACLE_HOME
ORACLE_SID=orcl
export ORACLE_SID
ORACLE_USER=oracle
RMAN=/u01/oracle/product/10.2.0/db_1/bin/rman
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
#------------------------------------------
#RMAN script
#------------------------------------------
echo >> $RMAN_LOG_FILE
CMD="
export ORACLE_SID
export ORACLE_HOME
$RMAN target sys/system nocatalog msglog $RMAN_LOG_FILE << EOF
RUN {
#backup datafiles
allocate channel ch00 type 'SBT_TAPE';
backup filesperset 10
format 'bk_%U'
database;
sql 'alter system archive log current';
release channel ch00;
#backup all archive logs
change archivelog all crosscheck;
allocate channel ch01 type 'SBT_TAPE';
backup filesperset 10
format 'archive_%U'
archivelog all delete input;
release channel ch01;
#copy current controlfile
allocate channel ch02 type disk;
copy current controlfile to '/usr/openv/control/control_orcl.ctl';
release channel ch02;
}
EOF
"
#----------------------------------
#execute rman script
#----------------------------------
if [ "$CUSER" = "root" ]
then
su - $ORACLE_USER -c "$CMD" >> $RMAN_LOG_FILE
RSTAT=$?
else
/usr/bin/sh -c "$CMD" >> $RMAN_LOG_FILE
RSTAT=$?
fi
#-----------------------------------
#arhive the controlfile
#-----------------------------------
/usr/openv/netbackup/bin/bparchive -p orcl_control /usr/openv/control/control_orcl.ctl
#-----------------------------------
#end of the script
#-----------------------------------
if [ "$RSTAT" = "0" ]
then
LOGMSG="ended successfully"
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
. 恢复数据库
1)配置测试服务器(这里偷懒,直接拷贝了node2系统后更改主机名,删除数据库)
要求:
1.测试服务器上操作系统版本,数据库版本与原环境一致
2.修改oracle用户的.profile文件中相关的Oracle环境变量,要求环境变量与原来一致。
3.创建一个数据库,要求参数设置与原来一致,将pfile文件从数据库服务器node2上拷贝到测试服务器node3上。这里拷贝到/u01目录下,并修改参数环境,并按照pfile创建所需目录,目录属主关系与原环境保持一致。
#vi /u01/orcl.ora
control_files=("/usr/openv/control/control_peop.ctl") //控制文件还原的路径
5.安装veritas client软件和agent软件,并运行oracle_link
6.在master端创建 No.Restrictions文件,允许所有客户重定向恢复
#touch /usr/openv/netbackup/db/altnames/No.Restrictions
2)还原控制文件
在master端登陆administration console执行还原
1.选择backup,archive,and restore
2.选择右上角的 clip_p_w_picpath018出现以下界面,选择Source client,将node2设置为CURRENT.选择Destination client,将node3设置为CURRENT.
3.Restore Type选择为Archived Backups clip_p_w_picpath020.
4.点击 clip_p_w_picpath022设置搜索时间区间,点击 clip_p_w_picpath024搜索备份内容.如下图所示:
LINUX下Oracle for NBU实验手册_第9张图片
5.选择control_gamis.ctl,点击 clip_p_w_picpath028出现恢复设置界面.
6.点击Start Restore开始恢复。
3)还原数据库
1.装载数据库
#su - oracle
$sqlplus "/as sysdba"
SQL>startup mount pfile='/u01/orcl.ora';
2.还原数据文件
#su - oracle
$rman target /
RMAN>run{
2>allocate channel ch00 type 'sbt_tape' parms="ENV=(NB_ORA_CLIENT=node2)";
3>restore database;
4>recover database;
5>release channel ch00;}
3.恢复数据库
$sqlplus "/as sysdba"
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;