Oracle WINDOWS RMAN 备份实施手册
好的,这是一份在 Windows Server 2012 R2 上执行 Oracle 11g 数据库备份的详细文档。我们将使用 Oracle 推荐的 RMAN (Recovery Manager) 工具进行备份,因为它功能强大、灵活且能确保数据一致性。
1 在 Windows Server 2012 R2 上使用 RMAN 备份 Oracle 11g 数据库
本指南将详细介绍如何在 Windows Server 2012 R2 操作系统上,使用 Oracle 11g 自带的 RMAN (Recovery Manager) 工具执行数据库备份。RMAN 是 Oracle 官方推荐的备份和恢复工具,能够执行全库备份、增量备份,并支持归档日志备份,确保数据的一致性和可恢复性。
1.1 前提条件与准备工作
在开始备份之前,请确保满足以下条件并完成相应的准备工作:
-
Oracle 11g 数据库正常运行:确认您的 Oracle 11g 数据库实例已启动并可访问。
-
管理员权限:执行备份操作的用户需要具备 Windows Server 2012 R2 的管理员权限,并且该用户需要是
ORA_DBA组的成员,以便能够连接到 Oracle 数据库进行管理。 -
足够的存储空间:确保备份目标路径有足够的磁盘空间来存储备份文件。全库备份可能占用大量空间。
-
归档模式(ARCHIVELOG Mode):强烈建议您的数据库运行在归档模式下。在归档模式下,Oracle 会保留所有已提交事务的归档日志,这对于执行时间点恢复(Point-in-Time Recovery)至关重要。如果数据库未处于归档模式,只能执行不完全恢复(通过全库备份还原到备份完成时的状态)。
-
检查归档模式:
-
打开 SQL*Plus 并以
SYSDBA身份连接:SQL
sqlplus / as sysdba -
执行以下命令:
SQL
SELECT LOG_MODE FROM V$DATABASE; -
如果返回
ARCHIVELOG,则已处于归档模式。如果返回NOARCHIVELOG,则需要切换到归档模式。
-
-
切换到归档模式(如果需要):
警告: 切换归档模式需要重启数据库,并可能影响业务,请务必在维护窗口进行操作并提前通知相关人员。
-
关闭数据库:
SQL
SHUTDOWN IMMEDIATE; -
启动到挂载状态:
SQL
STARTUP MOUNT; -
切换到归档模式:
SQL
ALTER DATABASE ARCHIVELOG; -
打开数据库:
SQL
ALTER DATABASE OPEN; -
确认模式:
SQL
SELECT LOG_MODE FROM V$DATABASE;
-
-
-
备份目标路径:选择一个本地磁盘路径或网络共享路径作为备份文件的存储位置。例如,
D:\OracleBackup\DBName。
1.2 配置 RMAN (可选但推荐)
RMAN 允许您设置一些持久化的配置,这些配置会在每次 RMAN 会话中生效,除非被临时覆盖。这简化了备份命令。
-
打开 命令提示符 (CMD),以管理员身份运行。
-
连接到 RMAN:
DOS
rman target / -
配置常用的备份选项:
-
配置备份保留策略(冗余备份数量):保留最近的 3 份完全备份。
代码段
CONFIGURE RETENTION POLICY TO REDUNDANCY 3; -
配置备份压缩:推荐使用
BASIC压缩,可以有效减小备份文件大小。代码段
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS ENCRYPTED ALGORITHM 'AES128'; -
配置备份集优化:RMAN 会跳过备份那些已经备份过且未发生变化的相同文件。
代码段
CONFIGURE BACKUP OPTIMIZATION ON; -
配置控制文件自动备份:当数据库结构发生变化(如添加数据文件)时,RMAN 会自动备份控制文件。
代码段
CONFIGURE CONTROLFILE AUTOBACKUP ON; -
配置默认备份设备和并发通道(可选):如果您有多个 CPU 核心或想并行备份。
代码段
CONFIGURE DEFAULT DEVICE TYPE TO DISK; CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET; -
配置归档日志删除策略:备份后删除已备份的归档日志,节省空间。
代码段
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY BACKED UP 1 TIMES TO DISK;
-
-
查看当前的 RMAN 配置:
代码段
SHOW ALL; -
退出 RMAN:
代码段
EXIT;
1.3 执行数据库备份
以下是一些常见的 RMAN 备份策略。
1.3.1 完整数据库备份 (Full Database Backup)
这是最基本的备份类型,它会备份所有数据文件、控制文件和服务器参数文件 (SPFILE)。
-
打开 命令提示符 (CMD),以管理员身份运行。
-
连接到 RMAN:
DOS
rman target / -
执行完整数据库备份:
代码段
RUN { ALLOCATE CHANNEL d1 DEVICE TYPE DISK; BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT; -- 或者指定备份到特定目录: -- BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT FORMAT 'D:\OracleBackup\DBNAME\%U'; RELEASE CHANNEL d1; }-
ALLOCATE CHANNEL d1 DEVICE TYPE DISK;:分配一个名为d1的磁盘通道用于备份。 -
BACKUP DATABASE PLUS ARCHIVELOG:备份整个数据库(包括所有数据文件、控制文件和 SPFILE)以及所有尚未备份的归档日志。 -
DELETE INPUT:在归档日志备份完成后,自动删除已备份的归档日志。 -
FORMAT 'D:\OracleBackup\DBNAME\%U':可选,指定备份文件的输出路径和命名格式。%U会生成一个唯一的备份文件名。如果未指定,RMAN 会使用其默认位置。 -
RELEASE CHANNEL d1;:释放通道。
-
-
备份完成后,退出 RMAN:
代码段
EXIT;
1.3.2 增量备份 (Incremental Backup)
增量备份只备份自上次相同或更低级别的备份以来发生变化的数据块。这能有效节省备份时间和存储空间。
-
级别 0 (Level 0) 备份:第一次增量备份通常是级别 0 备份,它等同于一个完整的数据库备份,作为后续增量备份的基准。
代码段
RUN { ALLOCATE CHANNEL d1 DEVICE TYPE DISK; BACKUP INCREMENTAL LEVEL 0 DATABASE FORMAT 'D:\OracleBackup\DBNAME_INC_LV0\%U'; RELEASE CHANNEL d1; } -
级别 1 (Level 1) 累积增量备份:备份自上次级别 0 备份以来所有发生变化的数据块。
代码段
RUN { ALLOCATE CHANNEL d1 DEVICE TYPE DISK; BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE FORMAT 'D:\OracleBackup\DBNAME_INC_LV1CUM\%U'; RELEASE CHANNEL d1; } -
级别 1 (Level 1) 差异增量备份:备份自上次相同或更低级别备份以来发生变化的数据块。
代码段
RUN { ALLOCATE CHANNEL d1 DEVICE TYPE DISK; BACKUP INCREMENTAL LEVEL 1 DATABASE FORMAT 'D:\OracleBackup\DBNAME_INC_LV1DIFF\%U'; RELEASE CHANNEL d1; }
1.3.3 仅归档日志备份
如果您需要频繁备份归档日志以满足恢复点目标 (RPO),可以单独备份归档日志。
代码段
RUN {
ALLOCATE CHANNEL d1 DEVICE TYPE DISK;
BACKUP ARCHIVELOG ALL DELETE INPUT;
RELEASE CHANNEL d1;
}
BACKUP ARCHIVELOG ALL:备份所有未备份的归档日志。
1.4 编写批处理脚本自动执行备份
为了自动化备份过程,您可以创建一个 .bat 批处理脚本,并结合 Windows 任务计划程序进行定时执行。
-
在您选择的备份目录(例如
D:\OracleBackup)下创建一个新的文本文件,命名为backup_full_db.bat。 -
编辑该文件,并粘贴以下内容:
代码段
@ECHO OFF REM 设置 Oracle 环境变量 (根据您的实际安装路径修改) SET ORACLE_HOME=C:\app\oracle\product\11.2.0\dbhome_1 SET ORACLE_SID=ORCL REM 替换为您的数据库 SID SET PATH=%ORACLE_HOME%\bin;%PATH% SET BACKUP_DIR=D:\OracleBackup\%ORACLE_SID%\FullBackup IF NOT EXIST %BACKUP_DIR% MKDIR %BACKUP_DIR% ECHO %DATE% %TIME% - Starting RMAN Full Database Backup for %ORACLE_SID%... > %BACKUP_DIR%\backup_log_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.log 2>&1 rman target / log %BACKUP_DIR%\backup_log_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.log << EOF RUN { ALLOCATE CHANNEL d1 DEVICE TYPE DISK; BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT FORMAT '%BACKUP_DIR%\%U'; RELEASE CHANNEL d1; CROSSCHECK BACKUP; # 检查备份集状态 DELETE EXPIRED BACKUP; # 删除标记为过期的备份 } EXIT; EOF IF %ERRORLEVEL% NEQ 0 ( ECHO %DATE% %TIME% - RMAN backup failed! Check log file for details. ) ELSE ( ECHO %DATE% %TIME% - RMAN backup completed successfully. ) ECHO %DATE% %TIME% - RMAN backup script finished. >> %BACKUP_DIR%\backup_log_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.log 2>&1 -
根据您的实际情况修改以下变量:
-
SET ORACLE_HOME=C:\app\oracle\product\11.2.0\dbhome_1:Oracle 数据库的安装路径。 -
SET ORACLE_SID=ORCL:您的 Oracle 数据库实例的系统标识符 (SID)。 -
SET BACKUP_DIR=D:\OracleBackup\%ORACLE_SID%\FullBackup:备份文件的目标目录。
-
-
保存文件。
1.5 使用 Windows 任务计划程序自动化备份
-
打开 服务器管理器,点击 工具 -> 任务计划程序。
-
在任务计划程序库中,右键点击 创建基本任务...。
-
创建基本任务向导:
-
名称:输入一个有意义的名称,例如
Oracle_11g_Full_Backup。 -
描述:简要描述任务,例如
每日 Oracle 11g 数据库全库备份。 -
触发器:选择任务的执行频率,例如
每天或每周。 -
每日/每周:设置具体的执行时间和日期。例如,每天凌晨 2:00。
-
操作:选择
启动程序。 -
程序/脚本:点击
浏览,选择您刚刚创建的.bat备份脚本文件(例如D:\OracleBackup\backup_full_db.bat)。 -
添加参数(可选):留空。
-
起始于(可选):输入您的备份脚本所在的目录(例如
D:\OracleBackup)。
-
-
点击 完成。
-
重要:修改任务权限
-
在任务计划程序库中,找到您创建的任务 (
Oracle_11g_Full_Backup)。 -
双击该任务或右键点击选择 属性。
-
在 常规 选项卡下,点击 更改用户或组...。
-
输入拥有
ORA_DBA权限的 Windows 用户名(例如Administrator或专门的 Oracle 服务账户),并点击 检查名称,然后 确定。 -
勾选
无论用户是否登录都要运行。 -
勾选
使用最高权限运行。 -
切换到 设置 选项卡,确保
如果任务运行时间超过以下时间,请停止它设置为合理的值(例如 4 小时),以防止脚本无限期运行。 -
点击 确定,系统可能会要求您输入所选用户的密码。
-
1.6 验证备份
每次备份完成后,您应该检查备份日志文件以及备份目录,以确认备份是否成功。
-
检查日志文件:打开
D:\OracleBackup\ORCL\FullBackup目录下生成的日志文件(文件名包含日期和时间戳),查看是否有错误信息。RMAN 成功完成会显示Recovery Manager complete.。 -
检查备份文件:确认在备份目录下生成了新的备份文件。备份文件通常以
xxxx_DBS_...或xxxx_ARC_...格式命名,或者如果您在 RMAN 命令中指定了格式,则按您指定的格式命名。
1.7 故障排除提示
-
RMAN 连接问题:
-
确保 Oracle 数据库实例正在运行。
-
检查
ORACLE_HOME和ORACLE_SID环境变量是否设置正确。 -
确保运行 RMAN 的用户具有
ORA_DBA组权限。
-
-
权限问题:
- 确保备份目标路径对 Oracle 数据库服务账户或运行任务计划程序的用户具有写入权限。
-
磁盘空间不足:
-
定期清理旧的备份文件(RMAN 的保留策略可以帮助自动化此过程)。
-
考虑增加磁盘空间或使用网络存储。
-
-
归档日志问题:
-
如果数据库不在归档模式,RMAN 将无法备份归档日志,并且无法进行时间点恢复。
-
如果归档日志未及时清理,可能耗尽空间。RMAN 的
DELETE INPUT选项和归档日志删除策略可以帮助管理。
-
希望这份文档能帮助您在 Windows Server 2012 R2 上成功实施 Oracle 11g 数据库备份。定期测试您的备份和恢复过程是确保数据安全的关键!