Oracle 数据库自动备份 | Windows 和 Linux
2026-06-12
Oracle 数据库是当今全球使用最广泛的数据库之一。凭借其强大的功能、稳定性和安全性,它已被广泛应用于众多领域。对于数据库管理员(DBA)而言,保障数据库的正常运行和数据安全是一项极其重要的任务。在日常数据库维护工作中,定期执行数据库备份是一项必不可少的工作。Oracle 数据库提供了多种备份方式,包括手动备份、RMAN 备份等,而自动备份正是其中一种能有效保障数据安全的方法。自动备份不仅减少了人工操作,降低了出错概率,还能在数据库发生故障时实现快速数据恢复。
为何需要自动备份?
数据库作为应用程序的核心数据存储,包含大量关键信息,例如用户数据和配置信息。一旦数据库发生意外故障或数据丢失,可能对业务造成严重影响,甚至导致重大损失。因此,定期备份数据库并确保备份文件的安全存储至关重要。
手动备份存在诸多缺点,例如容易被忽视,且无法及时执行。因此,自动备份成为更优的选择。通过编写脚本来实现自动备份,可提升效率、减少人为错误,并更好地保障数据安全。
Oracle数据库的自动备份方法
在Oracle数据库中,可通过操作系统的任务调度程序(例如cron作业)以及Oracle自带的工具实现自动备份。通过编写脚本,可设置定时任务,在预定义的时间自动执行备份操作。Oracle中常用的自动备份工具包括Data Pump和RMAN。Data Pump用于导出数据库数据,而RMAN主要用于数据库的备份与恢复。
Data Pump(expdp/impdp)提供高效的数据库导出/导入功能,支持压缩、网络传输和并行处理等特性。数据库管理员可通过它定义导出参数,并借助 cron 作业实现备份自动化。RMAN(Recovery Manager)专为全面的数据库备份与恢复而设计,支持增量备份和物理备份,并可追踪备份文件。它可通过脚本编写和操作系统调度实现自动备份。Oracle Enterprise Manager(OEM)提供图形用户界面(GUI)用于备份管理,而第三方工具也可与 Oracle 集成以实现自动备份。
如何在 Windows 上设置 Oracle 数据库每日自动备份?
在 Windows 环境中,可使用“任务计划程序”实现 Oracle 数据库备份的每日自动备份与删除。
1. 创建批处理文件(.bat)
1.1 简单脚本
exp user/password@ORCL direct=y buffer=100000 file=D:\backup\dmp%date:~0,10% LOG=D:\backup\data.log forfiles /p "D:\backup" /s /m *.dmp /d -7 /c "cmd /c del @path"
说明:
exp 命令是 Oracle 的导出备份命令,其中 %date:~0,10% 用于在 DOS 中提取日期。
forfiles 是 Windows 的文件搜索命令,用于在备份目录中搜索过去三天内创建的 .dmp 文件并将其删除。
forfiles 命令的参数:
/p 指定搜索路径(此处为备份文件存储的目录)。
/m 使用掩码搜索文件(例如,.dmp 用于备份转储文件)。
/d 过滤在特定日期之前或之后修改的文件(-3 表示修改时间早于三天前的文件)。
/s 包含子目录。
/c 指定对每个文件执行的命令(例如,cmd /c del @file 可删除该文件)。
1.2 高级脚本
@echo offecho ================================================echo Oracle Database Automated Backup Script in Windowsecho 1. Uses the current date as the backup file name.echo 2. Automatically deletes backups older than 7 days.echo ================================================:: Extract year, month, day, hour, minute, and second.set dd=%DATE:~8,2%set mm=%DATE:~5,2%set yy=%DATE:~0,4%set Tss=%TIME:~6,2%set Tmm=%TIME:~3,2%set Thh=%TIME:~0,2%set Thh=%Thh: =0%:: Generate timestamp in YYYYMMDDHHmmss format.set BACKUPDATE=%yy%%mm%%dd%%Thh%%Tmm%%Tss%:: Set username, password, and database name.set USER=adminset PASSWORD=adminset DATABASE=ORCL:: Create backup directories if they do not exist.if not exist "D:\backup_database\data" mkdir D:\backup_database\dataif not exist "D:\backup_database\log" mkdir D:\backup_database\logset DATADIR=D:\backup_database\dataset LOGDIR=D:\backup_database\log:: Perform the backup.exp %USER%/%PASSWORD%@%DATABASE% file=%DATADIR%\data_%BACKUPDATE%.dmp log=%LOGDIR%\log_%BACKUPDATE%.log:: Delete backups and logs older than 7 days.forfiles /p "%DATADIR%" /s /m *.* /d -7 /c "cmd /c del @path"forfiles /p "%LOGDIR%" /s /m *.* /d -7 /c "cmd /c del @path"exit
注意:若执行脚本时中文字符显示乱码,请使用记事本将文件另存为 ANSI 格式。
2. 在 Windows 中创建计划任务
打开 Windows 任务计划程序:
控制面板 → 系统和安全 → 管理工具 → 任务计划程序
从右侧面板打开“创建基本任务”向导。
输入任务名称和可选的描述,然后点击下一步。
将触发器设置为每日。
选择启动程序,浏览并找到批处理文件,然后完成设置。
如何在 Linux 上设置每日自动 Oracle 数据库备份?
1. 确认数据库环境变量
如果您使用的是 root 账户,则必须先切换到数据库用户:
su oracle
检查环境变量:
cat ~/.bash_profile
请确保已设置以下环境变量:
export PATHexport ORACLE_BASE=/home/nnc_db/appexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1export PATH=$PATH:$ORACLE_HOME/binexport ORACLE_SID=orcl
2. 创建备份脚本
编辑一个新脚本文件:
vi bak.sh
将环境变量复制并粘贴到 `bak.sh` 文件中。然后,定义一个变量 `date`(用于备份文件的命名),并使用 `expdp` 命令导出数据库:
date=$(date +%Y%m%d)expdp db_username/db_password@db_instance dumpfile=${date}_db_auto_backup.dmp schemas=db_username compression=all保存并退出。
3. 使用 crontab 安排备份任务
编辑 crontab 文件:
crontab -e
在文本编辑器中,添加以下行:
0 0 * * * /home/nnc_db/bak.sh
这意味着脚本 `/home/nnc_db/bak.sh` 将每天凌晨 12:00 运行。请根据需要调整时间和文件路径。
重启 cron 服务:
service crond restart
4. 验证任务是否成功运行
部分用户报告称,crontab 任务在设置后的前三分钟内可能不会立即生效。为测试您的脚本是否正常运行,可将其设置为每分钟执行一次:
* * * * * /home/nnc_db/bak.sh
如果脚本运行正常,则问题很可能是由于 crontab 激活存在延迟所致。
此外,手动运行脚本将显示详细输出,但通过 `crontab` 定时执行时不会产生直接输出。要确认脚本是否正在运行,请查看以下位置的日志:
/var/spool/mail/
Oracle 自动化灾难恢复工具
Vinchin 备份与恢复 是一款面向虚拟机和数据库的高性能备份与恢复工具,提供高级备份与灾难恢复功能,包括虚拟机自动备份、免代理备份、局域网/无局域网备份、异地副本、即时恢复、高效数据缩减、云归档等,严格遵循“3-2-1 黄金备份架构”,全面保障您的数据安全与完整性。此外,数据加密及防勒索软件保护 为您数据库备份提供双重保险。
只需 4 个步骤,即可备份 Oracle 数据库:
1. 选择备份对象。

