RMAN备份数据库_使用RMAN备份数据库文件

2023-10-26

1.使用RMAN备份整个数据库

可以在数据库挂载或打开时执行整个数据库备份。

使用BACKUP DATABASE命令从RMAN提示符中执行整个数据库的备份。

你可能想从整个数据库备份中排除特定的表空间。可以通过执行CONFIGURE EXCLUDE命令跨RMAN会话持续地跳过你总是想跳过的每个表空间。可以使用BACKUP … NOEXCLUDE命令覆盖配置的设置。

备份数据库:
1) 启动RMAN,连接到目标数据库和恢复目录(如果使用的话)。
2) 确保数据库处于挂载或打开状态。
3) 在RMAN提示符下执行BACKUP DATABASE命令。

最简单的命令格式不需要选项或参数:
BACKUP DATABASE;

备份的文件(数据文件,控制文件,spfile)列表取决于在BACKUP命令中使用的关键字。

以下示例备份数据库,切换在线redo日志和包括归档日志在备份中:
BACKUP DATABASE PLUS ARCHIVELOG;

在备份之后立即归档日志,可以确保有备份期间的一整组归档日志。这样,保证在还原备份之后可以执行介质恢复。


2.使用RMAN备份表空间和数据文件

可以使用BACKUP TABLESPACE命令备份一个或多个表空间,使用BACKUP DATAFILE命令备份一个或多个数据文件。

当指定表空间时,RMAN内部转换表空间名称到一个数据文件列表。数据库可以处于挂载或打开状态。表空间可以是读写或只读状态。

注:可传输的表空间不需要像在之前的版本中一样必须处于读写模式来做备份。

当数据文件1包含在备份中时,RMAN自动备份控制文件和spfile(如果实例使用spfile启动)。如果控制文件自动备份已启用,那么RMAN将当前的控制文件和spfile写到不同的自动备份片。否则,RMAN将这些文件包含在包含数据文件1的备份集中。

备份表空间或数据文件:
1) 启动RMAN,连接到目标数据库和恢复目录(如果使用的话)。
2) 确保数据库处于挂载或打开状态。
3)在RMAN提示符下执行BACKUP TABLESPACE或BACKUP DATAFILE命令。

以下示例备份users和tools表空间到磁带:
BACKUP
  DEVICE TYPE sbt
  TABLESPACE users, tools;

以下示例使用SBT 通道备份数据文件1到4和存储在/tmp/system01.db的数据文件拷贝到磁带:
BACKUP
  DEVICE TYPE sbt
  DATAFILE 1,2,3,4
  DATAFILECOPY ‘/tmp/system01.dbf’;


3.使用RMAN备份控制文件

当数据库挂载或打开时,可以备份控制文件。RMAN使用控制文件的快照来确保一个读一致的版本。

如果CONFIGURE CONTROLFILE AUTOBACKUP命令设置为ON(缺省是OFF),那么RMAN在每次备份和数据库结构更改之后自动备份控制文件和spfile。控制文件自动备份包含之前的备份的元数据,对于灾难恢复是至关重要的。

注:可以还原在一个Data Guard数据库上做的控制文件的备份到环境中的其它任何数据库。主和备控制文件备份是可互相交换的。

如果自动备份特性没有设置,那么必须使用以下一种方式手动备份控制文件:
1) 运行BACKUP CURRENT CONTROLFILE
2) 使用BACKUP命令的INCLUDE CURRENT CONTROLFILE选项来包含控制文件的备份在备份中。
3) 备份数据文件1,因为RMAN自动包含控制文件和spfile在数据文件1的备份中。

注:如果控制文件的块大小与数据文件1的块大小不同,那么控制文件不能写到与数据文件相同的备份集中,如果块大小不同,RMAN将控制文件写到一个单独的备份集中。列V$CONTROLFILE.BLOCK_SIZE表示控制文件的块大小,而DB_BLOCK_SIZE初始化参数表示数据文件1的块大小。


3.1.关于控制文件的手动备份

控制文件的手动备份与控制文件的自动备份不相同。RMAN在备份BACKUP命令中指定的文件之后做控制文件的自动备份。

