第三篇《RMAN 备份与恢复指南:保障数据库安全》(RMAN)

《Oracle 数据迁移与备份系列》

第三篇:《RMAN 备份与恢复指南:保障数据库安全》(RMAN)

1.概述

RMAN(Recovery Manager) 是 Oracle 数据库内置的专用备份与恢复工具,提供高效、安全的物理级数据保护机制。它支持数据库的 完整备份、增量备份、数据恢复 以及 跨平台迁移,是 DBA 进行数据库管理的重要工具。

2.RMAN介绍

2.1功能概述

  • 数据库备份:支持 完整备份增量备份归档日志备份,确保数据安全。

  • 数据恢复:可快速恢复数据库,包括 整库恢复、表空间恢复、数据文件恢复 等。

  • 跨平台迁移:支持 跨操作系统 迁移数据库,如 Linux 迁移至 Windows。

  • 备份优化:支持 压缩、去重、加密,减少备份存储占用,提高安全性。

2.2核心特性

RMAN 具有以下特性,使其成为 Oracle 官方推荐的备份与恢复工具:

备份管理
  • 支持热备份:可在数据库运行时执行备份,无需停机。
  • 增量备份:仅备份 自上次备份以来 发生变化的数据,提高效率。
  • 自动备份控制文件与 SPFILE,防止重要元数据丢失。
数据恢复
  • 块级恢复:当某个数据块损坏时,可直接修复,而无需恢复整个数据文件。
  • 时间点恢复(PITR):可将数据库恢复到指定时间点,适用于误操作恢复。
  • 快速故障恢复:结合 Flashback 技术,实现 回滚操作、数据库重演

3.RMAN的优势

  • 高效备份:支持 增量备份、压缩存储,减少磁盘占用。

  • 快速恢复:可进行 整库、表空间、数据文件、块级别恢复,避免全库重建。

  • 跨平台迁移:支持 不同架构的 Oracle 版本迁移,灵活适配业务需求。

4.RMAN数据迁移实施步骤

4.1环境准备

(1)确保主备库环境一致

  • 目标服务器上的oracle版本必须与源库相同或更高
  • 目录结构尽量一致
    • 如果不一致需要手动调整。

(2)开启归档模式

在主库执行:

SELECT LOG_MODE FROM V$DATABASE;

如果未显示open状态

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

(3)启用强制日志模式

ALTER DATABASE FORCE LOGGING;

4.2使用RMAN全备份

  • 适用于数据量适中可接受服务器长时间停机的状况。

(1)备份数据库

在主库上,使用RMAN进行全备份:

rman target /
RUN {BACKUP DATABASE FORMAT '/u01/backup/db_%U.bkp';BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/u01/backup/standby_control.bkp';
}

命令解析

  1. rman target /

    • 连接 RMAN,target / 表示 直接连接本地数据库(以 Oracle 用户运行)。
  2. BACKUP DATABASE FORMAT '/u01/backup/db_%U.bkp';';

    • 备份 整个数据库(包括数据文件)。

    • FORMAT '/u01/backup/db_%U.bkp'
      

      指定备份文件路径:

      • %U:RMAN 自动生成唯一的备份文件名,避免冲突。
  3. BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/u01/backup/standby_control.bkp';

    • 备份当前 控制文件,用于创建 Standby 备库。
    • FOR STANDBY:指定该控制文件将用于 Data Guard 备库

(2)传输数据文件到备库

