Oracle中rman使用记录

        最近在项目中,遇到使用RMAN的操作来恢复数据库中某个时间归档日志,RMAN的原理和理解,网友们百度了解一下。我重点将实操部分了。直接上实验环节,让网友更懂。(特别提醒:我是1:1用VMware克隆数据库进行RMAN还原。涉及到两个数据库的数据文件、日志文件、控制文件、参数文件的路径一致,如果两个数据库安装路径不同,内部配置路径环境不同,将不适用本方法了。)

目录

一、环境部署

二、源数据库数据体量的检查

​三、源数据库使用RMAN脚本进行数据备份

四、将源数据库中的配置文件,传送到目标数据中

五、目标数据库进行RMAN还原

六、RMAN恢复总结

七、参考文件


一、环境部署

VMware中部署两台数据库应用

我这里分别是192.168.188.141(源数据库),192.168.188.152(目标数据库)

两个数据库版本是Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production(实验前,我将源数据库克隆到152的数据库后,在用impdp数据导入,将数据量增大。)

二、源数据库数据体量的检查

检查源数据库的DBID,控制文件路径

查找数据文件路径

查找字符集和数据总量

查找日志文件的路径

这里有个坑。(使用RMAN操作,数据库必须开启归档模式,不然热备份不了相关的配置文件)

图一是我没有开启归档模式,使用rman脚本进行备份文件,死活备份不了,图二我开启自动归档模式以后,rman脚本就成功了)

三、源数据库使用RMAN脚本进行数据备份

RMAN的脚本(注意bakdir和autobak的路径,写在home用户下面的路劲)

#************************************************************************ 
#*** rman_bak_L0.sh *** 
#************************************************************************ 
#!/bin/bash
source /home/oracle/.bash_profile
rq=`date +%Y%m%d`
bakdir=/home/oracle/topsoft/rmanbak/${rq}
autobak=/home/oracle/topsoft/rmanbak/autobackup/
if [ ! -d ${bakdir} ];
then mkdir -p ${bakdir}
fi
if [ ! -d ${autobak} ];
then mkdir -p ${autobak}
fi
cd $ORACLE_HOME/bin 
./rman target / log=$bakdir/rmanfull_${rq}.log   <<EOF
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${autobak}/%F';
run { 
allocate channel c1 type disk; 
allocate channel c2 type disk;
allocate channel c3 type disk; 
allocate channel c4 type disk;
allocate channel c5 type disk; 
allocate channel c6 type disk;
sql 'alter system archive log current';
backup as compressed backupset incremental level 0 database tag 'dbfull' format '${autobak}/backlv0_%d_%T_%t_%s_%p.bak';
sql 'alter system archive log current';
backup as compressed backupset archivelog all tag 'arch' format '${autobak}/arch_%d_%T_%t_%s_%p.bak';
backup current controlfile format '${autobak}/ctl_%d_%T_%t_%s_%p.bak';
release channel c1; 
release channel c2;
release channel c3; 
release channel c4;
release channel c5; 
release channel c6;
} 
report obsolete; 
crosscheck backup;
crosscheck archivelog all;
delete noprompt obsolete;
delete noprompt expired backup;
list backup summary; 
exit; 
EOF
echo "备份数据完成."

参数说明:

sysdate-1/12   :2小时之前的归档。

%U_%d_%T_%s
%U:默认是%u_%p_%c的简写形式,利用它可以为每一个备份片段(即磁盘文件)生成一个唯一名称,这是最常用的命名方式,执行不同备份操作时,生成的规则也不同,如下所示:
 生成备份片段时,%U=%u_%p_%c;
%u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集生成一个唯一的名称。
%p:备份集中备份片段的编号,从1开始。
%c:备份片段的复制数(从1开始编号,最大不超过256)。
%d:Oracle数据库名称。
%T:当前时间的年月日格式(YYYYMMDD)。
%s:备份集号。 

