备份理论和基本语法

备份概念

执行备份或还原的数据库称为目标。在一些环境下,有许多数据库,因此有许多RMAN目标。应一次连接每个数据库。目标的每个备份都有一些属性:

打开或关闭

完整或部分

完整或增量

到磁盘还是磁带上

副本或备份集

这些属性可以随意组合,但根据环境和配置,可能只能使用这些属性的一个子集。在所有情况下,备份由Oracle服务器进程完成,启动该进程是为了响应RMAN可执行程序用户进程中发出的命令。

1.RMAN体系结构

RMAN可执行程序是一个用户进程,与其他用户进程一样。它在本地使用进程间通信(IPC),或者远程使用TCP和数据库侦听器,登录到一个Oracle数据库上。连接后,用户就可以发出命令,执行备份和还原操作。这些操作由根据需要启动的其他Oracle服务器进程(称为通道)来完成。通道是一个服务器进程,与其他服务器进程一样,但其基本功能仅限于复制文件。

RMAN的一个主要功能是使用库。RMAN库由与备份相关的元数据组成。这包括已备份的内容、备份文件和位置、存在哪些归档日志文件、已有的永久配置设置,以及RMAN理解数据库和备份,以完全自动执行还原和恢复操作所需的所有细节。该库存在于一个或两个位置。库的一个副本总是存储在目标数据库的控制文件中。仅依赖它可能会带来连个问题。第一,信息仅存储有限的时间。具体而言,就是CONTROL_FILE_RECORD_KEEP_TIME实例参数指定的天数,默认为7天。如果仅适用基于控制文件的库,就可能希望调整它,让RMAN把信息保留更长的时间。命令如下:

SYS@ prod>sho parameter keep_time

NAME                                TYPE        VALUE------------------------------------ ----------- ------------------------------

control_file_record_keep_time        integer    7SYS@ prod>alter system set control_file_record_keep_time=30;

System altered.

SYS@ prod>

RMAN还可以用Oracle数据库的形式给库使用第二个存储位置。这需要在数据中创建一个模式,称为RMAN目录。该目录应在数据库中创建,仅用于这个目的。该目录可以记录许多目标的元数据,用作所有备份信息的中心库。使用目录时,备份信息可以存储的时间段是没有限制的。使用目录还可以启用一些更高级的RMAN功能。

RMAN可以创建两类备份:映像副本和备份集。映像副本备份会生成一个输出文件,其中的每个字节都与输入文件相同。备份集是一种比较智能的结构。它可以把几个输入文件合并到一个输出文件中,不包含从来没有使用的输入文件块,可以压缩和加密,可以分解为多个块。这些块是构成备份集的物理文件。

2.在一个页面中备份

打开备份(也称为热备份或不一致备份)在数据库使用过程中进行。只有数据库在归档日志模式下,才能进行打开备份。这是因为可打开文件的任何备份都是不一致的。读取文件和写入副本要花相当长的时间,在这个过程中,文件可能已更新。因此,副本吧听不是文件的一个稳定版本。在归档日志模式下,这就不是什么问题,因为重做日志流会以变更矢量的形式记录应用于文件的所有变更,在备份的过程中,这些变更会应用于Oracle 块。如果需要从备份中还原文件,就可以应用这些变更,使用重做流中的信息,是不一致的备份可用。如果数据库没有处于归档日志模式,进行备份时执行的重做就不可用。

关闭备份(也称为冷备份或抑制备份)在数据库处于装载模式时进行。控制文件必须装载,RMAN才能访问其库。关闭备份是一致的;数据文件是稳定的,关闭备份时数据库处于非归档日志模式下时唯一可用的备份类型。

完整备份时备份所有数据文件和控制文件。局部备份是备份数据库的一个子集。完整备份是非归档日志模式下唯一可用的备份类型。这是由于要打开数据库,因此所有的数据文件必须有相同的系统变更号(SCN)。如果备份包含几个局部备份,每个局部备份就有不同的SCN。之后还原时,就需要重做数据,使所有的备份具有相同的SCN。这些重做数据不能在非归档日志模式下使用。

完整备份包含每个文件中每个使用过的块。增量备份只有自上一次备份以前改变的块。增量备份策略必须从一个完整备份开始,之后可以有随意多次增量备份,但还原总是需要先还原完整备份(称为0级备份),再应用增量备份,使文件保持最新。只有进行了新的0级备份,才能丢弃以前的备份。

