oracle自动备份

冷暖自知 提交于 2020-03-17 01:38:01

本文章详细介绍备份过程中遇到的坑。

导出:
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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!