共计 2227 个字符,预计需要花费 6 分钟才能阅读完成。
因为需要最近写了一个适用于 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 ~]
# chown oracle:oinstall /data/backup/oracle_backup
在修改完以上的步骤后,再把 Oracle 用户下的 bash_profile 配置文件中在安装时定义好的环境变量拷贝到脚本中,在定义好脚本的执行时间就可以了,脚本的实现比较简单,如下:
#!/bin/bash
#oracle_backup.sh version1.0 chmod 700
#writer jim
#00 00 * * * /usr/local/scripts/oracle_backup.sh
#chmod 700 /usr/local/scripts/oracle_backup.sh
#You must first import the environment variables in the Oracle user's bash_profile file
#Must be used to define the DBA account first dpdata1 path and authorized directory to read and write, modify the dpdata1 group
#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-DD HH24: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=dpdata1 dumpfile=${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=dpdata1 dumpfile=${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,在失败的时候发一封邮件也可以。
更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-07/145355.htm