温馨提示×

Ubuntu Oracle数据库恢复步骤是什么

小樊
36
2025-12-26 13:37:13
栏目: 云计算

Ubuntu 上 Oracle 数据库恢复步骤

一 准备与环境检查

  • 切换到 oracle 用户并准备环境:
    • 命令:su - oracle
    • 设置 Oracle 环境变量(依据实际安装路径调整):export ORACLE_SID=ORCL; export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1; export PATH=$ORACLE_HOME/bin:$PATH
  • 校验备份可用性与完整性:
    • RMAN 中执行:LIST BACKUP; 查看备份集;必要时对备份文件做 MD5/SHA-256 校验,确保无损坏且可访问。
  • 归档与恢复前提:
    • 数据库需处于 ARCHIVELOG 模式以执行时间点恢复;RMAN 的 RESTORE 用于将备份复制到数据文件/控制文件/归档日志位置,随后通过 RECOVER 应用重做日志完成一致性恢复。

二 使用 RMAN 进行物理恢复(整库/数据文件/控制文件)

  • 场景 A 控制文件丢失或损坏
    • 启动到 NOMOUNTSTARTUP NOMOUNT;
    • 从自动备份恢复控制文件(若未设恢复目录,需先 SET DBID):RESTORE CONTROLFILE FROM AUTOBACKUP;
    • 或指定备份文件:RESTORE CONTROLFILE FROM '/path/controlfile.bkp';
    • 挂载数据库:ALTER DATABASE MOUNT;
  • 场景 B 数据文件丢失或损坏
    • 挂载数据库:STARTUP MOUNT;
    • 还原数据文件(默认位置或指定位置):
      • 默认位置:RESTORE DATABASE;
      • 指定新位置(示例):
        • SET NEWNAME FOR DATAFILE 1 TO '/u02/oradata/ORCL/system01.dbf';
        • SET NEWNAME FOR DATAFILE 2 TO '/u02/oradata/ORCL/sysaux01.dbf';
        • RESTORE DATABASE;
        • SWITCH DATABASE TO COPY;SWITCH DATAFILE ALL;
    • 恢复数据库(介质恢复到最新或指定时间点):RECOVER DATABASE;
    • 打开数据库:
      • 正常打开:ALTER DATABASE OPEN;
      • 若以备份控制文件恢复或需重建联机日志:ALTER DATABASE OPEN RESETLOGS;
  • 场景 C 仅个别数据文件/表空间
    • 离线表空间或数据文件:ALTER TABLESPACE users OFFLINE IMMEDIATE;
    • 还原:RESTORE DATAFILE '/u02/oradata/ORCL/users01.dbf';
    • 恢复:RECOVER DATAFILE '/u02/oradata/ORCL/users01.dbf';
    • 上线:ALTER TABLESPACE users ONLINE;
  • 场景 D 归档日志缺失或需指定来源
    • 指定归档日志目录:RESTORE ARCHIVELOG FROM '/backup/archivelog/';
    • 必要时在 RECOVER 阶段使用 USING BACKUP CONTROLFILE 指定控制文件来源。

三 使用 Data Pump 进行逻辑恢复(expdp/impdp)

  • 若采用逻辑备份(Data Pump),按如下方式还原:
    • 创建目录对象并赋权(示例目录 /u01/dpump):
      • CREATE DIRECTORY dpump_dir AS '/u01/dpump';
      • GRANT READ, WRITE ON DIRECTORY dpump_dir TO system;
    • 全库导入:impdp system/password@ORCL DIRECTORY=dpump_dir DUMPFILE=expdp_full.dmp FULL=Y LOGFILE=impdp_full.log
    • 按用户导入:impdp system/password@ORCL DIRECTORY=dpump_dir DUMPFILE=expdp_user.dmp FROMUSER=scott TOUSER=scott LOGFILE=impdp_user.log
    • 指定表/模式/表空间等细粒度对象按需选择参数(如 TABLES=..., SCHEMAS=..., TABLESPACES=...)。

四 时间点恢复与闪回

  • 时间点恢复(不完全恢复)
    • 在 RMAN 中执行(示例恢复到 2025-12-25 10:00:00):
      • RUN { SET UNTIL TIME '2025-12-25 10:00:00'; RESTORE DATABASE; RECOVER DATABASE; }
      • 打开数据库:ALTER DATABASE OPEN RESETLOGS;
  • 闪回数据库(需预先启用且具备相应闪回资源)
    • 示例:FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('2025-12-25 10:00:00','YYYY-MM-DD HH24:MI:SS');
    • 打开:ALTER DATABASE OPEN RESETLOGS;
  • 闪回查询用于细粒度对象级恢复(无需整库回退)
    • 示例:SELECT * FROM schema.table AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '30' MINUTE);

五 恢复后验证与常见问题处理

  • 基本验证
    • 检查数据库打开状态:SELECT OPEN_MODE FROM V$DATABASE;
    • 校验对象可用性:SELECT COUNT(*) FROM dba_objects;
    • 检查块损坏:SELECT * FROM V$DATABASE_BLOCK_CORRUPTION;
    • 抽样核对关键业务表数据量与内容一致性。
  • 常见问题与要点
    • 备份加密:若备份为加密备份,恢复前需确保 Oracle 软件密钥库已打开;透明模式需打开钱包,密码模式需提供密码,双模两者皆可。
    • 文件位置变更:使用 SET NEWNAME + SWITCH 将还原文件切换为当前控制文件中的新路径,避免路径不一致导致恢复失败。
    • 控制文件恢复:无恢复目录且目标库处于 NOMOUNT 时,需从自动备份恢复并指定 FROM AUTOBACKUP;已挂载/打开时需用 TO 'filename' 指定非控制文件目录的目标文件。
    • 归档日志与增量:确保所需 归档日志增量备份 可用;RMAN 会自动进行故障转移寻找可用副本,必要时提供正确的 DEVICE TYPE 与通道配置。

0