首页主机资讯centos下sqlplus恢复方法

centos下sqlplus恢复方法

时间2025-12-02 02:54:04发布访客分类主机资讯浏览1414
导读:CentOS 下使用 SQL*Plus 的恢复操作指南 一、准备与环境检查 以具备 SYSDBA 权限的用户登录:执行 sqlplus / as sysdba。 检查环境变量:echo $ORACLE_HOME、echo $PATH,必要...

CentOS 下使用 SQL*Plus 的恢复操作指南

一、准备与环境检查

  • 以具备 SYSDBA 权限的用户登录:执行 sqlplus / as sysdba
  • 检查环境变量:echo $ORACLE_HOMEecho $PATH,必要时在 ~/.bash_profile 中设置 ORACLE_HOMEORACLE_SIDPATH=$ORACLE_HOME/bin:$PATHsource 使其生效。
  • 确认实例状态:SELECT status FROM v$instance; 正常应为 OPEN,异常时可能为 MOUNTEDSTARTED
  • 查看告警与跟踪日志定位最近故障:SHOW PARAMETER background_dump_dest; SHOW PARAMETER user_dump_dest; ,日志通常位于 $ORACLE_BASE/diag/rdbms/< sid> /trace/。这些检查有助于明确恢复路径(介质恢复、不完全恢复或仅逻辑导入)。

二、RMAN 物理恢复流程(推荐)

  • 场景A 控制文件丢失或损坏
    1. rman target / 连接;2) 启动到 NOMOUNTSTARTUP NOMOUNT; ;3) 还原控制文件:RESTORE CONTROLFILE FROM '/path/controlfile.bkp'; ;4) 启动到 MOUNTALTER DATABASE MOUNT; ;5) 恢复数据库:RECOVER DATABASE; ;6) 以重置日志打开:ALTER DATABASE OPEN RESETLOGS; (若在线日志损坏/缺失)。
  • 场景B 数据文件丢失或损坏
    1. STARTUP MOUNT; ;2) 还原受损数据文件:RESTORE DATAFILE < file#|'/path/file.dbf'> ; ;3) 应用日志:RECOVER DATAFILE < file#|'/path/file.dbf'> ; ;4) ALTER DATABASE OPEN;
  • 场景C 表空间级在线恢复(数据库保持 OPEN)
    1. 离线表空间:ALTER TABLESPACE < ts_name> OFFLINE IMMEDIATE; (或 OFFLINE NORMAL 若允许一致性);2) 还原该表空间的数据文件:RESTORE TABLESPACE < ts_name> ; ;3) 恢复:RECOVER TABLESPACE < ts_name> ; ;4) 上线:ALTER TABLESPACE < ts_name> ONLINE;
  • 场景D 不完全恢复(时间点/SCN/序列)
    1. STARTUP MOUNT; ;2) 指定恢复目标:RECOVER DATABASE UNTIL TIME '2025-12-01 10:00:00'; UNTIL SCN < scn> UNTIL SEQUENCE < seq> THREAD < thread#> ;3) 打开数据库:ALTER DATABASE OPEN RESETLOGS;
  • 场景E 归档日志缺失
    • 若备份策略允许,可先从备份恢复归档:RMAN> RESTORE ARCHIVELOG FROM SEQUENCE < start_seq> UNTIL SEQUENCE < end_seq> ; 再执行 RECOVER。若无法补齐所需日志,只能执行不完全恢复(会丢失部分事务)。

三、SQL*Plus 手工恢复(无 RMAN 或仅部分备份)

  • 数据库级恢复(多数数据文件丢失,数据库无法 OPEN)
    1. STARTUP MOUNT; ;2) 使用操作系统拷贝将备份的数据文件还原至正确路径;3) RECOVER DATABASE; ;4) ALTER DATABASE OPEN;
  • 表空间级恢复(数据库保持 OPEN)
    1. ALTER TABLESPACE < ts_name> OFFLINE IMMEDIATE; ;2) OS 拷贝还原该表空间的数据文件;3) RECOVER TABLESPACE < ts_name> ; ;4) ALTER TABLESPACE < ts_name> ONLINE;
  • 数据文件级恢复(单个/少数文件)
    1. 可在 MOUNTOPEN 状态执行;2) RECOVER DATAFILE < file#|'/path/file.dbf'> ; ;3) 若文件在 OPEN 状态被离线,恢复后 ALTER DATABASE DATAFILE < file#> ONLINE;
  • 非归档模式限制与处理
    • 非归档模式下只能做“全备的完整还原”,还原后可能缺失联机重做日志;需在 MOUNT 状态对每个受损联机日志组执行:ALTER DATABASE CLEAR LOGFILE GROUP < n> ; (RMAN 下该过程会自动完成)。

四、逻辑导入恢复(Data Pump)

  • 适用:仅有逻辑备份(如 expdp 导出的 .dmp 文件),或需要在新库/新实例中重建对象与数据。
  • 基本步骤
    1. 在目标库创建目录对象:CREATE OR REPLACE DIRECTORY dumpdir AS '/oracledir'; (确保 Oracle 用户对目录有读写权限);2) 使用 impdp 导入:impdp system/< pwd> @< tns> DIRECTORY=dumpdir DUMPFILE=xxx.dmp LOGFILE=imp.log [SCHEMAS=< schema> ] [TABLESPACES=< ts> ] [REMAP_SCHEMA=src:dst] [REMAP_TABLESPACE=src_ts:dst_ts];3) 导入完成后校验对象与数据一致性。
  • 注意:逻辑导入不会自动重建存储参数、回滚段、临时表空间等物理属性,需结合实际情况调整。

五、常见报错与快速排查

  • sqlplus: command not found:检查 ORACLE_HOMEPATH,或使用绝对路径 /u01/app/oracle/product/19c/dbhome_1/bin/sqlplus;必要时在 ~/.bash_profile 中导出变量并 source
  • ORA-01034: ORACLE not available:实例未启动,先 STARTUP NOMOUNTMOUNTOPEN;若介质损坏,按上文 RMAN/手工流程恢复后再打开。
  • ORA-00214: control file version ... inconsistent:控制文件版本不一致,保留最新控制文件并重新 STARTUP MOUNT 后恢复/打开。
  • ORA-01157/01116: cannot identify/lock data file:数据文件缺失或不可访问,先还原对应数据文件再 RECOVER,随后 ALTER DATABASE OPEN
  • TNS:listener does not currently know of SID/service:检查 tnsnames.oralistener.ora、实例 SID/SERVICE_NAME 与监听状态,必要时 lsnrctl status/start 并测试 tnsping < svc>

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


若转载请注明出处: centos下sqlplus恢复方法
本文地址: https://pptw.com/jishu/760846.html
centos filebeat如何安全传输数据 CentOS Syslog如何日志轮转

游客 回复需填写必要信息