先将数据库关闭,然后将数据库启动mount模式,开启归档记录,然后开启数据库实例再用RMAN进行备份(RMAN的备份机制,有时间可以了解一下。这里我挖坑一个早上

将脚本放进去服务器内,加上chmod +x 执行脚本(这里我又重新备份一次作为展示,备份时间是4月12号

检查一下RMAN备份完成下来的备份文件,发现日志文件、数据文件、控制文件、归档文件都被RMAN脚本执行备份下来了。

还需要准备源数据库的参数文件,在SQL中执行脚本将参数文件备份出来,

 将源数据库的数据库的密码文件orapwfzdb,备份到RMAN的文件夹中

四、将源数据库中的配置文件,传送到目标数据中

        传送到目标数据库中,目标数据库创建对面的文件路径存放文件(记得目标数据库关闭防火墙,还需要有对接用户的账号密码)

传送过去目标数据库有6个文件:日志文件,ARCH格式归档文件,C-9开头控制文件,initfz开头数据库参数文件,还有backlv的数据文件,还有源数据库中密码文件orapwfzdb文件

这里我挖了一个坑,没有传送过去日志文件,导致我后面的recover database;还原归档日志时候报错,缺少日志文件,还原归档时间是根据你传送过去的日志文件序列号时间进行还原

检查一下目的数据库的文件已经保存源数据库的文件。

因为我是虚拟机克隆源数据库到目标数据库,数据库的配置文件路径和数据库的名字和ID都是一致的了,如果不是安装路径和配置文件参数一致的源数据库和目标库,一定要修改initfzdb20240425.ora中的配置参数。具体方法,改期研讨

五、目标数据库进行RMAN还原

进入目标数据库先关闭数据实例,用非挂在模式用源数据库数据库中参数文件启动数据库(因为我两个库都是一样信息,配置文件一样直接启动)

如果数据库的SID不是一样,要设置成源数据库一致的SID。(我是克隆过来数据库,SID完全一直)

[oracle@localhost ~]$ export ORACLE_SID=fzdb

使用源数据库文件生成参数文件。

生成参数完毕后,关闭数据库实例,在启动非挂载模式,进行控制文件的还原

使用rman target /进行控制文件还原(注意:控制文件还原,需要将数据库启动到非归档模式
这里set DBID和控制文件中的参数29**是一致的了,

数据库中启动归档模式,在进行归档模式下面进行归档文件和数据文件的还原。

在RMAN中使用alter指令切换数据库进入归档模式,在用catalog 指令读取目标库路径中的存在备份文件地方。

这里会显示日志文件已经损坏,不需要担心。

RMAN> restore database;   --还原数据文件(因为我的数据文件很大,我就截图前后)

RMAN> recover database;  --还原归档日志  

提示如下报错:

大概意思:媒体恢复请求未知的归档日志,用于恢复线程1的序列号为101的日志,起始SCN为2605247。(因为数据库的归档日志是有记录每次归档序列号,如果想用RMAN恢复时候是要选择恢复到归档日志的多少序列号)

 直接用recover恢复到序列号101的归档日志的数据库(这里叫不完全恢复)

恢复数据文件和归档文件,--恢复完成后,将库启动到read only模式,查询一下数据是否正常

目标数据库的数据库容量

源数据库的数据体量和目标库的体量相同。(按道理来说要检查数据库的数数据文件存放位置、查看临时文件位置、查看日志文件位置等等,我这里图方便,因为虚拟机克隆1:1源数据库就不查这些参数了。)

确定数据总量相同后,将数据库关闭,把源数据库的密码文件放到目标数据库的配置文件下面。

在正常启动数据库,发现目标库的开启日志记录功能。使用alter语句正常开启重置日志记录功能即可(RESETLOGSoption :清除所有在线重做日志并修改所有在线数据文件以表明不需要恢复。重置重做日志后,现有的日志文件或数据文件备份都不能使用。)

数据库正常启动,源数据库的数据

六、RMAN恢复总结

        首先源数据库需要开启归档模式进行RMAN的数据备份,记录好备份的配置文件,传送到目标库中,第二,目标库中的数据库的配置文件是否和源数据库中的配置文件一致,像我实验中都是1:1还原,很多步骤可以省略,如果不是1:1的话,需要将目标库中数据文件、控制文件、参数文件等改成和源数据库的路径一致,说白了,还原就是房子的家具怎么摆,到新的房子家具也怎么摆。床的位置、沙发的位置都要重新划分。第三就是恢复控制文件时候使用非归档模式和恢复数据文件、归档文件时候,数据库开启归档模式,一定要区分开。最后确定数据恢复没问题后,还要把数据库的密码文件放回到目标库的配置文件中。

还要感谢福娃老师提供RMAN的笔记。下次研究一下如何在不同数据库配置环境下实现RMAN还原

最后感谢

福娃筱欢-CSDN博客老师。

七、参考文件

《Oracle系列》Oracle归档日志管理(开启归档日志、删除归档日志)_oracle删除归档日志-CSDN博客

Oracle RESETLOGS 和 NORESETLOGS 区别说明-CSDN博客

ORACLE开启归档日志_oracle归档日志-CSDN博客

RMAN异机恢复数据库详解-CSDN博客

oracle rman备份 归档模式,将Oracle数据库改为归档模式并启用RMAN备份-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/313615.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mockito

小王学习录 依赖注解MockSpy静态方法单元测试InjectMocks 注解Captor 注解BeforeAll 和 BeforeEach的区别ParameterizedTestValueSourceEnumSourceCsvSourceMethodSource 打桩打桩方式打桩参数匹配方式 依赖 <!-- https://mvnrepository.com/artifact/org.mockito/mockito-i…

Armpro脱壳软件搭建教程附源代码

PHP8.0版本&#xff0c;数据库8.0版本 1.配置注册机文件&#xff0c;打开将arm.zip/res目录下&#xff0c;mt管理器搜索将其全部修改为你自己的域名或者是服务器IP 2.然后建立数据库 数据库账号arm 数据库用户名arm 数据库密码EsZfXY4tD3h2NNA4 3.导入数据库 4.配置Redi…

03-JAVA设计模式-备忘录模式

备忘录模式 什么是备忘录模式 Java中的备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许在不破坏封装性的前提下捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;以便以后可以将对象恢复到原先保存的状态…

配置有效的防爬虫技术保护网站

本文主要介绍了防爬虫的概念、目的以及一些有效的防爬虫手段。防爬虫是指网站采取各种技术手段阻止爬虫程序对其数据进行抓取的过程。为了保护网站的数据和内容的安全性&#xff0c;防止经济损失和恶意竞争&#xff0c;以及减轻服务器负载&#xff0c;网站需要采取防爬虫机制。…

统一所有 LLM API:支持预算与速率限制 | 开源日报 No.229

BerriAI/litellm Stars: 6.7k License: NOASSERTION litellm 是一个使用 OpenAI 格式调用所有 LLM API 的工具。它支持 Bedrock、Azure、OpenAI、Cohere、Anthropic 等 100 多种 LLMs&#xff0c;提供企业级代理服务器和稳定版本 v1.30.2。 主要功能和优势包括&#xff1a; 将…

探索大型语言模型(LLM)在人类性格个性评估(MBTI)中的前景与应用

1.概述 大型语言模型&#xff08;LLM&#xff09;如ChatGPT在各个领域的应用确实越来越广泛&#xff0c;它们利用庞大的数据集进行训练&#xff0c;以模拟人类的语言理解和生成能力。这些模型在提供信息、解答问题、辅助决策等方面表现出了强大的能力&#xff0c;但它们并不具…

[集群聊天项目] muduo网络库

目录 网络服务器编程常用模型什么是muduo网络库什么是epoll muduo网络库服务器编程 网络服务器编程常用模型 【方案1】 &#xff1a; accept read/write 不是并发服务器 【方案2】 &#xff1a; accept fork - process-pre-connection 适合并发连接数不大&#xff0c;计算任…

Yolov5 export.py实现onnx模型的导出

查了很多资料&#xff0c;很多用python代码写的&#xff0c;只需要这个库那个库的&#xff0c;最后都没成功。 不如直接使用Yolov5里面的 export.py实现模型的转换。 一&#xff1a;安装依赖 因为yolov5里面的requirments.txt是将这些转换模型的都注释掉了 所以需要解除注释…

人工智能论文GPT-3(2):2020.5 Language Models are Few-Shot Learners;微调;少样本Few-Shot (FS)

2 方法Approach 我们的基本预训练方法&#xff0c;包括模型、数据和训练&#xff0c;与GPT-2中描述的过程相似&#xff0c;只是模型规模、数据集规模和多样性&#xff0c;以及训练时长有所扩大&#xff0c;相对简单直接。 我们使用的上下文学习也与GPT-2相似&#xff0c;但在…

Kafka 3.x.x 入门到精通(03)——对标尚硅谷Kafka教程

Kafka 3.x.x 入门到精通&#xff08;03&#xff09;——对标尚硅谷Kafka教程 2. Kafka基础2.1 集群部署2.2 集群启动2.3 创建主题2.4 生产消息2.4.1 生产消息的基本步骤2.4.2 生产消息的基本代码2.4.3 发送消息2.4.3.1 拦截器2.4.3.1.1 增加拦截器类2.4.3.1.2 配置拦截器 2.4.3…

.NET 邮件发送 SMTP邮件发送

SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;是用于电子邮件传输的规则集&#xff0c;可以从邮件客户端向接收电子邮件服务器发送、中继或转发邮件。发件人可使用SMTP 服务器来执行发送电子邮件的过程。SMTP服务器则是按照这些规则中转电子邮件的服务器。 IMAP…

【Qt QML】TabBar的用法

Qt Quick中的TabBar提供了一个基于选项卡的导航模型。TabBar由TabButton控件填充&#xff0c;并且可以与任何提供currentIndex属性的布局或容器控件一起使用&#xff0c;例如StackLayout或SwipeView。 import QtQuick import QtQuick.Controls import QtQuick.LayoutsWindow …

企业微信hook接口协议,ipad协议http,发送大视频文件

发送大视频文件 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信send_userid是long要发送的人或群idisRoom是bool是否是群消息 请求示例 {"uuid":"1688853790xxx", //uuid 默认随机生成如果初始化传了id则用初始…

潜藏10年的恶意软件被发现;利用漏洞在K8S上挖矿;AWS、Google和Azure 出现信息泄露危机 | 安全周报0419

关键词&#xff1a;OfflRouter、恶意软件、VBA宏病毒、机密文件、可执行文件、iOS间谍软件、LightSpy、F_Warehouse、Azure CLI、AWS CLI、Google Cloud CLI 1. 近十年来&#xff0c;OfflRouter恶意软件在乌克兰一直未被发现 自2015年以来&#xff0c;部分乌克兰政府网络一直…

【学习】如何高效地进行集成测试

在软件开发的过程中&#xff0c;测试环节至关重要。而在这其中&#xff0c;集成测试更是保证软件质量的关键步骤之一。本文将探讨如何高效地进行集成测试&#xff0c;以确保软件的稳定性和可靠性。 一、什么是集成测试 集成测试是指在单元测试的基础上&#xff0c;将模块按照设…

力扣刷题学习(跟随视频学着刷)

使用入门 视频链接 【手把手带你刷Leetcode力扣&#xff5c;各个击破数据结构和算法&#xff5c;大厂面试必备技能【已完结】-哔哩哔哩】 https://b23.tv/vIcRT61 时空复杂度 时间&#xff1a; 空间&#xff1a;主要有O(1)和O(n)两种&#xff0c;只用计算开辟的内存&#xff…

cdp集群Hbase组件HRegionServer服务停止原因以及排查

前言&#xff1a;重启集群后某一节点HRegionServer服务停止&#xff0c;重启前所有服务均正常 去查看日志&#xff1a; 日志报错 ERROR HRegionServer Master rejected startup because clock is out of sync org.apache.hadoop.hbase.ClockOutOfSyncException: org.apache.h…

【Python】异常、模块与包

目录 捕获异常 异常的传递 Python中的模块 模块的导入方式 as定义别名 自定义模块 Python包 第三方包 综合案例 当我们的程序遇到了BUG, 那么接下来有两种情况: ① 整个程序因为一个BUG停止运行 ② 对BUG进行提醒, 整个程序继续运行 但是在真实工作中, 我们肯定不能…

第十五届蓝桥杯省赛第二场C/C++B组D题【前缀总分】题解(AC)

暴力解法 O ( 26 n 5 ) O(26n^5) O(26n5) 枚举将第 i i i 个字符串的第 j j j 个字符改为 c c c 的所有方案&#xff0c;时间复杂度 O ( 26 n 2 ) O(26n^2) O(26n2)&#xff0c;修改并计算总分&#xff0c; O ( n 3 ) O(n^3) O(n3)。 暴力优化 O ( 26 n 3 log ⁡ n ) O…

【Pytorch】(十四)C++ 加载TorchScript 模型

文章目录 &#xff08;十四&#xff09;C 加载TorchScript 模型Step 1: 将PyTorch模型转换为TorchScriptStep 2: 将TorchScript序列化为文件Step 3: C程序中加载TorchScript模型Step 4: C程序中运行TorchScript模型 【Pytorch】&#xff08;十三&#xff09;PyTorch模型部署: T…