2026-04-28 08:34:41
Oracle数据库在Windows和Linux环境下的自动备份方案如下,其中Linux方案已提供详细手册,Windows方案需结合脚本工具实现:
一、Linux环境自动备份方案(基于exp工具)适用场景:数据量小于1TB的Oracle 10g/11g数据库,已验证支持RedHat 5.x/6.x、CentOS 6.x等64位系统。
1. 系统配置要求root用户:超级权限,密码root123(示例,生产环境需修改)
oracle用户:属于oinstall组和dba组,数据库登录密码为orcl
(1)创建备份目录
su - oracledf -hl # 确认/home分区空间充足mkdir -p /home/oracle/backup(2)编写备份脚本
vi /home/oracle/backup.sh脚本内容(需根据实际调整红色部分):
#!/bin/shexport LANG="en_US.UTF-8"export NLS_LANG="Simplified Chinese_china.ZHS16GBK"export ORACLE_BASE=/usr/local/oracle/export ORACLE_HOME=/usr/local/oracle/product/1120export ORACLE_SID=orclexport PATH=$PATH:$HOME/bin:$ORACLE_HOME/binbackuptime=$(date +"%Y%m%d%H")deletetime=$(date -d "1 month ago" +"%Y%m%d%H")# 删除1个月前的备份文件rm -f /home/oracle/backup/orcl_${deletetime}.dmprm -f /home/oracle/backup/orcl_${deletetime}.log# 执行全量导出备份exp count/count@orcl file=/home/oracle/backup/orcl_${backuptime}.dmp log=/home/oracle/backup/orcl_${backuptime}.log full=y关键参数说明:
(3)设置脚本权限
chmod +x /home/oracle/backup.sh(4)测试脚本执行
/home/oracle/backup.sh(5)配置定时任务
vi /etc/crontab添加以下内容(示例为每天17:10执行):
10 17 * * * oracle /home/oracle/backup.sh时间表达式说明:
数据量增长快时,建议缩短备份间隔(如每12小时一次)
保留周期可根据业务需求调整(脚本中为1个月)
推荐工具:Oracle Data Pump(expdp/impdp)或第三方工具(如PL/SQL Developer的导出功能)
1. 使用expdp工具的批处理脚本(1)创建备份目录
mkdir D:oracle_backup(2)编写批处理脚本
:: backup.bat@echo offset ORACLE_HOME=C:apporacleproduct11.2.0dbhome_1set PATH=%ORACLE_HOME%bin;%PATH%set NLS_LANG=AMERICAN_AMERICA.AL32UTF8set backup_time=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%set backup_time=%backup_time: =0% :: 处理时间中的空格expdp count/count@orcl schemas=COUNT directory=DATA_PUMP_DIR dumpfile=COUNT_%backup_time%.dmp logfile=COUNT_%backup_time%.log full=y:: 删除7天前的备份(需配置Windows任务计划)forfiles /p "D:oracle_backup" /m *.dmp /d -7 /c "cmd /c del @path"forfiles /p "D:oracle_backup" /m *.log /d -7 /c "cmd /c del @path"(3)配置Windows任务计划
Linux方案中的exp工具已较旧,新版本建议使用RMAN
Windows方案中的expdp需要Oracle 10g及以上版本支持
附:Linux定时任务配置示例图
如需完整脚本文件,可通过提供的百度网盘链接下载(提取码:fily),其中包含Linux和Windows双平台版本。实际部署前请务必在测试环境验证备份文件的可恢复性。