首页主机资讯Linux上Oracle如何备份与恢复

Linux上Oracle如何备份与恢复

时间2025-10-23 14:25:04发布访客分类主机资讯浏览1272
导读:Linux环境下Oracle数据库备份与恢复指南 一、备份概述 Oracle数据库备份分为物理备份(直接复制数据库文件,如数据文件、控制文件、归档日志)和逻辑备份(导出数据库对象的结构与数据,如expdp/impdp)。物理备份是恢复的基础...

Linux环境下Oracle数据库备份与恢复指南

一、备份概述

Oracle数据库备份分为物理备份(直接复制数据库文件,如数据文件、控制文件、归档日志)和逻辑备份(导出数据库对象的结构与数据,如expdp/impdp)。物理备份是恢复的基础,逻辑备份适用于数据迁移或选择性恢复。

二、物理备份(使用RMAN)

RMAN(Recovery Manager)是Oracle官方推荐的物理备份工具,支持全备、增量备份、压缩备份等功能,且能自动管理备份文件。

1. 准备工作

  • 确认数据库处于归档模式(归档模式允许恢复到指定时间点,是生产环境的必备配置):
    sqlplus / as sysdba
    archive log list;
          -- 检查是否为归档模式
    shutdown immediate;
          -- 关闭数据库
    startup mount;
          -- 启动到mount状态
    alter database archivelog;
          -- 开启归档模式
    alter database open;
      -- 打开数据库
    
  • 创建备份目录并授权:
    mkdir -p /u01/oracle/backup
    chown -R oracle:oinstall /u01/oracle/backup
    

2. 全量备份(包含数据文件、控制文件、归档日志)

rman target /
run {
    
  allocate channel ch1 type disk;
      -- 分配磁盘通道
  backup database plus archivelog;
      -- 备份数据库及归档日志
  release channel ch1;
  -- 释放通道
}
    
  • 优化命令:指定备份路径(避免默认路径空间不足)并启用控制文件自动备份:
    configure channel device type disk format '/u01/oracle/backup/%U';
          -- 设置备份文件格式(%U为唯一标识符)
    configure controlfile autobackup on;
      -- 开启控制文件自动备份
    

3. 增量备份(仅备份自上次备份以来变化的数据)

rman target /
run {
    
  allocate channel ch1 type disk;
    
  backup incremental level 1 database;
      -- 1级增量备份(基于最近的全备或1级增量备份)
  release channel ch1;

}
    

4. 自动化备份(通过crontab定时执行)

编辑crontab文件(每天凌晨2点执行全备):

crontab -e

添加以下内容:

0 2 * * * /bin/bash -c 'source /home/oracle/.bash_profile;
     rman target / <
    <
EOF
run {
    
  allocate channel ch1 type disk;
    
  backup database plus archivelog;
    
  release channel ch1;

}
    
exit;
    
EOF'

三、物理恢复(使用RMAN)

恢复流程需根据故障类型调整,常见场景包括数据库损坏数据文件丢失误删除数据

1. 恢复前的准备

  • 确认备份文件完整(可通过rman target / list backup; 查看备份集)。
  • 将数据库启动到mount状态(恢复过程中需挂载数据库):
    sqlplus / as sysdba
    shutdown immediate;
        
    startup mount;
    
    

2. 完整恢复(恢复整个数据库)

rman target /
run {
    
  allocate channel ch1 type disk;
    
  restore database;
      -- 恢复数据文件、控制文件
  recover database;
      -- 应用归档日志,使数据库达到一致状态
  alter database open;
      -- 打开数据库
  release channel ch1;

}
    

3. 恢复到指定时间点(解决误操作问题)

若需恢复到某个具体时间(如2025-10-20 18:00),需先查询该时间点的SCN(系统改变号):

sqlplus / as sysdba
select timestamp_to_scn(to_timestamp('2025-10-20 18:00:00', 'YYYY-MM-DD HH24:MI:SS')) from dual;

得到SCN后,执行时间点恢复:

rman target /
run {
    
  allocate channel ch1 type disk;
    
  restore database;
    
  recover database until scn 123456789;
      -- 替换为查询到的SCN
  alter database open resetlogs;
      -- 打开数据库(需重置日志,因为恢复过程中会生成新日志)
  release channel ch1;

}

4. 恢复单个数据文件(如users表空间数据文件丢失)

rman target /
run {
    
  allocate channel ch1 type disk;
    
  restore datafile '/u01/oracle/oradata/ORCL/users01.dbf';
      -- 指定丢失的数据文件路径
  recover datafile '/u01/oracle/oradata/ORCL/users01.dbf';
    
  sql 'alter database datafile 4 online';
      -- 将数据文件状态改为online(4为数据文件编号,可通过desc v$datafile查看)
  release channel ch1;

}
    

四、逻辑备份与恢复(使用expdp/impdp)

逻辑备份通过expdp(导出)和impdp(导入)工具实现,适用于选择性恢复(如恢复某个表、表空间)或跨数据库迁移

1. 准备工作

  • 确认DIRECTORY对象存在(用于存储导出文件):
    sqlplus / as sysdba
    create directory dpump_dir as '/u01/oracle/dump';
        
    grant read, write on directory dpump_dir to system;
          -- 授权用户访问目录
    

2. 全库导出

expdp system/password@ORCL directory=dpump_dir dumpfile=full_db.dmp logfile=expdp_full.log full=y
  • 参数说明:full=y表示全库导出,dumpfile指定导出文件名,logfile指定日志文件名。

3. 全库导入

impdp system/password@ORCL directory=dpump_dir dumpfile=full_db.dmp logfile=impdp_full.log full=y

4. 选择性恢复(如恢复users表)

  • 导出特定表
    expdp system/password@ORCL directory=dpump_dir dumpfile=users_table.dmp logfile=expdp_users.log tables=users
    
  • 导入特定表
    impdp system/password@ORCL directory=dpump_dir dumpfile=users_table.dmp logfile=impdp_users.log tables=users
    

五、注意事项

  • 备份验证:定期执行rman target / list backup; 检查备份集完整性,或通过restore database validate; 模拟恢复过程。
  • 保留策略:通过configure retention policy to recovery window of 7 days; 设置保留7天的备份(自动删除过期备份)。
  • 灾难恢复:结合Oracle Data Guard实现异地容灾(主库故障时快速切换到备用库),提升业务连续性。
  • 日志管理:归档日志目录(如/u01/oracle/archive)需有足够空间,避免因空间不足导致数据库无法归档。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux上Oracle如何备份与恢复
本文地址: https://pptw.com/jishu/733426.html
Oracle配置文件如何管理 Oracle配置中常见误区有哪些

游客 回复需填写必要信息