RMAN基本语法

RMAN可执行程序在操作系统提示行上的命令:

rman target /rman target sys/oracle

rman target sys/oracle@orclz

所有3个命令都以具备SYSDBA权限的用户身份登录到目标数据库上。在第一个命令中,目标是一个运行在同一台机器上的本地数据库实例,该机器用ORACLE_SID环境变量标识,用户用其操作系统账户进行身份验证。第二个例子也连接一个本地数据库实例,但使用数据库密码文件来验证身份。第三个例子使用tnsnames服务名,通过网络连接一个远程数据库,它也使用密码文件来验证身份。

1.在非归档日志模式下备份

使用RMAN进行关闭的完整备份

[oracle@linuxidc ~]$ rman target /Recovery Manager: Release11.2.0.1.0 - Production on 鏄熸湡涓€ 4鏈?8 20:26:52 2019Copyright (c)1982, 2009, Oracle and/or its affiliates. Allrights reserved.

connectedto target database: PROD (DBID=292420020)

RMAN> shutdownimmediate;

using targetdatabase control file instead ofrecovery catalogdatabasecloseddatabasedismounted

Oracle instance shut down

RMAN>startup mount

connectedto target database (notstarted)

Oracle instance starteddatabasemounted

Total System Global Area523108352bytes

Fixed Size1337632bytes

Variable Size394266336bytesDatabase Buffers 121634816bytes

Redo Buffers5869568bytes

RMAN> backup database;

Startingbackup at 2019-04-08 20:28:01allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=18 device type=DISKchannel ORA_DISK_1: startingfull datafile backup setchannel ORA_DISK_1: specifying datafile(s)in backup setinput datafilefile number=00001 name=/u01/oradata/prod/system01.dbf

input datafilefile number=00002 name=/u01/oradata/prod/sysaux01.dbf

input datafilefile number=00003 name=/u01/oradata/prod/undotbs01.dbf

input datafilefile number=00005 name=/u01/oradata/prod/example01.dbf

input datafilefile number=00004 name=/u01/oradata/prod/users01.dbf

channel ORA_DISK_1: starting piece1 at 2019-04-08 20:28:03channel ORA_DISK_1: finished piece1 at 2019-04-08 20:29:08piece handle=/u01/flash_recovery_area/PROD/backupset/2019_04_08/o1_mf_nnndf_TAG20190408T202802_gbphlm1z_.bkp tag=TAG20190408T202802 comment=NONE

channel ORA_DISK_1:backup set complete, elapsed time: 00:01:05channel ORA_DISK_1: startingfull datafile backup setchannel ORA_DISK_1: specifying datafile(s)in backup setincludingcurrent control file in backup setincludingcurrent SPFILE in backup setchannel ORA_DISK_1: starting piece1 at 2019-04-08 20:29:09channel ORA_DISK_1: finished piece1 at 2019-04-08 20:29:10piece handle=/u01/flash_recovery_area/PROD/backupset/2019_04_08/o1_mf_ncsnf_TAG20190408T202802_gbphnor0_.bkp tag=TAG20190408T202802 comment=NONE

channel ORA_DISK_1:backup set complete, elapsed time: 00:00:01Finishedbackup at 2019-04-08 20:29:10RMAN> alter database open;databaseopened

RMAN> exitRecovery Manager complete.[oracle@linuxidc ~]$

2.归档日志模式下的备份可能性

下面是一些简单的备份命令:

BACKUP DATAFILE 1,2;

BACKUP TABLESPACE USERS,EXAMPLE;

BACKUP CURRENT CONTROLFILE;

BACKUP DATABASE;

BACKUP ARCHIVELOG ALL;

通常,单行命令是不够的。要把几个命令链接起来,必须把它们组合到一个块中。块用RUN作为前缀,并括在{}中。一个打开的完成备份,包括归档日志文件的备份呵呵删除,示例:

RMAN> run {allocate channel d1 type disk;2> allocate channel d2 type disk;3> backup as compressed backupset database format '/home/oracle/db_%U.bset';4> backup as compressed backupset archivelog all format '/home/oracle/arch_%U.bset' delete allinput;}

allocated channel: d1

channel d1: SID=35 device type=DISKallocated channel: d2

