平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Oracle数据库物理备份与恢复实践教程”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
在这个场景下,RMAN(Recovery Manager)是Oracle 8i以后DBA的重要工具,位于$ORACLE_HOME/bin目录下,常用来备份、还原和恢复操作。

RMAN组成:
核心组件:
-- 查看控制文件保留时间
SHOW PARAMETER control_file_record_keep_time;
-- 修改保留时间
ALTER SYSTEM SET control_file_record_keep_time=14 SCOPE=BOTH;
RMAN借助快照控制文件解决备份期间控制文件一致性问题。
-- 创建表空间
CREATE TABLESPACE rmantbs DATAFILE '/backup/rmantbs01.dbf' SIZE 100M AUTOEXTEND OFF;
-- 创建RMAN用户
CREATE USER rman IDENTIFIED BY rman DEFAULT TABLESPACE rmantbs;
ALTER USER rman QUOTA UNLIMITED ON rmantbs;
GRANT connect,resource,recovery_catalog_owner TO rman;
-- 创建恢复目录
RMAN> CREATE CATALOG TABLESPACE rmantbs;
rman target / catalog rman/rman@rman
RMAN> REGISTER DATABASE;
-- 查看所有配置
RMAN> SHOW ALL;
-- 配置保留策略
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
-- 配置控制文件自动备份
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
-- 全库备份
RMAN> BACKUP DATABASE;
-- 备份指定表空间
RMAN> BACKUP TABLESPACE users;
-- 备份归档日志
RMAN> BACKUP ARCHIVELOG ALL;
-- 压缩备份
RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE;
-- 恢复数据库
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
-- 恢复数据文件
RMAN> RESTORE DATAFILE 5;
RMAN> RECOVER DATAFILE 5;
场景:服务器意外断电导致所有数据库文件丢失
恢复步骤:
-- 恢复SPFILE
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE SPFILE FROM AUTOBACKUP;
-- 恢复控制文件
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
-- 恢复数据文件
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
-- 打开数据库
SQL> ALTER DATABASE OPEN RESETLOGS;
-- 在线恢复
SQL> ALTER DATABASE DATAFILE '/path/file.dbf' OFFLINE;
RMAN> RESTORE DATAFILE 5;
RMAN> RECOVER DATAFILE 5;
SQL> ALTER DATABASE DATAFILE '/path/file.dbf' ONLINE;
RMAN> RESTORE TABLESPACE users;
RMAN> RECOVER TABLESPACE users;
-- 检查坏块
SQL> SELECT * FROM v$database_block_corruption;
-- 修复坏块
RMAN> BLOCKRECOVER DATAFILE 17 BLOCK 130;
-- 0级备份
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;
-- 1级增量备份
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
RUN {
SET UNTIL TIME "TO_DATE('2023-01-01 12:00:00','YYYY-MM-DD HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
}借助RMAN实现单机到RAC集群的迁移:
-- 检查7天内备份情况
SELECT /*+ RULE */ r.session_recid,
TO_CHAR(r.start_time, 'yyyy-mm-dd HH24:MI:SS') start_time,
r.status,
r.input_type,
r.input_bytes_display input_size
FROM v$rman_backup_job_details r
WHERE start_time > SYSDATE - 7
ORDER BY start_time;
-- 交叉验证备份
RMAN> CROSSCHECK BACKUP;
-- 删除过期备份
RMAN> DELETE EXPIRED BACKUP;
-- 删除废弃备份
RMAN> DELETE OBSOLETE;
VALIDATE命令检查备份完整性落到代码里,Oracle RMAN提供了强大而灵活的备份恢复解决方案。借助合理设置和规范操作,能够确保数据库在各种故障场景下的更快恢复。关键是要建立完善的备份策略,同时定期验证备份的有效性,确保在真正需时能够成功恢复数据。
到此这篇关于Oracle数据库物理备份与恢复实战指南的文章就介绍到这了,更多相关Oracle数据库物理备份与恢复内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多兼容脚本之家!