93-Oracle 23ai free RMAN-实操

oracle RMAN备份恢复实操 首先,备份和恢复的时间较长,对于大型数据库来说可能会造成较长时间无法访问数据库的情况;其次,备份的容量较大,占用存储资源较多。因此,对于一些重要数据表的备份,我们可以考虑增量备份的方法。但在生产环境中,一般情况下数据库是不能随意进行关闭的,所以一般在安装好数据库之后直接就开启归档模式,更改归档需要在。增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加和者被修改的文件。是恢复,数据级的恢复。逻辑上恢复,比如应用归档日志、重做日志,全部同步,保持一致。是还原,文件级的恢复。 阅读详情

使用现在环境中的Oracle 23ai free,其中实例为FREE实例(CDB)与FREEPDB1(PDB)的RMAN备份恢复全流程实操记录。11g和19c的在其他的安装和备份记录中。

由于是free版本,show all,会提示2个warning

RMAN-06908: warning: operation will not run in parallel on the allocated channels
RMAN-06909: warning: parallelism require Enterprise Edition

一、备份恢复最佳实践框架​

环境要求​
  • 数据库处于ARCHIVELOG模式​(支持在线备份与时间点恢复)
  • 启用控制文件自动备份​(避免控制文件丢失导致恢复失败)
  • 使用Fast Recovery Area (FRA)​​ 集中管理备份文件
  • 定期验证备份有效性​
备份策略设计​

备份类型

频率

保留策略

命令示例

全量备份

每周日

保留30天

BACKUP DATABASE PLUS ARCHIVELOG

增量备份

每日

基于恢复窗口

BACKUP INCREMENTAL LEVEL 1

归档日志备份

每小时

备份后自动删除

BACKUP ARCHIVELOG ALL DELETE INPUT

二、全流程备份操作步骤​

​1. 预检查与配置​
-- 检查归档模式
SELECT log_mode FROM v$database; -- 需返回 ARCHIVELOG
--
LOG_MODE
------------
ARCHIVELOG
-- 若未启用归档模式:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

-- 配置FRA(Fast Recovery Area)
SQL> ALTER SYSTEM SET db_recovery_file_dest_size=50G;
SQL> ALTER SYSTEM SET db_recovery_file_dest='/opt/oracle/DB_FRA';
--
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
_instance_recovery_bloom_filter_size integer     1048576
db_recovery_auto_rekey               string      ON
db_recovery_file_dest                string      /opt/oracle/DB_FRA
db_recovery_file_dest_size           big integer 50G
recovery_parallelism                 integer     0
remote_recovery_file_dest            string
transaction_recovery                 string      ENABLED
2. RMAN配置脚本 
-- 连接RMAN
rman target / 

-- 关键配置
CONFIGURE CONTROLFILE AUTOBACKUP ON; 
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS; 
CONFIGURE DEVICE TYPE DISK PARALLELISM 4; 
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK;
--
[oracle@OL97 ~]$ rman target /

Recovery Manager: Release 23.0.0.0.0 - Production on Fri Jun 27 18:46:07 2025
Version 23.8.0.25.04
Copyright (c) 1982, 2025, Oracle and/or its affiliates.  All rights reserved.
connected to target database: FREE (DBID=1475650002)
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
using target database control file instead of recovery catalog
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored
…………
new RMAN configuration parameters are successfully stored
3. 执行全量备份(CDB+PDB)​​

RUN块语法,脚本整体包含在RUN { ... }块中,这是RMAN执行多命令的标准结构

可以保存为 /home/oracle/rman_backup_cdb.rman

