Windows
相关: oracle bat脚本
功能:
- 每天定时备份oracle
- 定时清理7天前的备份文件
实现:
win服务器的任务和计划程序+bat脚本
@echo offset backupfile=backup_%date:~0,4%-%date:~5,2%-%date:~8,2%set logfile=backup_%date:~0,4%-%date:~5,2%-%date:~8,2%set dir=DUMP_DIRexpdp gjptqt/gjptqt@127.0.0.1/orcl directory=%dir% dumpfile=%backupfile%.dmp logfile=%logfile%.logforfiles /p "D:\OracleBackup" /s /m *.dmp /d -7 /c "cmd /c del @file"
添加定时任务,选择脚本即可
Linux
相关: shell crontab expdp
准备:ssh连接工具,用户名密码,oracle安装路径,Oracle需要备份的用户名密码
# step0: 切换到oracle用户$ su - oracle# step1:新建sh脚本,或者直接复制脚本文件$ vim orcl_backup.sh## 如果是通过shell客户端复制的脚本文件,需要赋予权限$ chmod 777 ocl_backup.sh# step2: 运行shell脚本测试$ sh orcl_backup.sh# step3: 添加Linux定时任务$ crontab -e## vim 编辑定时任务## 表示每天凌晨1点执行sh脚本,并把日志输出到指定目录0 1 * * * /home/oracle/orcl_backup.sh > /tmp/expdp.log 2>&1# step4: 查看定时任务$ crontab -l
#! /bin/sh# ################################################# # Designed By Paradise ## ################################################# Oracle environment settingsORACLE_BASE=/oracle; export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOMEPATH=$ORACLE_HOME/bin:usr/local/bin:$PATH:/usr/sbin; export PATHCLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/product/jlib; export CLASSPATH# default backup_dirbackup_dir=$ORACLE_HOME/rdbms/logDMP_FILE=gjpt_backup_$(date +%Y%m%d).dmpLOG_FILE=gjpt_backup_$(date +%Y%m%d%H%M).log# start expdpecho 'start expdp'# use default backup_direxpdp gjptqt/gjptqt@orcl schemas=gjptqt dumpfile=$DMP_FILE logfile=$LOG_FILE;cd $backup_dirfind $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:目录名*无效
