当前位置:文档之家› Linux下Oracle 11g数据库全库自动备份(EXPDP)

Linux下Oracle 11g数据库全库自动备份(EXPDP)

使用EXPDP方式备份整个实例
本教程可使用system账户将整个实例备份(包含空表),并自动删除超过6天的历史数据。

1、r oot用户登录服务器
mkdir -p /backup/oracledata #新建Oracle数据库备份目录chown -R oracle:oinstall /backup/oracledata -R #设置目录权限为oinstall用户组的
oracle用户(用户oracle与用户组oinstall是在安装
Oracle数据库时设置的)
2、创建目录对象
因为使用expdp命令需要使用到目录对象(directory),所以首先需要创建目录对象,并赋予某个用户对目录对象的操作权限。

操作步骤如下:
su – oracle #切换到oracle用户
sqlplus / as sysdba #切换到SQLPLUS环境
执行以下命令:
create directory expdp_bak_dir as '/backup/oracledata'; #指定EXPDP输出目录grant create any directory to system; #授予system权限3、编辑自动备份脚本
vi /backup/oracledata/ordatabak.sh #新建文件,输入以下代码
#/bin/sh
export ORACLE_SID=shuwei
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export NLS_LANG=american_america.zhs16gbk
export DATA_DIR=/backup/oracledata
now=` date +%Y%m%d%H%M%S `
dmpfile=db$now.dmp
echo start exp $dmpfile ...
/u01/app/oracle/product/11.2.0/dbhome_1/bin/expdp system/123456@shuwei DUMPFILE=$dmpfile DIRECTORY=expdp_bak_dir full=y
echo "Delete the file bakup before 6 days..."
find /backup/oracledata/ -mtime +6 -name "*.dmp" -exec rm -rf '{}' \;
echo "Delete the file bakup successfully. "
echo "Bakup completed."
chmod +x /backup/oracledata/ordatabak.sh#添加脚本执行权限
4、设置系统自动定时执行备份脚本
vi /etc/crontab #编辑系统任务计划
将下面的代码写入最后一行:
30 2 * * * oracle /backup/oracledata/ordatabak.sh
#每天凌晨2点30分,以oracle用户执行ordatabak.sh备份文件
:wq #保存退出
service crond restart #重启系统计划服务
即每天凌晨2点30分进行备份,如需每天备份多次,可设置不同时间段备份:例如:* 3,13,18 * * * oracle /backup/oracledata/ordatabak.sh
即每天3点、13点、18点进行备份。

说明:文件备份目录,用户oracle必须有更改权限,否则无法备份。

相关主题