Oracle 19c 备份技术教学文档
一、备份概述
1.1 备份的意义
Oracle 数据库存储着企业核心业务数据,备份是保障数据安全的核心手段。通过备份,可在数据丢失(如误删、硬件故障、病毒攻击等)时快速恢复,最小化业务中断损失。
1.2 Oracle 19c 备份技术特点
Oracle 19c 继承了传统备份优势,并增强了自动化与可靠性:
- 支持物理备份(基于数据文件)和逻辑备份(基于数据对象)
- RMAN(Recovery Manager)工具功能增强,支持增量备份优化、跨平台备份等
- 集成闪回技术,可与备份结合实现快速恢复
- 支持备份加密、压缩,提升安全性与存储效率
二、备份类型详解
2.1 按备份对象分类
(1)物理备份
- 定义:直接备份数据库物理文件(数据文件、控制文件、联机日志、参数文件等),基于操作系统级别的文件复制。
- 适用场景:全库恢复、灾难恢复,支持快速重建数据库。
- 工具:RMAN(推荐)、操作系统命令(如
cp、tar,不推荐生产环境)。
(2)逻辑备份
- 定义:备份数据库逻辑对象(表、视图、存储过程等),以逻辑数据形式(如 SQL 语句、二进制 dump 文件)存储。
- 适用场景:单表 / 用户恢复、数据迁移、跨版本兼容。
- 工具:数据泵(Data Pump,
expdp/impdp)、传统导出工具(exp/imp,已过时)。
2.2 按备份策略分类
(1)全量备份(Full Backup)
- 定义:备份指定对象的所有数据(如全库所有数据文件、单个表空间的所有数据文件)。
- 特点:备份量大、时间长,但恢复简单(无需依赖其他备份)。
(2)增量备份(Incremental Backup)
- 定义:仅备份自上一次备份后发生变化的数据块,需基于 “基准备份”(0 级增量)。
- 级别划分:
- 0 级增量:等同于全量备份,作为后续增量备份的基准(必须先做 0 级,才能做 1 级)。
- 1 级增量:又分 “累积增量”(备份自上一次 0 级备份后变化的数据块)和 “差异增量”(备份自上一次 1 级备份后变化的数据块,默认类型)。
- 特点:备份量小、时间短,适合高频次备份(如每日),但恢复需串联基准备份 + 增量备份。
(3)归档日志备份
- 定义:备份联机日志切换后生成的归档日志(记录数据库所有事务)。
- 作用:配合数据文件备份,可将数据库恢复到 “任意时间点”(Point-in-Time Recovery)。
三、核心备份工具实操
3.1 RMAN 物理备份(推荐生产环境)
(1)RMAN 连接数据库
# 本地连接(需ORACLE_SID环境变量)
rman target /# 远程连接
rman target sys/密码@数据库服务名
(2)配置 RMAN 备份参数(可选,建议预先配置)
# 配置备份保留策略(如保留7天)
configure retention policy to recovery window of 7 days;# 配置默认备份类型为压缩备份
configure device type disk parallelism 2 backup type to compressed backupset;# 配置自动删除过期备份
configure controlfile autobackup on; # 自动备份控制文件(关键!恢复必需)
configure controlfile autobackup format for device type disk to '/backup/rman/%F'; # 控制文件备份路径
(3)常用备份命令
① 全库全量备份
# 备份全库+归档日志(备份后删除已备份的归档日志,避免重复)
backup as compressed backupset database plus archivelog delete input;
② 0 级增量备份(基准备份)
# 对全库做0级增量备份
backup incremental level 0 database plus archivelog;
③ 1 级差异增量备份
# 基于最近的0级/1级备份,备份变化的数据块
backup incremental level 1 database plus archivelog;
④ 单表空间备份
# 备份指定表空间(如USERS表空间)
backup tablespace users;
⑤ 归档日志单独备份
# 仅备份归档日志,不备份数据文件
backup archivelog all delete input; # 备份后删除已备份的归档日志
3.2 数据泵逻辑备份(expdp/impdp)
(1)基本语法
# 导出(expdp):需先创建目录对象(DBA操作)
sqlplus / as sysdba
create directory dpdir as '/backup/dpump'; # 定义备份目录(需提前在OS创建)
grant read, write on directory dpdir to 用户名; # 授权用户使用目录# 导出全库(仅逻辑对象,非物理文件)
expdp sys/密码@服务名 full=y directory=dpdir dumpfile=full_db.dmp logfile=exp_full.log# 导出指定用户
expdp 用户名/密码@服务名 schemas=用户名 directory=dpdir dumpfile=user.dmp logfile=exp_user.log# 导出指定表
expdp 用户名/密码@服务名 tables=表1,表2 directory=dpdir dumpfile=tables.dmp logfile=exp_tables.log
(2)注意事项
- 数据泵备份不包含联机日志、控制文件等,无法用于全库灾难恢复,仅用于逻辑对象恢复。
- 支持并行导出(
parallel=N参数),提升大文件备份效率。 - 导出文件需妥善保存,避免权限问题(OS 层目录需
oracle用户可读写)。
四、备份策略制定
4.1 核心原则
- 高频低量:全量 / 0 级备份周期长(如每周一次),增量备份周期短(如每日一次)。
- 归档必备:开启归档模式(
alter database archivelog),并每小时 / 每日备份归档日志。 - 多副本存储:备份文件至少保存 2 份,一份本地、一份异地(如云存储、磁带库)。
- 定期验证:每周至少一次恢复测试,确保备份可用。
4.2 典型备份计划示例
| 时间 | 备份类型 | 操作内容 |
|---|---|---|
| 每周日凌晨 | 0 级增量备份 + 归档日志 | backup incremental level 0 database plus archivelog |
| 周一至周六凌晨 | 1 级差异增量 + 归档日志 | backup incremental level 1 database plus archivelog |
| 每 6 小时 | 单独归档日志备份 | backup archivelog all delete input |
五、备份验证与恢复测试
5.1 检查备份有效性
# 列出所有备份集
list backup;# 检查备份集完整性(推荐每周执行)
validate backupset 备份集编号; # 备份集编号可通过list backup获取# 检查30天内的0级备份(前文提及的命令)
list backup of database level 0 completed after 'sysdate - 30';
5.2 恢复测试(关键!)
- 全库恢复测试:在测试环境还原最近的全量 / 增量备份,验证数据库可正常启动。
- 单表恢复测试:使用数据泵导入单表,或通过 RMAN 恢复表空间后导出表。
- 时间点恢复测试:模拟误删数据,通过 “全量备份 + 归档日志” 恢复到删除前的时间点。
六、总结
Oracle 19c 备份的核心是 “物理备份(RMAN)+ 逻辑备份(数据泵)” 结合,配合合理的增量策略与归档日志备份,可实现 “快速恢复” 与 “任意时间点恢复”。关键注意事项:
- 生产环境优先使用 RMAN,支持增量备份与自动化配置。
- 必须开启归档模式,否则无法做时间点恢复。
- 备份后务必定期验证,“备份未验证 = 未备份”。
通过本文档的操作步骤,可搭建基础的 Oracle 19c 备份体系,保障数据安全。