2. 选择备份目标位置。

3. 配置备份策略。

在此,您可以为备份任务设置计划。您可以每周或每月执行一次完整备份,并每天执行增量备份。
4. 审核并提交该任务。

立即试用 Vinchin 备份与恢复软件15天全功能免费试用版,轻松保护您的 Oracle 数据,实现自动化备份与快速恢复!
下载免费试用版
适用于多种数据备份
* 15天全功能免费安全下载
Oracle 数据库自动备份常见问题解答
1. RMAN 与 Data Pump 有何区别?
RMAN 主要用于备份和恢复,支持数据库文件的物理备份、增量备份以及按时间点进行恢复。相比之下,数据泵(Data Pump)则用于逻辑备份,以可移植格式导出和导入表、模式或整个数据库等数据库对象。RMAN 最适合整库恢复,而数据泵则更适用于数据迁移、数据复制以及选择性数据提取。
2. 如何从 RMAN 备份中还原单个表?
使用 RMAN 表空间时间点恢复或数据泵来恢复单个表。
使用数据泵的示例:
impdp system/password directory=DATA_PUMP_DIR dumpfile=backup.dmp remap_table=old_table:new_table
结论
Oracle 数据库的自动备份对于保障数据安全、最大限度减少人为错误,以及在发生故障时实现快速恢复至关重要。数据库管理员可借助 Data Pump 和 RMAN 等内置工具,并结合操作系统的计划任务调度器,在 Windows 和 Linux 系统上实施高效的备份策略。配置得当的自动备份能够降低数据丢失风险,保障业务连续性,因此已成为数据库日常维护中不可或缺的一环。