Ubuntu Oracle数据库恢复步骤是什么
导读:Ubuntu 上 Oracle 数据库恢复步骤 一 准备与环境检查 切换到 oracle 用户并准备环境: 命令:su - oracle 设置 Oracle 环境变量(依据实际安装路径调整):export ORACLE_SID=ORCL...
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 校验,确保无损坏且可访问。
- RMAN 中执行:
- 归档与恢复前提:
- 数据库需处于 ARCHIVELOG 模式以执行时间点恢复;RMAN 的 RESTORE 用于将备份复制到数据文件/控制文件/归档日志位置,随后通过 RECOVER 应用重做日志完成一致性恢复。
二 使用 RMAN 进行物理恢复(整库/数据文件/控制文件)
- 场景 A 控制文件丢失或损坏
- 启动到 NOMOUNT:
STARTUP NOMOUNT; - 从自动备份恢复控制文件(若未设恢复目录,需先
SET DBID):RESTORE CONTROLFILE FROM AUTOBACKUP; - 或指定备份文件:
RESTORE CONTROLFILE FROM '/path/controlfile.bkp'; - 挂载数据库:
ALTER DATABASE MOUNT;
- 启动到 NOMOUNT:
- 场景 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=...)。
- 创建目录对象并赋权(示例目录 /u01/dpump):
四 时间点恢复与闪回
- 时间点恢复(不完全恢复)
- 在 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;
- 在 RMAN 中执行(示例恢复到 2025-12-25 10:00:00):
- 闪回数据库(需预先启用且具备相应闪回资源)
- 示例:
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与通道配置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Oracle数据库恢复步骤是什么
本文地址: https://pptw.com/jishu/782404.html
