news 2026/8/25 6:01:31

Oracle RMAN备份脚本、RMAN还原恢复测试、RMAN常用语句

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Oracle RMAN备份脚本、RMAN还原恢复测试、RMAN常用语句

Oracle RMAN备份脚本、rman还原恢复测试、rman常用语句

一、全量备份脚本

前提,已经准备好备份目录/backup(可以是nfs挂载),确保空间和权限没问题

su - oracle mkdir /home/oracle/scripts ##全量备份脚本 dbname表示数据库名称,自行修改即可#### cat > /home/oracle/scripts/backup_full.sh <<'EOF' #!/bin/bash source /home/oracle/.bash_profile echo '' echo `date` ": ***** dbname_fullbackup start *****" rman nocatalog target / << eof run{ allocate channel c1 type disk ; allocate channel c2 type disk ; allocate channel c3 type disk ; allocate channel c4 type disk ; set limit channel c1 kbytes 52428800; set limit channel c2 kbytes 52428800; set limit channel c3 kbytes 52428800; set limit channel c4 kbytes 52428800; backup database format '/backup/dbname_full_%T_%s_%p_%t'; release channel c1; release channel c2; release channel c3; release channel c4; sql 'alter system archive log current'; } run{ sql 'alter system archive log current'; allocate channel c1 type disk format '/backup/dbname_arch_%T_%s_%p_%t'; set limit channel c1 kbytes 23194304; backup archivelog all delete input; release channel c1; backup current controlfile format '/backup/dbname_control%U'; backup spfile format '/backup/dbname_spfile%U'; } exit eof echo '' echo `date` ": ***** dbname_fullbackup end *****" EOF chmod u+x /home/oracle/scripts/*.sh

二、增量归档日志备份脚本

前提,已经准备好备份目录/backup(可以是nfs挂载),确保空间和权限没问题

su - oracle mkdir /home/oracle/scripts ##增量归档日志备份脚本 dbname表示数据库名称,自行修改即可#### cat > /home/oracle/scripts/backup_arch.sh<<'EOF' #!/bin/bash source /home/oracle/.bash_profile echo '' echo `date` ": ***** dbname_archbackup start *****" rman nocatalog target / << eof run{ sql 'alter system archive log current'; allocate channel c1 type disk format '/backup/dbname_arch_%T_%s_%p_%t'; set limit channel c1 kbytes 23194304; backup archivelog all delete input; release channel c1; backup current controlfile format '/backup/dbname_control%U'; backup spfile format '/backup/dbname_spfile%U'; } exit eof echo '' echo `date` ": ***** dbname_archbackup end *****" EOF chmod u+x /home/oracle/scripts/*.sh

三、大文件表空间,优化全量备份速度的方法

备注:通过切片的方式(section size 51200M),提高并行备份速度

run{ allocate channel c1 type disk ; allocate channel c2 type disk ; allocate channel c3 type disk ; allocate channel c4 type disk ; backup database section size 51200M format '/backup/dbname_full_%T_%s_%p_%t'; release channel c1; release channel c2; release channel c3; release channel c4; sql 'alter system archive log current'; }

四、rman全量还原和恢复测试流程

前期准备工作

1、准备rman恢复测试服务器(磁盘空间一定要满足,cpu和内存可以低于生产环境) 2、规划用于还原数据库的存储目录(例如/oradata/orcl) 3、如果全量备份是保存至nfs上,将nfs挂载至rman恢复测试服务器(建议挂载目录与生产环境一致,例如/backup)。如果是其它方式,需要提前准备好用于rman还原的通道 4、安装待还原的Oracle数据库的对应版本的Oracle软件 5、配置.bash_profile环境变量(根据生产环境内容修改一下即可) 6、配置pfile文件(根据生产环境生产,进行适当修改即可,主要是内存大小这些) 7、创建必要的目录(根据pfile文件的配置,对应的目录,提前创建完毕,例如归档目录,数据文件目录,adump目录等) 8、启动数据库到nomount状态(建议关闭job,设置job_queue_processes=0)

9、还原控制文件

