鸢尾花分类实战:从数据探查到模型部署的完整工程流水线
2026/10/22 18:18:11
前提:Oracle Database 已安装(参考第16章安装步骤)。
本章重点依赖 RMAN(Recovery Manager)工具,该工具随 Oracle 自动安装,无需额外安装。
# 在操作系统命令行执行(无需进入 SQL*Plus)rman target /若成功连接到目标数据库,说明 RMAN 可用。
-- 以 sysdba 身份登录sqlplus/assysdba-- 查看当前模式ARCHIVE LOG LIST;-- 若为 NOARCHIVELOG,需切换(需重启)SHUTDOWNIMMEDIATE;STARTUP MOUNT;ALTERDATABASEARCHIVELOG;ALTERDATABASEOPEN;-- 设置归档日志路径(可选,默认在 $ORACLE_HOME/dbs)ALTERSYSTEMSETlog_archive_dest_1='LOCATION=/u01/app/oracle/archivelog'SCOPE=SPFILE;-- 注意:Windows 路径如 'LOCATION=D:\oracle\arch'⚠️重要:只有处于
ARCHIVELOG模式的数据库才能进行时间点恢复或增量备份恢复。
| 组件 | 说明 |
|---|---|
| Target Database | 要备份/恢复的数据库 |
| Recovery Catalog(可选) | 存储备份元数据的独立数据库(提高可靠性) |
| Media Management Layer(MML) | 用于磁带备份的接口(如 NetBackup) |
本章使用无 Recovery Catalog 模式(默认,备份信息存于控制文件)。
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 target /# 远程连接rman target sys/password@orclSHOW ALL; -- 显示所有 RMAN 配置-- 保留最近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_1.bak)RUN { -- 备份数据文件、控制文件、SPFILE BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT; -- DELETE INPUT:备份后删除已备份的归档日志,节省空间 }注释说明:
PLUS ARCHIVELOG:在备份前后切换日志,确保包含所有归档。- 若未开启归档模式,此命令会失败。
-- 每周日做 Level 0 BACKUP INCREMENTAL LEVEL 0 DATABASE; -- 周一至周六做 Level 1(差异) BACKUP INCREMENTAL LEVEL 1 DATABASE;BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;💡建议:Level 0 每周一次,Level 1 每天一次。
-- 自动包含在 DATABASE 备份中,但建议单独备份 BACKUP CURRENT CONTROLFILE; BACKUP SPFILE;或配置自动备份:
CONFIGURE CONTROLFILE AUTOBACKUP ON; -- 默认路径:$ORACLE_HOME/dbs/c-<DBID>-<DATE>限制:只能恢复到最后一次全备状态,无法恢复之后的事务。
-- 步骤1:启动到 NOMOUNT STARTUP FORCE NOMOUNT; -- 步骤2:还原控制文件(如有) RESTORE CONTROLFILE FROM '/backup/rman/c-1234567890-20260118.bak'; ALTER DATABASE MOUNT; -- 步骤3:还原并恢复数据库 RESTORE DATABASE; RECOVER DATABASE; -- 实际无效(无归档),但 RMAN 允许执行 -- 步骤4:以 RESETLOGS 打开(必须) ALTER DATABASE OPEN RESETLOGS;⚠️注意:
RESETLOGS会重置日志序列号,旧备份失效。
-- 假设 users01.dbf 损坏 STARTUP MOUNT; -- 若实例未启动 -- 还原并恢复整个数据库 RESTORE DATABASE; RECOVER DATABASE; -- 应用所有归档日志到最新 ALTER DATABASE OPEN; -- 无需 RESETLOGS-- 数据库需处于 OPEN 状态(其他表空间可用) SQL 'ALTER TABLESPACE users OFFLINE IMMEDIATE'; RESTORE TABLESPACE users; RECOVER TABLESPACE users; SQL 'ALTER TABLESPACE users ONLINE';RUN { SET UNTIL TIME "TO_DATE('2026-01-17 14:30:00', 'YYYY-MM-DD HH24:MI:SS')"; RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS; }RUN { SET UNTIL SCN 1234567; RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS; }RUN { SET UNTIL SEQUENCE 100 THREAD 1; RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS; }🔒关键:所有不完全恢复后必须使用
OPEN RESETLOGS。
-- 创建测试表CREATETABLEsales_logASSELECT*FROMall_objectsWHEREROWNUM<=1000;BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG;-- 假设当前时间为 2026-01-18 15:00:00INSERTINTOsales_logSELECT*FROMall_objectsWHEREROWNUM<=500;COMMIT;-- 记录 SCN(可选)SELECTcurrent_scnFROMv$database;-- 假设返回 2000000# 在 OS 层删除rm$ORACLE_BASE/oradata/XE/users01.dbf-- 启动 RMAN rman target / -- 恢复到 14:55(故障前5分钟) RUN { SET UNTIL TIME "TO_DATE('2026-01-18 14:55:00', 'YYYY-MM-DD HH24:MI:SS')"; STARTUP FORCE MOUNT; RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS; } -- 验证数据 -- sales_log 应只有初始1000行,新增500行丢失(符合预期)-- 删除前查询 SCNSELECTcurrent_scnFROMv$database;-- 假设 SCN = 2000100DROPTABLEimportant_table;-- 误操作!RUN { 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 数据库的数据安全与业务连续性。