Windows

相关: oracle bat脚本

功能:

  1. 每天定时备份oracle
  2. 定时清理7天前的备份文件

实现:
win服务器的任务和计划程序+bat脚本

  1. @echo off
  2. set backupfile=backup_%date:~0,4%-%date:~5,2%-%date:~8,2%
  3. set logfile=backup_%date:~0,4%-%date:~5,2%-%date:~8,2%
  4. set dir=DUMP_DIR
  5. expdp gjptqt/gjptqt@127.0.0.1/orcl directory=%dir% dumpfile=%backupfile%.dmp logfile=%logfile%.log
  6. forfiles /p "D:\OracleBackup" /s /m *.dmp /d -7 /c "cmd /c del @file"

添加定时任务,选择脚本即可
image.png

Linux

相关: shell crontab expdp
准备:ssh连接工具,用户名密码,oracle安装路径,Oracle需要备份的用户名密码

  1. # step0: 切换到oracle用户
  2. $ su - oracle
  3. # step1:新建sh脚本,或者直接复制脚本文件
  4. $ vim orcl_backup.sh
  5. ## 如果是通过shell客户端复制的脚本文件,需要赋予权限
  6. $ chmod 777 ocl_backup.sh
  7. # step2: 运行shell脚本测试
  8. $ sh orcl_backup.sh
  9. # step3: 添加Linux定时任务
  10. $ crontab -e
  11. ## vim 编辑定时任务
  12. ## 表示每天凌晨1点执行sh脚本,并把日志输出到指定目录
  13. 0 1 * * * /home/oracle/orcl_backup.sh > /tmp/expdp.log 2>&1
  14. # step4: 查看定时任务
  15. $ crontab -l
  1. #! /bin/sh
  2. # ################################################
  3. # # Designed By Paradise #
  4. # ################################################
  5. # Oracle environment settings
  6. ORACLE_BASE=/oracle; export ORACLE_BASE
  7. ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
  8. PATH=$ORACLE_HOME/bin:usr/local/bin:$PATH:/usr/sbin; export PATH
  9. CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/product/jlib; export CLASSPATH
  10. # default backup_dir
  11. backup_dir=$ORACLE_HOME/rdbms/log
  12. DMP_FILE=gjpt_backup_$(date +%Y%m%d).dmp
  13. LOG_FILE=gjpt_backup_$(date +%Y%m%d%H%M).log
  14. # start expdp
  15. echo 'start expdp'
  16. # use default backup_dir
  17. expdp gjptqt/gjptqt@orcl schemas=gjptqt dumpfile=$DMP_FILE logfile=$LOG_FILE;
  18. cd $backup_dir
  19. find $backup_dir -mtime +7 -name "gjpt_backup_*" -exec rm -f {} \;

延伸: 了解下 expdp的详细参数,支持更多自定义功能以及性能优化

Q: 修改脚本文件,自定义备份文件路径

通过控制台 sqlplus 连接数据库

sqlplus sys/sys@127.0.0.1/orcl as sysdba
SQL> create or replace directory DUMP_DIR as ‘D:\OracleBackup’;

然后修改脚本中的 dir 变量即可~

如果缺少上面的操作可能会导致如下的错误:
ORA-39087:目录名*无效
image.png