温馨提示×

oracle于centos如何恢复

小樊
40
2025-12-09 13:36:28
栏目: 云计算

在 CentOS 上恢复 Oracle 的可行路径

  • 按备份形态选择恢复方式:
    • RMAN 物理恢复:有备份集/镜像拷贝控制文件自动备份归档日志时使用,适合实例/数据文件/控制文件损坏或丢失。
    • Data Pump 逻辑恢复:有 expdp/dmp 导出文件时使用,适合整库/按用户/按表空间迁移或恢复。
    • 文件级拷贝冷恢复:有数据文件/控制文件/联机日志/参数文件的一致拷贝时使用,适合停机场景。
    • 闪回技术:已启用闪回数据库/闪回表/回收站时,可快速回退到时间点/SCN/删除前状态,避免复杂恢复。

RMAN 物理恢复步骤

  • 准备与检查
    • 确认备份可用(数据文件、归档日志、控制文件自动备份),安装同版本 Oracle,配置 ORACLE_SIDORACLE_HOME、环境变量,确保磁盘空间充足。
  • 启动到 NOMOUNT 并还原控制文件
    • 命令:
      • rman target /
      • STARTUP NOMOUNT
      • RESTORE CONTROLFILE FROM ‘备份控制文件路径’;
      • ALTER DATABASE MOUNT;
  • 还原与恢复
    • 还原数据文件:RESTORE DATABASE;
    • 应用归档日志:RECOVER DATABASE;(必要时指定归档路径或 UNTIL 子句)
  • 打开数据库
    • 正常打开:ALTER DATABASE OPEN;
    • 若控制文件/重做日志丢失且无法恢复,使用:ALTER DATABASE OPEN RESETLOGS;(会重置日志序列)
  • 补充
    • 若只有SPFILE备份:RMAN> RESTORE SPFILE FROM ‘spfile_xxx.bak’; 再 STARTUP NOMOUNT 继续。
    • 若需按时间点:RECOVER DATABASE UNTIL TIME ‘2025-12-09 10:00:00’; 或 UNTIL SCN/SEQUENCE。

Data Pump 逻辑恢复步骤

  • 准备
    • CentOS 创建目录对象并赋权:
      • sqlplus / as sysdba
      • CREATE OR REPLACE DIRECTORY dir AS ‘/oracledir’;
      • GRANT READ, WRITE ON DIRECTORY dir TO system;
    • .dmp 文件上传至该目录,并修正属主:chown -R oracle:oinstall /oracledir
  • 按场景导入
    • 整库导入(结构与数据):
      • impdp system/口令 DIRECTORY=dir FULL=Y DUMPFILE=fulldb.dmp LOGFILE=imp_full.log PARALLEL=4
    • 按用户导入:
      • impdp system/口令 DIRECTORY=dir SCHEMAS=scott LOGFILE=imp_scott.log
    • 按表空间导入:
      • impdp system/口令 DIRECTORY=dir TABLESPACES=users LOGFILE=imp_tbs.log
  • 常用选项
    • REMAP_SCHEMA、REMAP_TABLESPACE、TABLE_EXISTS_ACTION=REPLACE/TRUNCATE
    • 若导入对象已存在,可先 DROP/CREATE 或使用 REMAP/EXISTS_ACTION 处理
  • 注意
    • Data Pump 不恢复 SYS 对象、口令文件、参数文件、控制文件、联机日志;仅恢复逻辑对象与数据。

文件级拷贝冷恢复步骤

  • 适用前提
    • 拥有数据库关闭时的一致拷贝(所有数据文件、控制文件、联机日志、SPFILE/PFILE、口令文件)。
  • 操作步骤
    • 用备份覆盖目标目录(保持原路径或更新控制文件中的路径),必要时先备份当前受损文件。
    • 启动到 NOMOUNT(如有 SPFILE 放在 $ORACLE_HOME/dbs,或使用 PFILE 启动)。
    • 如有备份控制文件:STARTUP NOMOUNT → RESTORE CONTROLFILE FROM ‘路径’ → ALTER DATABASE MOUNT。
    • 打开数据库:
      • 文件一致且日志完好:ALTER DATABASE OPEN;
      • 无法恢复重做日志:ALTER DATABASE OPEN RESETLOGS;
    • 清理/重建临时表空间数据文件(若存在旧 temp 文件常导致 ORA-01187/01110):
      • 启动到 MOUNT,DROP TEMPFILE 后让实例自动重建,或 ALTER TABLESPACE TEMP ADD TEMPFILE ‘新路径’ SIZE …;
  • 提示
    • 若只有数据文件而无控制文件,可尝试从告警日志中提取 CREATE CONTROLFILE 脚本,修改路径与日志模式后执行重建控制文件,再 MOUNT/OPEN。

误删数据的快速恢复选项

  • 回收站恢复(表级)
    • 查看:SELECT * FROM RECYCLEBIN WHERE original_name=‘表名’;
    • 闪回:FLASHBACK TABLE 表名 TO BEFORE DROP;(可加 RENAME TO 新名)
  • 闪回查询/表到时间点
    • 查询历史:SELECT * FROM 表名 AS OF TIMESTAMP (SYSDATE - INTERVAL ‘1’ HOUR);
    • 回退表:FLASHBACK TABLE 表名 TO TIMESTAMP (SYSDATE - INTERVAL ‘1’ HOUR);(需启用行移动:ALTER TABLE 表名 ENABLE ROW MOVEMENT;)
  • 闪回数据库(库级)
    • 前提:已配置 DB_RECOVERY_FILE_DESTDB_RECOVERY_FILE_DEST_SIZE,并启用 FLASHBACK ON
    • 操作:STARTUP MOUNT → FLASHBACK DATABASE TO TIMESTAMP (SYSDATE - INTERVAL ‘1’ HOUR); → ALTER DATABASE OPEN RESETLOGS;
  • 事务级回滚
    • 若会话未提交且仍持有事务:ROLLBACK;(无法跨会话/已提交事务)

0