当前位置: 首页 > news >正文

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;
http://www.cnnetsun.cn/news/4207023.html

相关文章:

  • 从设计文档到技术交底书:工程师必备的专利转化实战指南
  • Spring AI 11 · 元数据过滤 FilterExpression
  • Spring Boot在线问诊系统设计:多语言、弱网与医疗协同的实战挑战
  • Godot 4 实战:从零构建像素风农场模拟游戏核心系统
  • LangChain Agent集成MCP协议:实现AI工具即插即用的标准化方案
  • 拼多多算法团队招聘:推荐、搜索与广告算法核心技术解析
  • MLLM引导语义校正:用大模型优化AI视频生成逻辑
  • 2026年采购智能鞋头后跟定型机,选哪家工厂性价比更高?
  • 山东高考志愿填报机构口碑与适用分析
  • 抖音批量下载工具实战:主页合集一键归档
  • C#图像高速存储落盘:提高图像从内存中落盘存储到硬盘速度的几个方法
  • 前端面试实战:技术深度与表达策略
  • AssetRipper完整教程:免费开源的Unity资产提取工具,5分钟从.assets文件里找回整个游戏
  • FlywayGuard:IDEA插件解决Flyway SQL冲突
  • 本地AI相册实战:基于ONNX与Tesseract的私有化图片管理方案
  • 2026之后,通用咨询公司难再做B2B全案
  • 吴恩达AI Agent技能开发教程:从工具调用到实战部署全解析
  • Substance 3D Designer 风格化木板材质制作全流程解析
  • RocketMQ事务消息原理与面试深度解析
  • AI智能体本地部署与实战:从环境搭建到API集成全流程
  • 2026福州工程建筑材料检测排名 TOP5 CMA 资质提供钢材检测、水泥检测、砂石检测 全覆盖联系方式推荐.txt
  • Kubernetes 靠什么活下来?拆解 K8s 集群可靠性设计的 5 个核心机制
  • GMK冷门键帽团购全解析:秘密项目风险与价值评估指南
  • DeepSeek-TUI:终端AI编程助手,重塑开发工作流
  • 2026年前端面试:从八股文到实战理解的转变
  • Carla仿真系列:10_Carla 双目障碍物测距,视差图还原真实距离
  • 第18章:FastAPI异步数据库访问与连接池
  • 从被动审核到主动风控:构建下一代视频内容安全体系
  • 简历优化全攻略:提升求职成功率的实用技巧
  • Java全栈开发工程师面试核心要点与实战策略