因为需要最近写了一个适用于Oracle上的备份脚本,Oracle的数据备份不像MySQL一样直接使用二进制工具就可以备份,在Oracle上进行数据备份需要 做好相应的配置,在配置好后才能进行正常的数据备份脚本,所以在Oracle备份数据前需要做一些配置。
首先,因为Oracle的11g开始的特性,空表不会分配表空间所以在备份脚本中我使用了expdp工具来进行数据备份,在备份开始之前需要先把Oracle的数据泵导出目录用DBA账户先做好指定并且授权读写,再修改目录的属组,操作很简单,就是一些expdp数据泵的操作,这个以前有说明过,在这里就不做篇幅做说明了,可以参看: http://www.linuxidc.com/Linux/2017-07/145356.htm,在设置好dpdata1目录后,还需要修改dpdata1目录的属组这点很重要,不然使用expdp导出的数据文件无法写入,具体根据当时安装Oracle时定义的属组修改权限
[root@localhost~]
#chownoracle:oinstall/data/backup/oracle_backup
在修改完以上的步骤后,再把Oracle用户下的bash_profile配置文件中在安装时定义好的环境变量拷贝到脚本中,在定义好脚本的执行时间就可以了,脚本的实现比较简单,如下:
#!/bin/bash
#oracle_backup.shversion1.0chmod700
#writerjim
#0000***/usr/local/scripts/oracle_backup.sh
#chmod700/usr/local/scripts/oracle_backup.sh
#YoumustfirstimporttheenvironmentvariablesintheOracleuser'sbash_profilefile
#MustbeusedtodefinetheDBAaccountfirstdpdata1pathandauthorizeddirectorytoreadandwrite,modifythedpdata1group
#history
#2017.07.01
export
ORACLE_BASE=
/usr/local/u01/oracle
export
ORACLE_HOME=
/usr/local/u01/oracle/product/11
.2.0
/dbhome_1
export
ORACLE_SID=oracle11
export
NLS_LANG=
"american_america.ZHS16GBK"
export
NLS_DATE_FORMAT=
"YYYY-MM-DDHH24:Mi:SS"
export
LD_LIBRARY_PATH=$ORACLE_HOME
/lib
export
PATH=$ORACLE_HOME
/bin
:$PATH
datetime=$(
date
+
"%Y%m%d"
)
dpdata1_dir=
"/data/backup/oracle_backup"
oracle_u01=
"u01"
oracle_u02=
"u02"
oracle_password1=
"u01_password"
oracle_password2=
"u02_password"
expdp${oracle_u01}/${oracle_password1}directory=dpdata1dumpfile=${oracle_u01}_${datetime}logfile=${oracle_u01}_${datetime}.log
if
[$?-
ne
0];
then
echo
"$(date+"
%Y-%m-%d_%H:%M:%S
")oracle_${oracle_u01}_backup_file!"
>${dpdata1_dir}/${datetime}_err.log
fi
expdp${oracle_u02}/${oracle_password2}directory=dpdata1dumpfile=${oracle_u02}_${datetime}logfile=${oracle_u02}_${datetime}.log
if
[$?-
ne
0];
then
echo
"$(date+"
%Y-%m-%d_%H:%M:%S
")oracle_${oracle_u02}_backup_file!"
>>${dpdata1_dir}/${datetime}_err.log
fi
/usr/bin/bzip2
-z${dpdata1_dir}/*${datetime}*
find
$dpdata1_dir-
type
f-ctime+30-name
"*.bz2"
-
exec
rm
-vf{};
当然,也可以把失败的地方换成写好的发邮件的function,在失败的时候发一封邮件也可以。
:http://www.linuxidc.com/Linux/2017-07/145355.htm