scp /u01/backup/* oracle@<备库IP>:/u01/backup/

(3)在备库恢复数据库

rman target /
RUN {SET DBID <主库DBID>;   # 可选,确保识别正确的备份STARTUP NOMOUNT;RESTORE STANDBY CONTROLFILE FROM '/u01/backup/standby_control.bkp';ALTER DATABASE MOUNT;RESTORE DATABASE;RECOVER DATABASE;
}
  • SET DBID <主库DBID>;:选择数据库DBID,防止RMAN误识别数据库。
  • STARTUP NOMOUNT 先启动实例,再恢复控制文件,符合最佳实践。
  • ALTER DATABASE MOUNT 挂载数据库,使其进入 Standby 状态。
  • RECOVER DATABASE 应用归档日志,确保数据一致性。

(4)启动数据库

ALTER DATABASE OPEN RESETLOGS;

4.3使用RMAN全备份

  • 适用于数据量适中可接受服务器长时间停机的状况。

(1)备份数据库

在主库上,使用RMAN进行全备份:

rman target /
RUN {BACKUP INCREMENTAL LEVEL 0 DATABASE FORMAT '/u01/backup/db_%U.bkp';BACKUP CURRENT CONTROLFILE FORMAT '/u01/backup/controlfile.bkp';	
}

命令解析

  1. rman target /

    • 连接 RMAN,target / 表示 直接连接本地数据库(以 Oracle 用户运行)。
  2. BACKUP INCREMENTAL LEVEL 0 DATABASE FORMAT '/u01/backup/db_%U.bkp';

    • 备份 整个数据库(包括数据文件)。

    • INCREMENTAL LEVEL 0

      • Level 0(全备份):相当于完整备份,备份所有数据块。
      • Level 1(增量备份):仅备份 自上次 Level 0 或 Level 1 以来 发生变化的数据块。
    • FORMAT '/u01/backup/db_%U.bkp'
      

      指定备份文件路径:

      • %U:RMAN 自动生成唯一的备份文件名,避免冲突。
  3. BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/u01/backup/controlfile.bkp';

    • 备份当前 控制文件,用于创建 Standby 备库。
    • FOR STANDBY:指定该控制文件将用于 Data Guard 备库

(2)传输数据文件到备库

scp /u01/backup/* oracle@<备库IP>:/u01/backup/

(3)在备库恢复数据库

rman target /
RESTORE DATABASE;
RECOVER DATABASE;

(4)定期进行增量备份

主库 定期执行增量备份:

rman target /
BACKUP INCREMENTAL LEVEL 1 DATABASE FORMAT '/u01/backup/inc_%U.bkp';

然后传输到 目标库 并恢复:

scp /u01/backup/inc_* 目标服务器:/u01/backup/
rman target /
RECOVER DATABASE;

(5)最终切换

在主库 最后一次增量备份 并传输到目标库后,执行:

ALTER DATABASE OPEN RESETLOGS;

5.结语

至此,使用 RMAN 进行数据迁移 的流程已完成。

本文旨在为初学者提供学习参考,作者仍在不断学习和探索,若有不足之处,欢迎指正交流。如遇问题,欢迎私信或在评论区讨论,共同进步!😊

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

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

相关文章

【测试框架篇】单元测试框架pytest(4):assert断言详解

一、前言 用例三要素之一就是对预期结果的断言。 何为断言&#xff1f;简单来说就是实际结果和期望结果去对比&#xff0c;符合预期就测试pass&#xff0c;不符合预期那就测试 failed。断言内容就是你要的预期结果。断言包含对接口响应内容做断言、也包含对落DB的数据做断言。…

什么是大模型微调?

在大模型&#xff08;如GPT、BERT、LLaMA等&#xff09;广泛应用的今天&#xff0c;“微调”&#xff08;Fine-Tuning&#xff09;已成为释放模型潜力的关键技术。它通过针对特定任务调整预训练模型&#xff0c;使其从“通才”变为“专才”。本文将从概念、原理到实践&#xff…

C# Channel

核心概念创建Channel无界通道有界通道FullMode选项 生产者-消费者模式生产者写入数据消费者读取数据 完整示例高级配置优化选项&#xff1a;取消操作&#xff1a;通过 CancellationToken 取消读写。 错误处理适用场景Channel的类型创建Channel写入和读取消息使用场景示例代码注…

基于Spring Boot的牙科诊所管理系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

upload-labs-靶场(1-19关)通关攻略

文件上传漏洞是指由于程序员再开发时&#xff0c;未对用户上传的文件进行严格的验证和过滤&#xff0c;而导致用户可以上传可执行的动态脚本文件 Pass-01&#xff08;前端验证绕过&#xff09; 上传111.php文件&#xff0c;发现弹窗显示不允许&#xff0c;并给出白名单文件类…

使用 pytesseract 进行 OCR 识别:以固定区域经纬度提取为例

引言 在智能交通、地图定位等应用场景中&#xff0c;经常会遇到需要从图像中提取经纬度信息的需求。本篇文章将介绍如何利用 Python 的 pytesseract 库结合 PIL 对图像进行预处理&#xff0c;通过固定区域裁剪&#xff0c;来有效地识别出图像上显示的经纬度信息。 1. OCR 与 …

docker安装和卸载

服务器系统&#xff1a;Ubuntu Server 18.04.2 64bit 1 安装docker&#xff1a; 1.1 在线安装 1.# yum install docker 1.2 离线安装 https://download.csdn.net/download/qq_27106141/90477700 1.# docker-18.03.1-ce.tgz 1.2.1 解压 tar -xzvf docker-18.03.1-ce.tgz 1.2.2…

机器人交互系统 部署构建

环境要求 Ubuntu 20.04 或更高版本ROS Noetic 或兼容版本Python 3.8 安装步骤 1. 安装ROS环境&#xff08;如未安装&#xff09; sudo apt update sudo apt install ros-noetic-desktop-full source /opt/ros/noetic/setup.bash2. 创建工作空间并克隆代码 mkdir -p ~/code…

【Go每日一练】构建一个简单的用户信息管理系统

&#x1f47b;创作者&#xff1a;丶重明 &#x1f47b;创作时间&#xff1a;2025年3月7日 &#x1f47b;擅长领域&#xff1a;运维 目录 1.&#x1f636;‍&#x1f32b;️题目&#xff1a;简单的用户信息管理系统2.&#x1f636;‍&#x1f32b;️代码开发3.&#x1f636;‍&a…

全员DeepSeek时代,前端能做些什么?

全员DeepSeek时代&#xff0c;前端能做些什么&#xff1f; 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc #mermaid-svg-VNyL95jkz9jEXgUq {font-family:&…

Machine Learning: 十大基本机器学习算法

机器学习算法分类&#xff1a;监督学习、无监督学习、强化学习 基本的机器学习算法&#xff1a; 线性回归、支持向量机(SVM)、最近邻居(KNN)、逻辑回归、决策树、k平均、随机森林、朴素贝叶斯、降维、梯度增强。 机器学习算法大致可以分为三类&#xff1a; 监督学习算法 (Sup…

【Linux docker 容器】关于想要让虚拟机在开机时候也docker自己启动,容器也自己启动,省去要自己开docker和容器

确认 Docker 服务状态&#xff1a; 首先&#xff0c;你需要确保 Docker 服务已经在虚拟机上安装并正确配置。你可以使用如下命令来检查 Docker 服务的状态&#xff1a; systemctl status docker.service 如果服务没有运行&#xff0c;你可以使用以下命令启动它&#xff1a; s…

前端系统测试(单元、集成、数据|性能|回归)

有关前端测试的面试题 系统测试 首先,功能测试部分。根据资料,单元测试是验证最小可测试单元的正确性,比如函数或组件。都提到了单元测试的重要性,强调其在开发早期发现问题,并通过自动化提高效率。需要整合我搜索到的资料中的观点,比如单元测试的方法(接口测试、路径覆…

linux 命令 ls

ls 是 Linux 系统中用于列出目录内容的核心命令&#xff0c;几乎所有日常操作都会用到。以下是其详细用法和常见场景说明 1. 基础语法 ls [选项] [目录/文件] 不指定目录时&#xff0c;默认列出当前目录的内容。 可以指定文件或目录路径&#xff0c;支持通配符&#xff08;如…

CI/CD—GitLab部署

GitLab简介&#xff1a; GitLab 是一个用于代码托管和软件开发协作的平台&#xff0c;在全球开发者社区及企业中应用广泛&#xff0c;以下是对它的详细介绍&#xff1a; 主要功能 代码托管&#xff1a;提供了基于 Git 的代码仓库管理功能&#xff0c;支持创建、克隆、推送、…

ubuntu软件

视频软件&#xff0c;大部分的编码都能适应 sudo apt install vlc图片软件 sudo apt install gwenview截图软件 sudo apt install flameshot设置快捷键 flameshot flameshot gui -p /home/cyun/Pictures/flameshot也就是把它保存到一个自定义的路径 菜单更换 sudo apt r…

Easysearch 使用 AWS S3 进行快照备份与还原:完整指南及常见错误排查

Easysearch 可以使用 AWS S3 作为远程存储库&#xff0c;进行索引的快照&#xff08;Snapshot&#xff09;备份和恢复。同时&#xff0c;Easysearch 内置了 S3 插件&#xff0c;无需额外安装。以下是完整的配置和操作步骤。 1. 在 AWS S3 上创建存储桶 登录 AWS 控制台&#x…

【系统架构设计师】性能评估

目录 1. 说明2. 基准测试程序3. Web服务器的性能评估4. 系统监视5. 例题5.1 例题1 1. 说明 1.性能评估是为了一个目的&#xff0c;按照一定的步骤&#xff0c;选用一定的度量项目&#xff0c;通过建模和实现&#xff0c;对一个系统的性能进行各项检测&#xff0c;对测试结果做…

动态规划-第2篇

前言&#xff1a;在上一篇文章中&#xff0c;我们了解了动态规划的基本概念和解决问题的基本思路。通过分解问题、存储子问题的解&#xff0c;动态规划为我们提供了高效的解决方案。然而&#xff0c;动态规划并不是一成不变的&#xff0c;它有很多不同的技巧和变种&#xff0c;…

基于Redis实现限流

限流尽可能在满足需求的情况下越简单越好&#xff01; 1、基于Redsi的increment方法实现固定窗口限流 Redis的increment方法保证并发线程安全窗口尽可能越小越好(太大可能某一小段时间就打满请求剩下的都拿不到令牌了)这个原理其实就是用当前时间戳然后除窗口大小 在这个窗口大…