因此,自动备份(不像手动的控制文件备份)包含了关于刚刚完成的备份的元数据。另外,RMAN可以自动还原自动备份而不使用恢复目录。

可以作为备份集或映像拷贝手动备份当前的控制文件。对于备份集,RMAN首先为读一致性创建一个快照控制文件。可以配置快照控制文件的文件名称和位置。在做映像拷贝时不需要一个快照控制文件。

在Oracle RAC环境中,会应用下面的限制:
1) 快照控制文件必须在共享存储上,也就是说,可以被所有实例访问的存储。
2) 当前控制文件的映像拷贝的目的地必须是共享存储。


3.2.手动备份控制文件

可以在备份其它文件时指定INCLUDE CURRENT CONTROLFILE或指定BACKUP CURRENT CONTROLFILE来手动备份控制文件。

也可以通过指定CONTROLFILECOPY参数来备份磁盘上的控制文件拷贝。

手动备份控制文件:
1) 启动RMAN,连接到目标数据库和恢复目录(如果使用的话)。
2)确保数据库处于挂载或打开状态。
3)在RMAN提示符下执行BACKUP命令和期望的控制文件子语句。

以下示例备份表空间users到磁带和包含当前的控制文件到备份:
BACKUP DEVICE TYPE sbt
 TABLESPACE users
 INCLUDE CURRENT CONTROLFILE;


以下示例作为备份集备份当前控制文件到快速恢复区域:
BACKUP CURRENT CONTROLFILE;
RMAN首先创建快照控制文件。

以下示例作为映像拷贝备份当前控制文件到缺省的磁盘设备:
BACKUP AS COPY
 CURRENT CONTROLFILE
 FORMAT ‘/tmp/control01.ctl’;


以下示例备份在之前的示例中创建的控制文件拷贝到磁带:
BACKUP DEVICE TYPE sbt
 CONTROLFILECOPY ‘/tmp/control01.ctl’;

当备份一个控制文件拷贝时,快照控制文件是不需要的。

如果控制文件自动备份特性已启用,那么RMAN在这些示例中做2个控制文件备份:在BACKUP命令中指定的文件的显式备份和控制文件与spfile的自动备份。


4.使用RMAN备份服务器参数文件spfile

RMAN在某些情况中自动备份当前的spfile。BACKUP SPFILE命令显式备份参数文件。备份的spfile是当前被实例使用的服务器参数文件。

备份spfile:
1)启动RMAN,连接到目标数据库和恢复目录(如果使用的话)。
2)确保数据库处于挂载或打开状态。
数据库必须使用spfile启动。如果实例使用客户端的初始化参数文件pfile启动,那么RMAN在执行BACKUP … SPFILE时报错。
3)执行BACKUP … SPFILE命令。

以下示例备份spfile到磁带:
BACKUP DEVICE TYPE sbt SPFILE;


5.在非归档模式备份数据库

只有数据库在关闭和一致的状态时,才能在非归档(NOARCHIVELOG)模式下备份数据库。

以下脚本将数据库置于一致的整个数据库备份的正确模式,然后备份数据库。脚本假设控制文件的自动备份已经为数据库启用。

可以跳过表空间,比如只读表空间,但如果数据库从备份中还原,任何跳过的从上一次备份以来没有脱机的或只读的表空间会丢失。

在非归档模式备份数据库:
SHUTDOWN IMMEDIATE;

# Start the database in case it suffered instance failure or was
# closed with SHUTDOWN ABORT before starting this script.
STARTUP FORCE DBA;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;

# this example uses automatic channels to make the backup
BACKUP
 INCREMENTAL LEVEL 0
 MAXSETSIZE 10G
  DATABASE
  TAG ‘BACKUP_1’;

# Now that the backup is complete, open the database.
ALTER DATABASE OPEN;