查看生产环境最新的控制文件备份 ls -ltr /backup/*control* rman target / restore controlfile from '/backup/xxxxxxxxxxx'; 通过上述命令还原 sql 'alter database mount'; 将数据库启动到mount状态

10、还原数据库(即还原数据文件)

如果还原数据库的存储目录与生产环境不一致,需要在还原的时候,提前set newname重命名数据文件名称 例如+DATA磁盘,还原环境为/oradata/orcl,可以通过如下方式,在生产环境中执行,一次性获得set newname重命名数据文件名称的命令。 select 'set newname for datafile '||file_id||' to '''||replace(file_name,'+DATA','/oradata/orcl')||''''||';' str from dba_data_files order by file_id; 示例: cat >rman_restore.sh <<'EOF' rman target / <<eof run{ allocate channel c1 device type disk; allocate channel c2 device type disk; allocate channel c3 device type disk; allocate channel c4 device type disk; set newname for datafile 1 to '/oradata/orcl/system01.dbf'; set newname for datafile 2 to '/oradata/orcl/sysaux01.dbf'; set newname for datafile 3 to '/oradata/orcl/undotbs01.dbf'; set newname for datafile 4 to '/oradata/orcl/users01.dbf'; ....... restore database; switch datafile all; release channel c1; release channel c2; release channel c3; release channel c4; } exit eof EOF chmod u+x rman_restore.sh 后台方式执行 nohup sh rman_restore.sh &

11、恢复数据库(不完全恢复)

查询数据库的归档日志备份清淡 list backup of archivelog all; 根据查询出来的,选择一个redo序列号,最为恢复数据库的结束位置,进行数据库恢复,如下: run { set until sequence 16666 thread 1; recover database; } 备注: 1)set until sequence 16666,表示16665归档日志恢复出来,且应用;16666序列号日志,不恢复; 2)对于RAC的恢复,可能需要类似如下格式 run { set until sequence 16665 thread 1; set until sequence 55253 thread 2; recover database; } 备注:也可以后台方式执行

12、收尾工作

1)重建临时文件tempfile(临时文件不会还原) SQL> select name from v$tempfile; NAME -------------------------------------------------------------------------------- +DATA/temp01.dbf alter tablespace temp add tempfile '/oradata/orcl/temp01.dbf' size 30g autoextend off; alter database tempfile '+DATA/temp01.dbf' drop; select name from v$tempfile; NAME -------------------------------------------------------------------------------- /oradata/zhdd/temp01.dbf 2)数据库块校验和验证(可选) vi validate.sh rman target / <<eof run{ allocate channel c1 device type disk; allocate channel c2 device type disk; allocate channel c3 device type disk; allocate channel c4 device type disk; backup validate database; release channel c1; release channel c2; release channel c3; release channel c4; } exit eof

五、常用RMAN语句

crosscheck backup; 交叉核对(校验)所有备份集。RMAN 会检查控制文件或恢复目录中记录的备份信息,并与磁盘或磁带上的实际物理文件进行比对。如果物理文件存在,状态保持为 AVAILABLE;如果物理文件丢失或被外部命令(如 rm)删除,RMAN 会将其状态标记为 EXPIRED(过期/无效)。此命令本身不会删除任何文件 delete noprompt expired backup; 它不会删除实际的物理文件,而是清理 RMAN 资料库(控制文件或恢复目录)中那些因为物理文件丢失而被标记为 EXPIRED 的元数据记录。noprompt 参数的作用是抑制交互确认提示,使命令直接执行 CONFIGURE RETENTION POLICY TO REDUNDANCY 2; 告诉 RMAN 必须为每个数据文件保留至少 2 份可用的备份。当备份份数超过 2 份时,最旧的备份将被 RMAN 判定为“过时(Obsolete)”,可以被安全清理 report obsolete; 根据当前配置的保留策略(如上面的 REDUNDANCY 2),列出所有不再需要用于恢复的备份集、数据文件副本和归档日志。这是一个只读操作,仅用于预览,不会删除任何文件 delete noprompt obsolete; 根据当前的保留策略,删除那些被判定为不再需要的备份物理文件,同时更新控制文件或恢复目录中的记录。配合 noprompt 参数,常用于自动化备份脚本中 delete archivelog all; RMAN 会尝试删除当前资料库中记录的所有归档日志物理文件,并在删除前弹出交互提示,要求用户手动输入 YES 或 NO 进行确认。 delete noprompt archivelog all; 与上一条命令功能相同,但增加了 noprompt 参数,跳过了交互确认步骤,直接执行删除。 delete noprompt archivelog all completed before 'sysdate-3'; 根据归档日志的完成时间(completion_time)进行过滤,仅删除 3 天前的归档日志。需要注意的是,如果当前环境配置了 Data Guard(备库),且备库尚未应用这些归档日志,或者存在保留策略的限制,该命令可能会受到限制而无法删除 delete noprompt FORCE archivelog all completed before 'sysdate-3'; 在上一条命令的基础上增加了 FORCE 关键字。即使当前的归档删除策略(Archivelog Deletion Policy)或 Data Guard 环境限制了这些日志的删除(例如备库尚未应用),RMAN 也会强制忽略这些限制并执行删除操作,使用 FORCE 参数需要非常谨慎。如果强制删除了尚未被备库应用(Applied)或尚未被备份的归档日志,可能会导致数据库无法进行完整的时间点恢复(Point-in-Time Recovery),或者导致主备库同步断裂

六、RMAN备份作业检查语句

--通过查询v$rman_backup_job_details视图,查询最近7天的rman备份作业执行情况 set linesize 200 pagesize 999 col input_bytes_display format a10 col output_bytes_display format a10 col time_taken_display format a10 select to_char(start_time,'yyyymmdd hh24:mi:ss') time,trunc(elapsed_seconds/60) duration_min,input_type,status,input_bytes_display,output_bytes_display,time_taken_display from v$rman_backup_job_details where start_time>trunc(sysdate)-7 order by time;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/25 6:00:48

从设计文档到技术交底书:工程师必备的专利转化实战指南

1. 从“纸上谈兵”到“落地生根”&#xff1a;技术交底书的真实价值在技术研发和知识产权领域&#xff0c;我们常常遇到一个尴尬的局面&#xff1a;工程师们埋头苦干&#xff0c;写出了一份逻辑严密、细节丰富的设计文档&#xff0c;但到了申请专利或者向其他团队进行技术交接时…

作者头像 李华
网站建设 2026/8/25 6:00:43

Spring AI 11 · 元数据过滤 FilterExpression

11 元数据过滤 FilterExpression&#x1f3af; 学完能做什么&#xff1a;用字符串表达式和 FilterExpressionBuilder 两种方式&#xff0c;按 metadata 精确圈定检索范围&#xff0c;实现多租户、分类、时间过滤。 ⏱️ 预计耗时&#xff1a;40 分钟&#xff08;含动手&#x…

作者头像 李华
网站建设 2026/8/25 6:00:04

Spring Boot在线问诊系统设计:多语言、弱网与医疗协同的实战挑战

最近在梳理过往项目时&#xff0c;翻到了一个几年前参与设计的“少数民族地区在线问诊系统”。当时&#xff0c;团队接到这个需求&#xff0c;第一反应是&#xff1a;这不就是一个标准的在线问诊平台吗&#xff1f;无非是用户注册、医生入驻、图文/视频问诊、开方购药。然而&am…

作者头像 李华
网站建设 2026/8/25 5:59:42

Godot 4 实战:从零构建像素风农场模拟游戏核心系统

最近在尝试用 Godot 4 复刻《星露谷物语》的核心玩法时&#xff0c;发现网上资料要么是零散的片段&#xff0c;要么停留在 Godot 3 版本&#xff0c;对于想系统学习 2D 像素风农场模拟游戏开发的开发者来说&#xff0c;很难找到一个从零到一的完整闭环教程。本文将基于 Godot 4…

作者头像 李华
网站建设 2026/8/25 5:59:17

LangChain Agent集成MCP协议:实现AI工具即插即用的标准化方案

如果你正在开发AI Agent&#xff0c;可能已经遇到了这样的瓶颈&#xff1a;Agent能理解你的指令&#xff0c;也能调用几个基础工具&#xff0c;但一旦需要连接数据库、读取文件、调用第三方API&#xff0c;就得写大量胶水代码。更头疼的是&#xff0c;每个新工具都得重新集成、…

作者头像 李华
网站建设 2026/8/25 5:55:48

拼多多算法团队招聘:推荐、搜索与广告算法核心技术解析

1. 项目背景与团队定位拼多多作为国内电商领域的头部平台&#xff0c;其核心算法团队承载着平台最关键的智能决策系统研发工作。这个团队直接负责商品推荐、搜索排序、广告投放、用户画像等核心业务场景的算法优化&#xff0c;日均处理超百亿级数据请求。2026届春招和2027届实习…

作者头像 李华