云祺Logo 云祺Logo

Oracle 数据库自动备份 | Windows 和 Linux

2026-06-12

目录:

1.为何需要自动备份?

2.Oracle数据库的自动备份方法

3.如何在Windows系统上设置Oracle数据库每日自动备份?

4.如何在Linux系统上设置Oracle数据库每日自动备份?

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. 选择备份对象。

备份 Oracle 数据库

2. 选择备份目标位置。

备份 Oracle 数据库

3. 配置备份策略。

备份 Oracle 数据库

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

4. 审核并提交该任务。

备份 Oracle 数据库

立即试用 Vinchin 备份与恢复软件15天全功能免费试用版,轻松保护您的 Oracle 数据,实现自动化备份与快速恢复!

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 系统上实施高效的备份策略。配置得当的自动备份能够降低数据丢失风险,保障业务连续性,因此已成为数据库日常维护中不可或缺的一环。

云祺备份软件,云祺容灾备份系统,虚拟机备份,数据库备份,文件备份,实时备份,勒索软件,美国,图书馆

您可能感兴趣的新闻 换一批

现在下载,可享15天免费试用

立即下载

请添加好友为您提供支持
jia7jia_7

微信售后服务二维码

请拨打电话
为您提供支持

400-9955-698