如何在centos上恢复oracle
导读:在 CentOS 上恢复 Oracle 的可执行方案 一、先判断你的备份类型与恢复路径 使用 RMAN 物理备份(含数据文件、控制文件、归档日志、SPFILE):优先走 RMAN 的 restore/recover/open 流程,支持...
在 CentOS 上恢复 Oracle 的可执行方案
一、先判断你的备份类型与恢复路径
- 使用 RMAN 物理备份(含数据文件、控制文件、归档日志、SPFILE):优先走 RMAN 的 restore/recover/open 流程,支持到指定时间点恢复(PITR)。若只有数据文件与控制文件,也可在 NOMOUNT 下用 RMAN 还原控制文件后继续恢复。
- 仅有 逻辑导出文件(DMP,Data Pump):使用 impdp 导入到已存在的数据库/表空间/用户中,适合跨版本迁移或对象级恢复。
- 控制文件丢失或损坏:可用 RMAN 还原控制文件;若无法还原,可基于告警日志中的 CREATE CONTROLFILE 脚本重建,注意 NORESETLOGS/RESETLOGS 的选择与临时表空间处理。
- 异机恢复:在新主机仅安装 Oracle 软件(不建库),准备 pfile、备份集、密码文件,从 NOMOUNT 启动后 RMAN 还原并恢复,最后 OPEN RESETLOGS。
二、RMAN 物理恢复步骤(含异机与时间点恢复)
- 准备环境
- 安装同版本 Oracle 软件(异机仅装软件),创建必要目录(如 $ORACLE_BASE/oradata/$ORACLE_SID、$ORACLE_BASE/fast_recovery_area/$ORACLE_SID、$ORACLE_BASE/admin/$ORACLE_SID/adump),设置 ORACLE_SID、ORACLE_HOME、PATH。
- 将备份集(含数据文件、归档日志、控制文件备份、SPFILE 备份)与 密码文件 orapw$ORACLE_SID 传到目标机;必要时用 create pfile from spfile 导出的 pfile.ora 调整路径。
- 启动到 NOMOUNT 并还原控制文件
- SQL> startup nomount pfile=‘/path/pfile.ora’
- RMAN> restore controlfile from ‘/path/ctl_XXXX.bak’;
- RMAN> alter database mount;
- 还原与恢复
- RMAN> restore database;
- RMAN> recover database; (若需时间点恢复:RMAN> recover database until time ‘2026-01-06 10:00:00’; )
- 打开数据库
- 若是 完整恢复到当前时间点 且控制文件新生成:RMAN> alter database open;
- 若经历了 不完全恢复(如按时间/SCN):RMAN> alter database open resetlogs;
- 异机要点
- 目标库目录结构需与备份一致或通过 SET NEWNAME 改写;
- 若源库是 RAC,目标机为单机,恢复时通常需 cluster=no;
- 恢复后按需重建 tempfile、检查 undo_tablespace、listener。
三、仅用 Data Pump 的逻辑恢复步骤(DMP 文件)
- 准备目标库对象
- 以 SYSDBA 登录:sqlplus / as sysdba
- 创建目录对象:create directory dir as ‘/oracledir’;
- 创建表空间与用户(示例):
- create tablespace cwbaseoe73 datafile ‘/oracledir/cwbaseoe73.dbf’ size 1024M autoextend on next 1024M;
- create user lcoe739999 default tablespace cwbaseoe73 identified by Test6530;
- grant dba,resource,connect,create any table,create any view,create any sequence,unlimited tablespace to lcoe739999;
- 执行导入
- impdp system/Test6530@127.0.0.1/ora18c directory=dir schemas=lcoe739999 dumpfile=CWBASEOE73_201906.DMP logfile=20190622.txt
- 如为 RAC 环境,可在任意节点执行,必要时加 cluster=no;若对象已存在会报 ORA-31684,可先 drop 或在导入时处理。
四、常见故障场景与要点
- 控制文件丢失或损坏
- 有 RMAN 备份:还原控制文件后 mount→restore→recover→open/resetlogs;
- 无 RMAN 备份:从 alert_.log 中复制最后的 CREATE CONTROLFILE 脚本,按实际路径修改;若 REDO 日志丢失,将脚本中的 NORESETLOGS 改为 RESETLOGS;DATAFILE 段中务必 剔除临时表空间文件,打开后重建临时文件:alter tablespace TEMP add tempfile ‘…’ reuse;
- 临时表空间文件导致启动失败
- 恢复时若旧 temp01.dbf 仍在,可能报 ORA-01187/ORA-01110;删除旧临时文件后启动,Oracle 会自动重建;
- 目录与权限
- 上传/拷贝备份后执行:chown -R oracle:oinstall /oracledir;确保 $ORACLE_HOME/dbs/orapw$ORACLE_SID 与目标库 ORACLE_SID 一致;
- 归档与恢复窗口
- 生产库建议开启 ARCHIVELOG,并使用 Fast Recovery Area 统一管理备份与归档,便于 RMAN 完整恢复与时间点恢复。
五、关键注意事项
- 恢复前先做好当前环境快照(如当前 spfile/pfile、控制文件、数据文件清单),避免不可逆覆盖。
- 不完全恢复(时间/SCN)后必须以 OPEN RESETLOGS 打开,并尽快做一次 全备。
- 异机恢复注意 字节序/平台差异、字符集一致性、以及 COMPATIBLE 参数匹配。
- 导入导出时注意 schema 存在性、表空间可用空间、以及 权限 配置。
- 任何操作建议在维护窗口执行,并做好 告警日志 与 RMAN 日志 留存。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在centos上恢复oracle
本文地址: https://pptw.com/jishu/788004.html