来源:《Oracle Database Backup and Recovery User’s Guide,19c》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RMAN备份数据库_使用RMAN备份数据库文件 的相关文章

  • 是否需要显式事务回滚?

    许多例子都主张显式回滚数据库事务 大致如下 using var transaction try do some reading and or writing here transaction Commit catch SqlExceptio
  • PHP OCI8 扩展不适用于 PHP 7 64 位

    我已经安装了 APACHE 2 4 x64 和 PHP7 x64 并下载了 PHP OCI 64 位库 但问题是每当我从 cli 运行 PHP 脚本时 它都会说 PHP启动 无法加载动态库 E 软件 服务器 php 7 0 11 Win32
  • Oracle 连接池类

    我想在 Helper 类中为 Oracle DB 设置连接池 public class DbConnection Data source for the pooled connection private static OracleData
  • 数据库优化命令

    在用户可以下订单的数据库中 最好有一个包含地址的新表 还是每个订单的标题中都有地址数据 这不仅涉及用户 及其地址 还涉及您所销售产品的价格和其他信息 这些信息可能会发生变化after订单已下达 但订单本身必须保持完整 一般来说 有两种方法
  • 我怎样才能找出MySQL中的默认字符集/排序规则[重复]

    这个问题在这里已经有答案了 我在 Ubuntu 18 04 上使用 MySQL 和 MySQL Workbench 8 0 当我创建字符串类型的列时 我将字符集 排序规则保留为默认值 在 MySQL Workbench 中 它只是告诉我就是
  • 选择不同的字段和行号只是为了显示 ID 号会产生重复的数据

    我有一个表应用程序 它有 10 列 类别是一列 并且该列有重复值 为了获得不同的值 我有一个查询 SELECT distinct CATEGORY as CategoryName FROM APPLICATION where applica
  • 如何将 SELECT...INTO 与 JOIN 一起使用?

    我有以下示例代码 DECLARE myRow table rowtype myVar table2 column type BEGIN SELECT table col1 table col3 table col4 table2 colum
  • 没有 if 条件(动态查询)或乱码的Where子句中的PreparedStatement“为null”

    假设我有这样的查询 SELECT FROM CUSTOMERS WHERE CUSTOMER ID 使用PreparedStatement 我可以绑定变量 pstmt setString 1 custID 但是 我无法通过以下绑定获得正确的
  • Codeigniter - 仅当数据库中不存在电子邮件时才更新电子邮件

    我为我的用户提供了一个更新页面 他们可以在其中编辑他们的姓名 电子邮件和其他信息 到目前为止 他们可以编辑一切 包括他们的电子邮件 他们可以毫无问题地输入数据库中已存在的电子邮件 我尝试添加此表单验证规则 this gt form vali
  • 我可以停止 CakePHP 获取查询的所有行吗?

    我正在使用 CakePHP 和 modelName gt find 调用选择相当多的行 可能是数百行 通常 在 PHP MySQL 中这当然不会成为问题 因为您在 while 循环中获取它们 但是 CakePHP 将所有行加载到一个数组中
  • SQL SELECT 在父亲 ID 组织树中查找循环引用?

    带有循环引用的 乐趣 假设我有一个表 ELEMENTS 其中包含元素的层次结构 由父 ID 建模 对于根来说 父亲 ID 字段为空 所有其他记录都有一个非空父 id 和 自动排序的 主键 ID 的父元素 例如 使用 SELECT FROM
  • 在 DB2 中使用什么来表示 CURRENT_TIMESTAMP?

    我正在将一些 MySQL 语句转换为 DB2 数据库 但我在以下查询中遇到了问题 CREATE TABLE RFX EVENT MAPPING EVENT TYPE varchar 4 NOT NULL EVENT DESC varchar
  • 处理ORACLE异常

    我需要处理ORA 01400 错误 http www techonthenet com oracle errors ora01400 php 无法使用异常句柄将 NULL 插入 SCHEMA TABLE NAME COLUMN NAME O
  • 如何从函数依赖中获取最小密钥?

    我需要一些帮助和指导 我有以下关系 R A B C D E F 以及函数依赖集 F AB gt C A gt D D gt AE E gt F R 的主键是什么 如果我应用推理规则 我会得到这些额外的函数依赖项 D gt A D gt E
  • Oracle 求两个时间戳的平均值

    我不明白这有多难 但我似乎无法在任何地方找到解决方案 它是针对日期完成的 但我看不到让它适用于时间戳 我正在尝试做 select avg last timestmp ref timestmp as average from param 它一
  • 每次使用 COUNT() 函数,还是存储该值并将其加一?

    我有一个带有用户 投票 表和 用户 表的数据库 我认为数据库会在短时间内变得相当大 所以我想使用最有效的方法 我想我可以每次使用 投票 表中的 WHERE 语句来 COUNT 投票数 或者我可以将分数存储在 用户 表中 每次投票时将其增加
  • 从集合类型 Oracle 12c 插入表 - ORA-00902: 无效数据类型

    我正在使用 Oracle 12 1 我以为我可以查询 12c 中的表类型 当我尝试执行此包时 我收到错误 ORA 00902 无效数据类型 我什至尝试使用强制转换多重集 但仍然出现同样的错误 我知道我们可以在数据库级别创建对象然后查询 但我
  • 如何使用 ODBC 检查数据库是否存在

    各位程序员大家好 我已经在互联网上搜索了几天 但找不到仅使用 ODBC 和 SQL 解决此问题的通用方法 有没有办法查看数据库是否已经存在 仅使用ODBC 它必须是标准 SQL 因为用户可以选择自己选择的 DSN 即他自己的 SQL Ser
  • 创建数据库索引的最佳实践和“经验法则”有哪些?

    我有一个应用程序 它循环访问数据库表中的大量记录 并对该数据库中的记录执行大量 SQL 和 Net 操作 目前我在 PostgreSQL 上使用 Castle ActiveRecord 我在几个字段上添加了一些基本的 btree 索引 正如
  • 超时后如何重新建立 JDBC 连接?

    我有一个长时间运行的方法 它通过 EntityManager TopLink Essentials 执行大量本机 SQL 查询 每个查询只需要几毫秒即可运行 但查询数量却有数千个 这发生在单个 EJB 事务内 15 分钟后 数据库关闭连接

