Linux下expdp备份oracle全库脚本,expdb_backup.sh
1、首先创建dumpfile文件存放路径:
mkdir /app/scripts/ && chown -R oracle:oinstall /app/scripts #存档expdb_backup.sh脚本位置
mkdir /backup && chown -R oracle:oinstall /backup #存放oracle dmp文件目录
2、sqlplus登录数据库,设置expdp备份路径:
sqlplus "/as sysdba"
创建备份目录:
SQL> create directory backup as '/backup';
授予备份用户权限,这里设置的是system这个用户:
SQL> grant read,write on directory backup to system;
3、脚本解读
#!/bin/bash
/usr/bin/find /backup -mtime +7 -exec rm -rf {} ; #删除/backup目录中7天以前的文件,可自行修改
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$PATH:$ORACLE_HOME/bin
export name=date -d now +%F
$ORACLE_HOME/bin/expdp system/sys directory=backup dumpfile=$ORACLE_SID_$name.expdp full=Y logfile=$ORACLE_SID_$name.expdp.log EXCLUDE=STATISTICS
上面使用了EXCLUDE=STATISTICS参数,优化导出速度,导入后要收集下统计信息
exec dbms_stats.gather_schema_stats(ownname => 'USER',options => 'GATHER AUTO');
如果是11g导出然后导入到10g,在源库导出时需要加上version参数,不然导入会报错ORA-39142
4、给脚本执行权限:
oracle$ chmod +x /app/scripts/expdb_backup.sh
5、添加cron自动执行任务,cron任务参数可以自行百度下。
oracle$ crontab -e
0 1 * * * /app/scripts/expdb_backup.sh >> /app/logs/expdb_backup_logs.log 2>&1
本文介绍了在Linux环境下使用expdp工具备份Oracle数据库的详细步骤,包括创建目录、设置环境变量、编写脚本、权限分配、以及设置cron定时任务。还提到如何处理版本兼容问题和优化导出速度。

867

被折叠的 条评论
为什么被折叠?