channel d2: SID=1 device type=DISKStartingbackup at 2019-04-08 20:46:57channel d1: starting compressedfull datafile backup setchannel d1: specifying datafile(s)in backup setinput datafilefile number=00001 name=/u01/oradata/prod/system01.dbf

input datafilefile number=00005 name=/u01/oradata/prod/example01.dbf

channel d1: starting piece1 at 2019-04-08 20:46:58channel d2: starting compressedfull datafile backup setchannel d2: specifying datafile(s)in backup setinput datafilefile number=00002 name=/u01/oradata/prod/sysaux01.dbf

input datafilefile number=00003 name=/u01/oradata/prod/undotbs01.dbf

input datafilefile number=00004 name=/u01/oradata/prod/users01.dbf

channel d2: starting piece1 at 2019-04-08 20:46:58.

.

.

.

.

在run块中,前两个命令ALLOCATE CHANNEL,分配一个通道,会启动一个服务器进程。每个通道都需要名称(只是一个随意的字符串,本例是d1和d2),必须指定是使用磁带还是磁盘作为备份目标。启动多个通道,会启用备份的并行性。RMAN会把工作负载分布到通道上。第三行指定完整的数据库备份,使用FORMAT指定输出块的名称。第四行指定所有的归档日志文件都应备份和删除。FORMAT规范包含%U。这是一个变量,会扩展为一个名称,该名称包含8字符的任意字符串,以确保块运行多次时,总是生成不同的块名。备份的类型是COMPRESSED BACKUPSET。压缩通常不仅会减少备份块的大小,还会提高操作的速度。

默认的备份类型是备份集。另一个类型是映像副本。要撞见副本,可以使用如下命令:

BACKUP AS COPY DATAFILE '/u01/oradata/orcl/system1.dbf'FORMAT'/U02/backup/orcl/system01.dbf';

BACKUP AS COPY DATABASE;

第一个命令把一个数据文件复制到指定的目标。第二个命令把整个数据库复制到默认的目标,即快速恢复区。

永久RMAN设置

1.设置和清理默认值

使用SHOW ALL命令查看默认值

RMAN> show all;

RMAN configuration parametersfor database withdb_unique_name PROD are:

CONFIGURE RETENTION POLICYTO REDUNDANCY 1; # defaultCONFIGUREBACKUP OPTIMIZATION OFF; # defaultCONFIGUREDEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUPOFF; # defaultCONFIGURE CONTROLFILE AUTOBACKUP FORMATFOR DEVICE TYPE DISK TO '%F'; # defaultCONFIGURE DEVICE TYPEDISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # defaultCONFIGURE DATAFILEBACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE ARCHIVELOGBACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE MAXSETSIZETO UNLIMITED; # defaultCONFIGURE ENCRYPTIONFOR DATABASE OFF; # defaultCONFIGURE ENCRYPTION ALGORITHM'AES128'; # defaultCONFIGURE COMPRESSION ALGORITHM'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # defaultCONFIGURE ARCHIVELOG DELETION POLICYTO NONE; # defaultCONFIGURE SNAPSHOT CONTROLFILE NAMETO '/u01/oracle/dbs/snapcf_prod.f'; # defaultRMAN>

RETENTION POLICY 指定RMAN应创建什么备份,合适可以删除它们。默认值是每个文件的一个副本。

OPTIMIZATION 确定,即使已有足够的备份,RMAN是否仍要根据请求备份文件。默认值是总是备份它们。

DEFAULT DEVICE TYPE TO DISK 表示除非明确指出,否则RMAN就仅启动磁盘通道,不写入磁带。

CONTROLFILE AUTOBACKUP OFF 禁止RMAN自动备份控制文件,作为其他备份操作的一部分。

AUTOBACKUP FORMAT 为控制文件的自动备份生成名称和位置。

DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET 表示,在默认情况下,备份到磁盘时,只启动一个通道,该备份是一个未压缩的备份集。

BACKUP COPIES 指定在备份数据文件和归档日志文件时,应生成备份集的多少副本。

MAXSETSIZE 可以限制每个备份集的大小。如果达到了这个数字,就关闭该备份集块,继续备份到一个新的备份集中。

ENCRYPTION 默认禁用备份集的加密。

COMPRESSION 如果请求压缩,就使用BASIC算法,它是免费的。

