本文章详细介绍备份过程中遇到的坑。
导出:
expdp vids/vids123@orclvids directory=dpdata dumpfile=db20200311214001.dmp logfile=20200311214001.log
删除线部分非必须,可以不要
导出常见错误:
连接到: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
ORA-39002: 操作无效
ORA-39070: 无法打开日志文件。
ORA-29283: 文件操作无效
ORA-06512: 在 "SYS.UTL_FILE", line 536
ORA-29283: 文件操作无效
错误原因:目录授权问题,如果备份目录是自定义目录,必须拥有oracle用户的权限和权限组。这种情况在root和oracle用户混用的情况下比较常见
解决:
#备份目录查询(目录拥有者都在sys下,需要对expdp导出用户进行授权)
select * from dba_directories;
#创建并授权
create directory dpdata as '/data/backup/';
grant create any directory to vids;
导入:impdp vids/vids123@xe directory=dpdata dumpfile=db20200311214001.dmp logfile=20200311214001.log
备份脚本,每日定时
chmod +x oracle_back.sh
11 14 * * * /data/oracle_back.sh
自动备份脚本:
echo -e '******Start********'$(date '+%Y%m%d%H%M%S')>>/data/blog.txt #日志打印
export ORACLE_BASE=/u01/app/oracle #oracle安装目录
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe #数据库实体名称,有些系统这个位置不同名
export ORACLE_SID=XE
export PATH=$ORACLE_HOME/bin:$PATH
rq='db'$(date '+%Y%m%d')'214001' #动态编写时间
orq='db'$(date -d'2 day ago' +'%Y%m%d')'214001' #当前时间减去2天
echo -e $rq $orq>>/data/blog.txt
expdp vids/vids123@XE dumpfile=$rq.dmp log=$rq.log directory=dpdata #导出数据库文件
zip -m /data/backup/$rq.zip /data/backup/$rq.dmp /data/backup/$rq.log #压缩文件zip
find /data/backup -name $orq.zip |xargs rm -rf #压删除最近2天之外的数据
echo -e '******End**********'$(date '+%Y%m%d%H%M%S')>>/data/blog.txt
其中如果是10g的话expdp参数有变化,可调整为下边示例
expdp vids/vids123 directory=dpdata dumpfile=db20200311214001.dmp
来源:51CTO
作者:xuanxiangyu
链接:https://blog.51cto.com/xuanxy/2477274