探索“成人二区”:数字时代的隐秘角落与文化观察
Oracle 数据备份与恢复 — 语法知识点与
使用方法详解
环境准备Oracle 安装与归档模式配置前提Oracle Database 已安装参考
安装步骤。
本章重点依赖 RMANRecovery Manager工具该工具随 Oracle 自动安装无需额外安装。
验证 RMAN 是否可用# 在操作系统命令行执行无需进入 SQL*Plusrman target /若成功连接到目标数据库说明 RMAN 可用。
配置数据库为 ARCHIVELOG 模式推荐用于生产环境-- 以 sysdba 身份登录sqlplus/assysdba-- 查看当前模式ARCHIVE LOG LIST;-- 若为 NOARCHIVELOG需切换需重启SHUTDOWNIMMEDIATE;STARTUP MOUNT;ALTERDATABASEARCHIVELOG;ALTERDATABASEOPEN;-- 设置归档日志路径可选默认在 $ORACLE_HOME/dbsALTERSYSTEMSETlog_archive_dest_1LOCATION/u01/app/oracle/archivelogSCOPESPFILE;-- 注意Windows 路径如 LOCATIOND:\oracle\arch⚠️重要只有处于ARCHIVELOG模式的数据库才能进行时间点恢复或增量备份恢复。
RMAN 基础知识
RMAN 的优点自动管理备份文件无需手动命名支持压缩、加密、并行备份与 Oracle 块级一致性检查集成支持完全/部分/不完全恢复自动删除过期备份通过保留策略
RMAN 核心组件组件说明Target Database要备份/恢复的数据库Recovery Catalog可选存储备份元数据的独立数据库提高可靠性Media Management LayerMML用于磁带备份的接口如 NetBackup本章使用无 Recovery Catalog 模式默认备份信息存于控制文件。
RMAN 通道Channels通道是 RMAN 与存储设备之间的数据通路。
默认自动分配通道DEVICE TYPE DISK。
可手动配置并行通道提升速度。
RUN { ALLOCATE CHANNEL c1 DEVICE TYPE DISK; ALLOCATE CHANNEL c2 DEVICE TYPE DISK; BACKUP DATABASE; RELEASE CHANNEL c1; RELEASE CHANNEL c2; }
RMAN 常用命令与语法
连接到 RMAN# 本地连接操作系统认证rman target /# 远程连接rman target sys/passwordorcl
查看配置SHOW ALL; -- 显示所有 RMAN 配置
配置保留策略Retention Policy-- 保留最近7天的备份默认是 REDUNDANCY 1 CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; -- 或保留3份全备 CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
配置默认备份路径CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT /backup/rman/%U.bak; -- %U 是唯一文件名如 01d5s8a9_1_
bak
使用 RMAN 备份
全量备份Full Backup 案例备份整个数据库 归档日志RUN { -- 备份数据文件、控制文件、SPFILE BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT; -- DELETE INPUT备份后删除已备份的归档日志节省空间 }注释说明PLUS ARCHIVELOG在备份前后切换日志确保包含所有归档。
若未开启归档模式此命令会失败。
增量备份Incremental Backup✅ 类型Level 0物理全备作为增量基准Level 1Differential默认备份自上次 Level 0 或 Level 1 以来变化的块Cumulative备份自上次 Level 0 以来变化的块 案例Level 0 Level 1 差异增量-- 每周日做 Level 0 BACKUP INCREMENTAL LEVEL 0 DATABASE; -- 周一至周六做 Level 1差异 BACKUP INCREMENTAL LEVEL 1 DATABASE; 案例Cumulative 增量BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;建议Level 0 每周一次Level 1 每天一次。
备份控制文件和 SPFILE关键-- 自动包含在 DATABASE 备份中但建议单独备份 BACKUP CURRENT CONTROLFILE; BACKUP SPFILE;或配置自动备份CONFIGURE CONTROLFILE AUTOBACKUP ON; -- 默认路径$ORACLE_HOME/dbs/c-DBID-DATE
使用 RMAN 恢复
恢复 NOARCHIVELOG 模式数据库仅支持完全恢复限制只能恢复到最后一次全备状态无法恢复之后的事务。
案例数据库崩溃后恢复-- 步骤1启动到 NOMOUNT STARTUP FORCE NOMOUNT; -- 步骤2还原控制文件如有 RESTORE CONTROLFILE FROM /backup/rman/c-1234567890-
bak; ALTER DATABASE MOUNT; -- 步骤3还原并恢复数据库 RESTORE DATABASE; RECOVER DATABASE; -- 实际无效无归档但 RMAN 允许执行 -- 步骤4以 RESETLOGS 打开必须 ALTER DATABASE OPEN RESETLOGS;⚠️注意RESETLOGS会重置日志序列号旧备份失效。
恢复 ARCHIVELOG 模式数据库完全恢复 案例数据文件损坏完全恢复-- 假设 users
dbf 损坏 STARTUP MOUNT; -- 若实例未启动 -- 还原并恢复整个数据库 RESTORE DATABASE; RECOVER DATABASE; -- 应用所有归档日志到最新 ALTER DATABASE OPEN; -- 无需 RESETLOGS
部分恢复Tablespace / Datafile 级别 案例仅恢复 USERS 表空间-- 数据库需处于 OPEN 状态其他表空间可用 SQL ALTER TABLESPACE users OFFLINE IMMEDIATE; RESTORE TABLESPACE users; RECOVER TABLESPACE users; SQL ALTER TABLESPACE users ONLINE;
不完全恢复Incomplete Recovery(
基于时间的恢复Until TimeRUN { SET UNTIL TIME TO_DATE(
14:30:00, YYYY-MM-DD HH24:MI:SS); RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS; }(
基于 SCN 的恢复Until SCNRUN { SET UNTIL SCN 1234567; RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS; }(
基于日志序列的恢复Until SequenceRUN { SET UNTIL SEQUENCE 100 THREAD 1; RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS; }关键所有不完全恢复后必须使用OPEN RESETLOGS。
综合性案例场景模拟生产事故并恢复到故障前10分钟步骤1准备环境确保 ARCHIVELOG 模式-- 创建测试表CREATETABLEsales_logASSELECT*FROMall_objectsWHEREROWNUM1000;步骤2执行全量备份Level 0BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG;步骤3模拟业务操作记录时间-- 假设当前时间为
15:00:00INSERTINTOsales_logSELECT*FROMall_objectsWHEREROWNUM500;COMMIT;-- 记录 SCN可选SELECTcurrent_scnFROMv$database;-- 假设返回 2000000步骤4人为删除数据文件模拟磁盘故障# 在 OS 层删除rm$ORACLE_BASE/oradata/XE/users
dbf步骤5使用 RMAN 恢复到故障前基于时间-- 启动 RMAN rman target / -- 恢复到 14:55故障前5分钟 RUN { SET UNTIL TIME TO_DATE(
14:55:00, YYYY-MM-DD HH24:MI:SS); STARTUP FORCE MOUNT; RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS; } -- 验证数据 -- sales_log 应只有初始1000行新增500行丢失符合预期场景2误删表后基于 SCN 恢复步骤1记录删除前 SCN-- 删除前查询 SCNSELECTcurrent_scnFROMv$database;-- 假设 SCN 2000100DROPTABLEimportant_table;-- 误操作步骤2不完全恢复到 SCN 2000100RUN { SET UNTIL SCN 2000100; SHUTDOWN IMMEDIATE; STARTUP MOUNT; RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS; }✅ 结果important_table恢复存在。
常用维护命令命令作用LIST BACKUP;列出所有备份集LIST EXPIRED BACKUP;列出控制文件中有但物理不存在的备份CROSSCHECK BACKUP;同步物理文件与控制文件记录DELETE OBSOLETE;删除超过保留策略的备份DELETE EXPIRED BACKUP;清理控制文件中的无效记录
最佳实践
总结项目建议模式生产库必须启用ARCHIVELOG备份频率Level 0 每周Level 1 每天归档日志每小时备份控制文件启用AUTOBACKUP多路复用验证备份定期使用RESTORE VALIDATE DATABASE测试保留策略至少保留7天 2个全备周期监控使用V$RMAN_BACKUP_JOB_DETAILS查看历史任务通过以上系统化的 RMAN 备份与恢复方案可有效保障 Oracle 数据库的数据安全与业务连续性。
污污污免费软件-污污污免费软件应用