ARCHIVELOG DELETION POLICY 允许RMAN根据各种条件,自动删除不再需要的归档日志。

SNAPSHOT CONTROLFILE 为控制文件的临时副本指定名称和位置,这些临时副本创建为控制文件备份机制的一部分。

需求示例:总是可以把数据库还原到前两周的任意时刻;创建达到该目标所需的备份,备份写入磁盘,使用4个通道的并行程度;控制文件必须总是包含在任何备份中;备份是压缩过的备份集,存储在c:\db_backups目录中;备份集块根据库名、备份日期和唯一字符串来命名;归档日志在备份到磁盘上两次后删除。要配置这个需求,应运行如下命令:

configure retention policy to recovery window of 14days;

configurebackup optimization on;

configure controlfile autobackupon;

configure device typedisk parallelism 4 backup type tocompressed backupset;

configure channel device typedisk format 'c:\db_backups\%d_%T_%u';

configure archivelog deletion policyto backup 2 times to disk;

在使用命令就能满足上述需求:

backup database;backup archivelog all delete input;

永久配置设置是为每个目标数据库配置的,存储在RMAN库中,要返回默认值,可以连接目标,执行CLEAR命令:

configure retention policy clear;

configurebackupoptimization clear;

configure controlfile autobackup clear;

configure device typediskclear;

configure channel device typediskclear;

configure archivelog deletion policy clear;

2.使用保留策略

使用恢复窗口或冗余,就可以自动保留和管理备份。使用恢复窗口,RMAN会分局需要保留许多备份,知道数据库返回恢复窗口的任意时间点位置。例如,在7天的恢复窗口中,RMAN会维护足够多的映像副本、增量备份和归档重做日志,确保数据库可以还原和恢复前7天内的任意时间点。如果使用快速恢复区,且新备份需要磁盘空间,则不需要支持这个恢复窗口的任何备份都标记为OBSOLETE,并由RMAN自动删除。

相反,冗余策略告诉RMAN保留特定数量的备份。超过冗余策略中的指定的数字的任何额外副本或备份都标记为OBSOLETE。与恢复窗口一样,如果需要磁盘空间,使用了快速恢复区,则过时的备份会自动删除。否则,可以使用DELETE OBSOLETE命令手工删除备份文件,更新目录。

如果保留策略设置为NONE,任何备份或副本就都不会过时,DBA必须手工删除目录和磁盘中不需要的备份。默认情况下,保留策略是一个副本(保留策略设置为1)。使用下面的RMAN命令,可以把保留策略设置为两个副本:

configure retention policy to redundancy 2;

下面的命令把保留策略设置为4天的恢复窗口:

configure retention policy to recovery window of 4 days;

Oracle最佳实践建议,使用恢复窗口,在发现错误之前执行时间点恢复。

当RMAN外部的备份系统把磁盘备份存储到磁带中,并删除了它们时,禁用保留策略是有用的。

configure retention policy to none;

3.格式指定符

为了生成名称,需要配置永久格式指定符,使用字面量(如目录名)和变量组合。变量如下:

%d 数据库名

%e 归档日志序列号

%f 绝对文件号

%F 组合数据库标识符(DBID)、日期、月份、年份和序列号,用短横线隔开

%c 双重备份中多个副本的副本号

%I DBID

%N 表空间名,占8个字符

%t 备份集时间戳

%p 备份集中的块号

%s 备份集号

%u 实际上,是8个随机字符,派生与备份集号和时间

%U 系统生成的唯一文件名(默认)。对于备份集,它等价于%u_%p_%c;对于数据文件影响副本,它是data-D-%d_id-%I_TS-%N_FNO-%f_%u;对于归档日志映像副本,它是arch-D-%d_id-%I_S-%e_T-%h_A-%a_%u;对于控制文件映像副本,它是cf-D_%d-id-%I_%u