随机推荐

  • Linux 编译运行查找头文件和库的顺序

    linux中在使用gcc进行编译时 可能会出现找不到相应库或头文件的情况 往往让人十分头疼 因此 此文描述了库和头文件的查找顺序和一些注意事项 希望能帮助大家在出错时能够快速定位和解决 头文件 gcc在编译时按照如下顺序寻找所需要的头文件
  • set,env和export的区别

    http blog csdn net longxibendi article details 6125075 http blog chinaunix net uid 128922 id 289956 html set 显示 设置 shell
  • JSP编程手记------jsp页url中传中文参数乱码问题续

    一个偶然的机会 发现了一个解决jsp页url中传中文参数乱码的方法 比我前面说的用隐形的form表单来的更加漂亮和容易 具体方法如下 程序清单 response sendRedirect gh 0001 xm java net URLEnc
  • Qt手动设置Kits套件

    Qt编译器版本手动设置方式 文章目录 Qt编译器版本手动设置方式 前言 一 安装MSVC2019 32bit 二 手动设置kits套件 总结 前言 在给Qt Creator添加自定义控件时 遇到的版本问题让人头疼 我用的Qt5 12 10
  • 那一年读过的技术经典书

    转载请注明 http blog csdn net xinzhangyanxiang article details 10199757 大学刚毕业 总结起来读过的书并不算多 而且主要集中在大四的时期读的 在此把经典统一总结一遍 先总结机器学习
  • Qt信号和信号槽(二)

    目录 信号槽使用拓展 示例1 一个信号可以对应多个槽函数 在上篇文章的代码中进行修改 示例2 用信号连接信号 信号槽的连接方式 示例 Lambda表达式 语法格式 定义和调用 信号槽使用拓展 一个信号可以连接多个槽函数 发送一个信号有多个处
  • SpringBoot使用quartz, 注入feignClient, client为null

    使用 autowired 活着构造方法注入 打断点查看注入的feigncliet为null 搜索网上的一些博客 大致原因是因为quartz启动是通过反射将一些类注入进来 启动的时候引用这个类还没初始化好 下面是解决方案 使用spring 提
  • OpenRestry-demo

    openRestry 基于Nginx和lua的高性能web平台内置了大量lua库和第三方的模块 为了使用lua开发一些定制功能 安装环境 安装环境 yum y install pcre devel openssl devel gcc cur
  • 基本的传染病模型:SI、SIS、SIR及其Python代码实现

    本文主要参考博客 http chengjunwang com en 2013 08 learn basic epidemic models with python 该博客有一些笔误 并且有些地方表述不准确 推荐大家阅读Albert Lasz
  • 【腾讯云 Cloud Studio 实战训练营】通过云IDE构建Web3项目

    iOS开发上架主页 在强者的眼中 没有最好 只有更好 移动开发领域优质创作者 阿里云专家博主 文章目录 背景 一 前言 二 Cloud Studio 主要功能和应用场景 三 Cloud Studio 实验前期准备 3 1 打开官网 3 2
  • 在MATLAB中,用Simulink搭建一个二阶传递函数模型

    文章目录 1 模型准备 二阶传递函数模型 1 1 二阶传递函数模型 1 1 1 时域模型 1 1 2 频域模型 1 2 二阶传递函数公式和参数 2 开始建模 在simulink中搭建二阶传递函数模型 2 1 从simulink库中添加传递函
  • python选择文件夹,并自动发送这个文件夹下的所有文件(以附件的形式)至指定邮箱(通过163邮箱)

    工作中需要将自动生成的表格发送给办公邮箱继续处理 结合遍历文件夹和自动发邮件 做出了可以选择文件夹 并自动发送这个文件夹下的所有文件 以附件的形式 至指定邮箱 import smtplib from email mime multipart
  • jdk8新特性-方法引用

    1 作用 什么是方法引用 方法引用是jdk8推出的一个新特性 在一定的条件下可以替换lambda表达式 可以理解为方法引用实际上还是一个lambda表达式 lambda表达式用法可参见 https blog csdn net xiao yu
  • Centos7 使用yum命令安装软件失败,报错"Couldn't open file /media/cdrom/repodata/repomd.xml"

    今天使用CentOS7安装docker的时候 安装失败 报错 yum install docker 已加载插件 fastestmirror langpacks file media cdrom repodata repomd xml Err
  • java记录操作日志(对象修改细节)

    背景 由于业务涉及收入敏感信息 需记录数据变更前的内容和变更后的内容 但是不能为完成任务而硬编码 要适用于不同bean 针对这种情况 本文使用泛型 反射和基于AOP的自定义注解技术来完成 对对象属性的描述通过自定义注解来完成 读取里面的属性
  • 使用Cytoscape画PPI网络图

    打开Cytoscape软件 根据菜单导入string interactions tsv文件 File gt Import gt Network from File 会弹出下图对话框 在对话框中设置如下 选中string interactio
  • Spring Cloud 2020.0.0 正式发布,对开发者来说意味着什么?

    作者 YourBatman 在线教育领域资深架构师 Spring Framework 开源贡献者 冷冷 云集架构师 开源项目 pig 负责人 Spring Cloud Alibaba Committer 来源 阿里巴巴云原生公众号 北京时间
  • 生成模型的2022年——人工智能AIGC顶级论文回顾

    2022年是生成模型奇幻发展的一年 Stable Diffusion 创造了超现实主义的艺术 ChatGPT 回答了生命意义的问题 Make a Video 从文本生成了栩栩如生的马儿 DreamFusion 生成了不可思议的三维模型 多个
  • java不是纯面向对象的语言,太原java培训班:Java到底是不是一种纯面向对象语言?(二)...

    参考译文 Java官方描述 参考翻译 以上都说明 在JVM内部 其实原始类型就是对象 当你打开 Javadoc 对 Class 类的定义中 通过 CTRL F 查找关键字 primitive 将会发现证据在表面 在JVM里 它把基本类型当作
  • RMAN备份数据库_使用RMAN备份数据库文件

    1 使用RMAN备份整个数据库 可以在数据库挂载或打开时执行整个数据库备份 使用BACKUP DATABASE命令从RMAN提示符中执行整个数据库的备份 你可能想从整个数据库备份中排除特定的表空间 可以通过执行CONFIGURE EXCLU