Linux Oracle数据库备份方法
导读:Linux 上 Oracle 数据库备份方法 一 方法总览与选型 RMAN 物理备份:Oracle 官方推荐,支持完全备份、增量备份(0/1/2级)、归档日志备份、控制文件自动备份,可与FRA(快速恢复区)配合,适合生产环境的在线热备与时...
Linux 上 Oracle 数据库备份方法
一 方法总览与选型
- RMAN 物理备份:Oracle 官方推荐,支持完全备份、增量备份(0/1/2级)、归档日志备份、控制文件自动备份,可与FRA(快速恢复区)配合,适合生产环境的在线热备与时间点恢复(PITR)。
- Data Pump 逻辑备份(expdp/impdp):导出表、用户、全库等逻辑对象,便于跨平台迁移、按对象恢复、开发/测试环境快速搭建,但不替代物理备份对介质故障的保护。
- 文件系统拷贝/系统级工具:如tar/cp/rsync/dd,仅适合停机冷备或配合 RMAN 做存储迁移/归档,不建议作为唯一生产备份手段。
- 第三方备份软件:如 Veritas NetBackup、Commvault,提供与 RMAN 的集成、调度、异地/磁带/云存储能力,适合企业级统一备份管理。
- 云对象存储备份:通过 Oracle Database Backup Cloud Service 或兼容 S3/Swift 的对象存储,RMAN 以 SBT_TAPE 方式写入,适合长期保留与异地容灾。
二 RMAN 物理备份与恢复步骤
- 1)准备与归档模式
以 oracle 用户登录,建议配置 FRA 并开启归档:- 检查归档:RMAN> select log_mode from v$database;
- 切换归档:RMAN> run { shutdown immediate; startup mount; alter database archivelog; alter database open; }
- 2)常用备份命令
- 整库备份(含归档):RMAN> backup database plus archivelog;
- 0级全备(后续做1/2级增量):RMAN> backup incremental level 0 database plus archivelog;
- 1级增量:RMAN> backup incremental level 1 database plus archivelog;
- 控制文件自动备份:RMAN> configure controlfile autobackup on;
- 3)备份到对象存储(SBT_TAPE 模拟磁带)
- 安装云备份模块(OCI 示例):
java -jar oci_install.jar \ -host https://objectstorage.region.oraclecloud.com \ -pubFingerPrint < 钱包公钥指纹> \ -tOCID < 租户OCID> -uOCID < 用户OCID> -cOCID < 区间OCID> \ -libDir $ORACLE_HOME/lib -walletDir $ORACLE_HOME/data/wallet \ -pvtKeyFile $ORACLE_HOME/data/wallet/oci_pvt \ -bucket < 桶名> -configFile ~/config - 配置 RMAN 使用 SBT_TAPE 并备份:RMAN>
configure channel device type sbt parms ‘SBT_LIBRARY=libopc.so’;
RMAN> backup database plus archivelog;
- 安装云备份模块(OCI 示例):
- 4)典型恢复(实例崩溃或数据文件损坏)
- RMAN> startup force nomount;
- RMAN> restore database;
- RMAN> recover database;
- RMAN> alter database open;
- 5)备份集冗余与磁带/云迁移
- 磁盘→磁带/云:RMAN> backup backupset < bs_key> ;(或 BACKUP RECOVERY AREA 将 FRA 内容统一搬迁)
- 多副本:RMAN> configure maxcopies 2; 或在 backup 命令中使用 copies 选项。
三 Data Pump 逻辑备份与恢复步骤
- 1)准备目录对象
- SQL> create directory DATA_EXP as ‘/u01/backup/dp’;
- SQL> grant read,write on directory DATA_EXP to system;
- 2)全库导出
- $ expdp system/password@SID directory=DATA_EXP dumpfile=DB_FULL_%U.dmp logfile=expdp_full.log full=y parallel=4
- 3)按用户导出
- $ expdp system/password@SID directory=DATA_EXP dumpfile=EXP_USER.dmp logfile=expdp_user.log schemas=SCOTT
- 4)全库导入
- $ impdp system/password@SID directory=DATA_EXP dumpfile=DB_FULL_%U.dmp logfile=impdp_full.log full=y parallel=4
- 5)按用户导入并映射
- $ impdp system/password@SID directory=DATA_EXP dumpfile=EXP_USER.dmp logfile=impdp_user.log \ remap_schema=SCOTT:HR table_exists_action=truncate
- 6)常用参数
- parallel:提升导出/导入速度(与 CPU/IO 匹配)
- compression:压缩转储文件(视库与存储权衡)
- exclude/include:对象级过滤,精细化备份
四 自动化与保留策略
- 1)RMAN 保留策略
- 基于冗余:RMAN> configure retention policy to redundancy 2;
- 基于恢复窗口:RMAN> configure retention policy to recovery window of 7 days;
- 查看与报告:RMAN> report obsolete; RMAN> delete obsolete;
- 2)备份集/镜像拷贝多副本
- RMAN> configure maxcopies 2; 或 backup … copies 2;
- 3)定时任务(crontab 示例)
- 每日 2:30 全备(RMAN 脚本 /u01/scripts/rman_full.sh):
- 30 2 * * * /u01/scripts/rman_full.sh > /u01/logs/rman_full_$(date +%F).log 2> & 1
- 每日 3:30 逻辑备份(Data Pump 脚本 /u01/scripts/dp_full.sh):
- 30 3 * * * /u01/scripts/dp_full.sh > /u01/logs/dp_full_$(date +%F).log 2> & 1
- 每日 2:30 全备(RMAN 脚本 /u01/scripts/rman_full.sh):
- 4)备份验证
- RMAN> validate backupset < bs_key> ; 或 restore database validate;
- 定期做恢复演练,确保备份可用。
五 方法对比与适用场景
| 方法 | 备份对象 | 优点 | 局限 | 典型场景 |
|---|---|---|---|---|
| RMAN 物理备份 | 数据文件、控制文件、归档日志、SPFILE | 支持增量、PITR、压缩/加密、与 FRA/磁带/云集成 | 需理解 RMAN 策略与通道配置 | 生产库在线热备、快速恢复 |
| Data Pump 逻辑备份 | 表、用户、全库等逻辑对象 | 跨平台、按对象恢复、迁移/克隆便捷 | 不覆盖介质故障、恢复粒度受限 | 迁移/升级/开发测试、误删对象回滚 |
| 文件系统拷贝/系统工具 | 数据文件/归档等 | 简单直观、便于迁移 | 仅适合停机冷备,易遗漏文件 | 停机维护窗口或 RMAN 辅助归档 |
| 第三方备份软件 | 与 RMAN 集成备份 | 统一调度、异地/磁带/云、报表监控 | 成本与运维复杂度 | 企业级统一备份平台 |
| 云对象存储备份 | 备份集/镜像拷贝 | 低成本长期保留、异地容灾 | 依赖网络与云配置 | 长期保留/云上灾备 |
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Oracle数据库备份方法
本文地址: https://pptw.com/jishu/758050.html