oracle rman备份时间,Oracle使用RMAN进行备份详述相关推荐

  1. oracle rman备份时间,Oracle RMAN备份还原方案

    1.修改rman配置,能够恢复到7天内的任一时间点 su - oracle rman target / configure retention policy to recovery window of ...

  2. oracle精确匹配时间,Oracle时间精确到时、分、秒处理方法

    Oracle时间精确到时.分.秒处理方法 一般数据库中时间的格式为DATE类型,而我们从页面中获取的时间往往为String类型,这个就需要类型的转换.一般我们会通过调用 Java.text.Simpl ...

  3. oracle大于字符串时间,Oracle

    字符串类型的数据可依 编码方式 分成 数据库字符集 (CHAR/VARCHAR2/CLOB/LONG)和 国际字符集(以 N 开头) (NCHAR/NVARCHAR2/NCLOB)两种. 数据库中的字 ...

  4. oracle认证大师时间,oracle认证考试时间在什么时候

    Oracle认证考试主要分为三个级别的认证 ,其中包括了OCA认证专员.OCP认证专家和OCM认证大师,那么考试的具体时间是什么时候呢?我们一起来了解一下. Oracle考试时间 OCP考试没有时间限 ...

  5. oracle转换当前时间,oracle数据库中时间转化方法分享

    摘要: 下文讲述oracle数据库中时间转化方法分享,如下所示: 一.toChar 1.取得当前日期是本月的第几周 select to_char(sysdate,'W') from dual; sel ...

  6. oracle当前毫秒时间,oracle获得当前时间,精确到毫秒并指定精确位数

    oracle获得当前时间的,精确到毫秒   可以指定精确豪秒的位数 select to_char(systimestamp, 'yyyymmdd hh24:mi:ss.ff ') from dual; ...

  7. oracle中插曲时间,Oracle 11G 数据库迁移【expdp/impdp】

    0x01 环境 A 机器,操作系统 CentOS7.3,Oracle版本:11G,IP地址:192.168.1.11 B 机器,操作系统 CentOS7.3,Oracle版本:11G,IP地址:192 ...

  8. oracle密码锁屏时间,Oracle Linux OEL7 如何关闭屏保和锁屏功能

    Oracle Linux OEL7 如何关闭屏保和锁屏功能 为每一个单独用户设置屏保和锁屏时间: $ gsettings set org.gnome.desktop.session idle-dela ...

  9. oracle存储格式化时间,ORACLE日期时间的格式化参数大全

    经常遇到有朋友问询关于日期时间格式化的问题(或可以通过格式化轻易解决),经过参考Oracle SQL Reference官方文档,并附上详细的应用示例综合成文,希望能够对大家学习和使用有所帮助.本篇可 ...

最新文章

  1. attribute 'groups' of type 'int' is not usable in a script method
  2. python 向量_关于Python中的向量相加和numpy中的向量相加效率对比
  3. SharePoint 2013 开启訪问请求
  4. .Net5发布在即,当心技术断层!
  5. mysql 检查点_my05_mysql检查点简述
  6. 2017.12.20-21
  7. 微信收款音响s3服务器断开,微信收款音响s2和s3有什么区别
  8. python列表转换成数字_Python中列表元素转为数字的方法分析
  9. 计算机上课创意互动游戏初中,16个课前热身小游戏:让每一堂课都充满新鲜感...
  10. dataframe 众数的方法_pandas 第11篇:DataFrame-数据处理(分组、聚合、窗口、相关、统计)...
  11. 数据挖掘10大算法(1)——PageRank
  12. eve-ng 添加dynamips镜像文件
  13. 【Qt学习之路】我的Qt历程
  14. DialogBox不显示对话框的原因分析
  15. 计算机合成图像的过程码,专转本计算机习题
  16. 基于matlab各滤波器源代码,基于matlab各滤波器源代码
  17. 关于Altium AD20出现的Net NetU2_26 contains floating input pins (Pin U2-26)Net NetU2_26 has only one pin
  18. 电源篇 -- 非隔离开关电源
  19. 盐城北大青鸟“致最爱的你”感恩母亲节特别活动
  20. AD转换器的参数介绍

热门文章

  1. 【OpenCV 4开发详解】分割图像——分水岭法
  2. 链表问题2——在单链表中删除倒数第K个节点
  3. 如何用node开发自己的cli工具
  4. AC3 bit allocation
  5. 公路修建问题(二分+最小生成树)
  6. WordPress工作原理之程序文件执行顺序
  7. Oracle事务处理—隔离级别
  8. 几个不错的网页载入页面
  9. oracle acfs 快照,20C 新特性 ORACLE ACFS 基于文件的快照
  10. eslint vscode 自动格式化_配置VSCode编辑器适配VUE3开发