rman target / @/home/oracle/rman_backup_cdb.rman log=/logs/rman_full_$(date +%Y%m%d).log
RUN {
    -- 手动分配4个通道(并行度=CPU核心数/2)
    ALLOCATE CHANNEL ch1 DEVICE TYPE DISK MAXPIECESIZE 10G;
    ALLOCATE CHANNEL ch2 DEVICE TYPE DISK MAXPIECESIZE 10G;
    ALLOCATE CHANNEL ch3 DEVICE TYPE DISK MAXPIECESIZE 10G;
    ALLOCATE CHANNEL ch4 DEVICE TYPE DISK MAXPIECESIZE 10G;
    
    -- 强制日志切换确保事务一致性(包含所有未归档日志
    SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
    
    -- 备份CDB及所有PDB(含压缩和归档日志,自动删除已备份的归档)
    BACKUP AS COMPRESSED BACKUPSET 
        DATABASE 
        PLUS ARCHIVELOG 
        DELETE ALL INPUT  -- 备份后自动删除已处理的归档日志
        TAG 'CDB_FULL_BACKUP'
        FORMAT '/orabackup/rman/%d_CDB_FULL_%T_%U.bkpset';  -- %d=库名, %T=时间, %U=唯一ID
    
    -- 单独备份PDB FREEPDB1(独立备份集便于快速恢复)
    BACKUP AS COMPRESSED BACKUPSET 
        PLUGGABLE DATABASE FREEPDB1 
        TAG 'PDB_FULL_BACKUP'
        FORMAT '/orabackup/rman/%d_FREEPDB1_%T_%U.bkpset';
    
    -- 独立备份控制文件与SPFILE(避免依赖主备份集)
    BACKUP CURRENT CONTROLFILE 
        TAG 'CTRL_BACKUP' 
        FORMAT '/orabackup/rman/control_%d_%T.ctl';
    BACKUP SPFILE 
        TAG 'SPFILE_BACKUP' 
        FORMAT '/orabackup/rman/spfile_%d_%T.bak';
    
    -- 备份后维护操作
    CROSSCHECK BACKUP;      -- 验证备份文件在磁盘上的有效性
    DELETE NOPROMPT EXPIRED BACKUP;  -- 清理失效备份(RMAN元数据与物理文件不一致)
    DELETE NOPROMPT OBSOLETE;        -- 按保留策略删除过期备份
    
    -- 释放所有通道
    RELEASE CHANNEL ch1;
    RELEASE CHANNEL ch2;
    RELEASE CHANNEL ch3;
    RELEASE CHANNEL ch4;
}
---以下为日志
input archived log thread=1 sequence=82 RECID=78 STAMP=1204557958
channel ORA_DISK_1: starting piece 1 at 27-JUN-25
channel ORA_DISK_1: finished piece 1 at 27-JUN-25
piece handle=/opt/oracle/DB_FRA/FREE/backupset/2025_06_27/o1_mf_annnn_FULL_BACKUP_n5wxx0pg_.bkp tag=FULL_BACKUP comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:45
Finished backup at 27-JUN-25
--
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00003 name=/opt/oracle/oradata/FREE/sysaux01.dbf
input datafile file number=00001 name=/opt/oracle/oradata/FREE/system01.dbf
input datafile file number=00011 name=/opt/oracle/oradata/FREE/undotbs01.dbf
input datafile file number=00007 name=/opt/oracle/oradata/FREE/users01.dbf
channel ORA_DISK_1: starting piece 1 at 27-JUN-25
 4. 验证备份有效性​
-- 检查备份集
LIST BACKUP TAG 'FULL_BACKUP';
-- 模拟恢复测试
VALIDATE BACKUPSET <备份集ID>; 
RESTORE DATABASE VALIDATE;  -- 不实际恢复,仅验证
--
RESTORE DATABASE VALIDATE;
Starting restore at 27-JUN-25
using channel ORA_DISK_1

channel ORA_DISK_1: starting validation of datafile backup set
channel ORA_DISK_1: reading from backup piece /opt/oracle/DB_FRA/FREE/backupset/2025_06_27/o1_mf_nnndf_TAG20250627T185158_n5wy0lk8_.bkp

三、恢复场景模拟​

​场景1:整库完全恢复(CDB级)
RUN {
    STARTUP MOUNT;
    RESTORE DATABASE;
    RECOVER DATABASE;
    ALTER DATABASE OPEN RESETLOGS; 
}
 场景2:PDB级恢复(FREEPDB1数据文件损坏)​​
-- 步骤1:离线PDB
ALTER PLUGGABLE DATABASE FREEPDB1 CLOSE IMMEDIATE;

-- 步骤2:RMAN恢复PDB
RUN {
    RESTORE PLUGGABLE DATABASE FREEPDB1;
    RECOVER PLUGGABLE DATABASE FREEPDB1;
    ALTER PLUGGABLE DATABASE FREEPDB1 OPEN;
}
 场景3:时间点恢复(误删表数据)​​
RUN {
    SET UNTIL TIME "TO_DATE('2025-06-27 14:00:00', 'YYYY-MM-DD HH24:MI:SS')";
    RESTORE DATABASE;
    RECOVER DATABASE;
    ALTER DATABASE OPEN RESETLOGS; 
}
 场景4:控制文件丢失恢复​
STARTUP NOMOUNT;
RESTORE CONTROLFILE FROM AUTOBACKUP;  -- 自动定位最新控制文件备份
ALTER DATABASE MOUNT;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;

 四、自动化备份脚本示例​

#!/bin/bash
export ORACLE_SID=FREE
export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree
export PATH=$ORACLE_HOME/bin:$PATH

rman target / <<EOF
RUN {
    BACKUP INCREMENTAL LEVEL 1 
        FOR RECOVER OF COPY WITH TAG 'DAILY_INCR' DATABASE;
    BACKUP ARCHIVELOG ALL NOT BACKED UP 1 TIMES;
    DELETE NOPROMPT OBSOLETE;  -- 自动清理过期备份
}
EXIT;
EOF

 cron定时任务配置​(每日凌晨1点执行)

--cron定时任务
0 1 * * * /home/oracle/rman_backup.sh >> /logs/rman_backup.log 2>&1

五、关键验证点与报告​

备份完整性检查

CROSSCHECK BACKUP;  -- 验证备份文件是否可用
REPORT OBSOLETE;    -- 列出过期备份
恢复后验证​
  • 检查PDB状态:SELECT name, open_mode FROM v$pdbs;
  • 验证业务表数据一致性
日志分析​
  • 检查RMAN日志:/logs/rman_backup.log
  • 查看告警日志:$ORACLE_BASE/diag/rdbms/free/FREE/trace/alert_FREE.log

六、最佳实践总结​

多租户环境特别建议​
  • CDB级备份保障容器元数据安全
  • PDB级备份支持快速单库恢复
灾难防护措施​
  • 备份文件异地存储(如SCP传输至远程服务器)
  • 每月全库恢复演练
性能优化​
  • 使用COMPRESSED BACKUPSET减少磁盘占用
  • 并行通道(PARALLELISM)加速备份
编程范式的本质:阴阳二分,相融相异 本文源于一次真实的设计讨论,上片博客沿着四种语言实现的路子走下去,本篇博客则沿着设计模式的路线归结到计算机哲学的根。需求本身小得不能再小:给一个存放数据库读取结果的 `Dict` 列表按字段名排序。但当我们把约束加码到"字段演进时排序器永不改动"时,这个需求就不再是工程问题,而成了三种编程范式的正面交锋。沿着这条线走下去,我们最终抵达了一个更根本的结论——**编程范式不是一张并列的表格,而是一棵树,而树的根只有两个。** 阅读详情

相关推荐

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 07 堆、栈、表、矩阵、集合、队列、数组、字符串、树、图、动态规划、结构体、元组的算法01

当前段必须包含所有字符的最后出现位置。1. 字符串分割成最多片段2. 基因序列功能域划分3. 文本段落划分4. 音频声道分离5. 图像色彩分区6. 社交网络社群划分7. 蛋白质结构域8. 音乐乐章分段9. 代码模块划分10. 章节划分特征:一次扫描,贪心确定边界。

weixin_49199313的博客 1272

Oracle中rman使用记录

RMAN工具使用还原数据库

美国梦中国心 1490

rman备份操作实例

介绍oracle热备基础知识,包含备份检查,增量备份,各数据库文件备份方法等。

Docker - Oracle Database 23ai Free

Docker 官方没有提供 Oracle Database 相关镜像, 但是 Oracle 官方有提供, 打开上面的链接, 选择 Database, 选择合适的版本, 如 enterprise, express 和 free, 这里以 free 为例. Free 分为 FULL 和 LITE 两个版本, 这里以 LITE 为例。

mrathena 1520

Matlab实战:用Transformer+LSTM+SVM搞定股票价格预测(附完整代码)

本文介绍了一种基于Transformer、LSTM和SVM的混合建模方法,用于股票价格预测。该方法结合了Transformer的全局依赖捕捉能力、LSTM的时序特征提取优势以及SVM的非线性回归能力,有效应对金融时间序列的非平稳性和噪声问题。文章提供了完整的Matlab实现代码,并展示了混合模型在实盘测试中的优异表现,方向预测准确率达62%,最大回撤控制在3.2%以内。

milk8的博客 254

实测338MB/s!FPGA与CYUSB3014的Slave FIFO模式实战避坑(附完整固件与源码)

本文详细介绍了FPGA与CYUSB3014在Slave FIFO模式下实现338MB/s高速数据传输的实战经验。通过优化硬件设计、固件配置和GPIF II接口设置,解决了USB3.0双向通信中的关键性能瓶颈,并提供了完整的固件与源码参考。

weixin_30570101的博客 458

ORACLE在系统级别修改PDB

ORACLE在系统级别修改PDB

u011868279的博客 1799

从零开始:小鼠Bulk RNA-seq全流程实战指南

本文提供了一份详尽的小鼠Bulk RNA-seq全流程实战指南,涵盖从软件环境搭建、原始数据质控与清洗、序列比对、基因定量到下游差异表达分析与功能富集。内容面向生物信息学新手,通过清晰的代码示例和步骤解析,帮助读者系统掌握Bulk RNA-seq数据分析的核心技能,并产出可靠的生物学洞见。

lake5的博客 715

Oracle 12C容器数据库(CDB)和插拔数据库(PDB)的创建(一)

oracle多租用户 容器数据库(CDB)、 插拔式数据库(PDB) 疑问1: 关于PDB和CDB的归档模式,只能是CDB的归档模式一致,不能单独对PDB设置归档模式。

moscot_wu的博客 2563

【运筹学】什么是基变量?对于线性规划问题中“基”概念的理解(3月3日学习笔记)

在学习《线性规划与目标规划》的过程中,课程的主讲老师郭韧给出了对于基概念的定义如下图 图片来源:运筹学(中国大学mooc网) 由此我产生了几个疑惑:1.如何理解B是线性规划问题的一个基?2.为什么说最多有CnmC_n^mCnm​个基呢?     1.如何理解B是线性规划问题的一个基?1.如何理解B是线性规划问题的一个基?1.如何理解B是线性规划问题的一个基? 在回答第一个...

纸羊同学的博客 3万+

大开眼界的十大开源人工智能项目

这是一个强大的开源工具,能让你在不同框架之间自由切换,无需重写代码。它是一个开源工具,能用简单的SQL语言同时处理数据和AI模型,让一切变得有序而高效。Rasa是我开发智能聊天机器人时的首选,它让你轻松掌控机器人对话的每个细节。我经常用它快速验证模型在不同框架下的表现,省去了大量烦躁的调试过程。最近发现的Vapi是一个以API方式提供的语音AI工具,开发者友好程度超乎想象。KNIME是一个以拖拽方式构建数据分析流程的开源工具,仿佛是数据界的乐高积木。它像个忠诚的守门员,确保你的模型始终健康运行。

wjianwei666的专栏 1105

rman初级实操(每天自动备份并打包)

客户服务器,64位,windows环境 首先将数据库打开归档模式

Cindy(Berry)的专栏 1960

(论文速读)PTV3: 更简单、更快速、更强大的3D点云处理新突破

该论文提出PointTransformerV3(PTv3),通过简化设计实现3D点云处理的效率突破。该研究摒弃复杂注意力机制,转而采用点云序列化和补丁注意力等高效方法,将感受野从16点扩展到1024点,在保持高精度的同时实现3倍速度提升和10倍内存优化。PTv3在超过20个室内外场景任务中取得SOTA结果,ScanNet语义分割达79.4%mIoU,Waymo检测提升3.3%APH。核心创新包括四种空间填充曲线序列化模式和xCPE位置编码,为3D感知的工业应用提供了高效解决方案。

LJ1147517021的博客 1376

RMAN详细教程(一) —— 基本命令代码

RMAN详细教程-基本命令代码

Ruishine的博客 4024

开源GIS -- 笔记

基础开发库 数据读写:GDAL/OGR(C/C++) ArcGIS和GE都是使用此工具 投影转换:Proj.4(C/C++) 拓扑计算:JTS(Java),GEOS(C++),Shapely(python) 组件式开发库 GeoTools(Java),DotSpatial(.NET) 空间分析: Scipy(通用科学计算、方程求解), numpy,NextworkX, rPy(统计分析), Scikit-learn,pysal(空间分析) 深度学习: Keras、 tensorflow、 pytor

DZ Space 4521

什么是 AI Agent?它和直接调用大模型 API 有什么区别?

什么是 AI Agent?它和直接调用大模型 API 有什么区别?

我哎GIS博客 6481

Oracle静默安装,含仅软件安装和数据库安装及常见报错处理方法DBT-10317 DBT-05509 [FATAL] ORA-03114

本文详解Oracle 19c单机版静默安装与数据库创建全流程,涵盖目录配置、响应文件编写、安装及建库命令,附常见报错(如DBT-10317、ORA-03114)解析与解决方案,包含删库指令与日志分析,适合内网环境自学实战,免费干货,实用性强。

qq_41474349的博客 177

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Spring 事务详解:@Transactional 如何生效、何时回滚、传播行为怎么选

从订单与库存写入出发,拆解 @Transactional 的代理调用链、默认回滚规则与自调用问题;通过 Spring Boot + H2 的五个验证用例比较 REQUIRED、REQUIRES_NEW、NESTED,并说明数据库事务与 Redis、消息和远程接口的边界。

qq_74421990的博客 305

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Oracle多租户集群PDB异机恢复至单机部署数据库

本文详细演示了将Oracle RAC集群中的PDB(RMAN_PDB)通过RMAN备份恢复至单机CDB的全过程。首先在源库创建测试PDB并插入数据,随后配置RMAN备份路径,备份该PDB及其元数据文件。接着将备份文件传输至单机环境,启动实例并恢复控制文件与数据文件,最后利用DBMS_PDB.EXPOSE_PDB_FROM_RMAN生成PDB描述文件,将其插入新单机CDB中,实现PDB的独立使用。整个流程涵盖数据准备、备份、恢复及插入,完整验证了跨环境PDB迁移的可行性。

qq_57492774的博客 183

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Mysql数据库基础篇(三):全面掌握数据库与数据表操作:深度剖析底层文件差异与核心管理机制

如果你想彻底改掉某个字段的名字,应该使用 change。实例:将 employee表中的 name列修改为xingming注意:使用 change时,即便不改变数据类型,在指定了新列名后依然需要完整地写一遍它的数据类型与约束定义。

2501_93641778的博客 238

oracle直方图测试

预期:没有直方图时,优化器假设 status 分布均匀(选择性 = 1/NDV ≈ 1/100),两个查询的预估行数(E-Rows)会非常接近(约 1000 行),很可能对两个查询都选择索引扫描,或者都选择全表扫描,无法区分数据量的巨大差异。

ZHANG123HUO的博客 51

Oracle 19c RAC ASM 在线扩容实战

最近有一套 Oracle 19c RAC 数据库,DATA 磁盘组空间使用率已经接近 90%,需要扩容。环境是两节点 RAC,底层使用 Dell EMC SAN 存储,通过 Multipath 管理共享磁盘,存储侧已经分配好一块 2TB 的新 LUN,只需要在操作系统上识别,然后加入 ASM 磁盘组。整个过程不需要停库,本文记录一下实际操作步骤。这次 Oracle 19c RAC ASM 扩容整体比较顺利。

LuciferLiu_DBA 293

带着小白学习-微服务-5 实战:配置中心-数据库连接

如前所述,服务治理主要包含注册中心,前面所有的微服务子工程均已注册到nacos,然后由相应的应用到nacos进行拉取。接下来,我们将使用nacos的配置中心,用于保存和分发应用运行所需的动态配置。比如数据库的各类信息等。

wdyan297的博客 213

任务8-1 数据库用户权限管理

本实战训练MySQL权限管理的完整流程。通过CREATE USER建用户,GRANT按需授权,SHOW GRANTS核查权限。岗位变动时,使用REVOKE回收多余权限,并用FLUSH PRIVILEGES刷新缓存。全流程旨在落实最小权限原则,规范数据库安全运维。

howard2005的专栏 153

用校园小助手生成ER图:从建表语句到可调布局

从建表语句或自然语言生成,到关系识别、主外键颜色区分,再到布局切换和折叠,校园小助手的ER图功能把画图过程中最耗时的部分交给了工具。它适合大学生论文、研究人员科研、教师教学及企业数据分析等场景,所有功能都在校园小助手平台内实现。下次作业要用ER图时,不妨先从手里的SQL开始。

weixin_74789176的博客 191

SQLServer常用指令手册

覆盖数据库创建、表与约束、增删改查、查询进阶、索引、视图/存储过程/函数/触发器、事务、权限、运维排查。适用版本:SQL Server 2012 及以上(标注的条目为对应版本起可用)。

lzcbaba的博客 239
上一篇: 92- Oracle-RMAN 知识准备
下一篇: 94-Oralce RMAN 目录库(catalog-nocatalog)
远方1609
博客等级 码龄22年 577粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值