Oracle 使用RMAN进行备份
备份理论和基本语法
备份概念
执行备份或还原草的数据库称为目标。在一些环境下,有许多数据库,因此有许多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 7
SYS@ 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@cuug ~]$ rman target / Recovery Manager: Release 11.2.0.1.0 - Production on 鏄熸湡涓€ 4鏈?8 20:26:52 2019 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. connected to target database: PROD (DBID=292420020) RMAN> shutdown immediate; using target database control file instead of recovery catalog
database closed
database dismounted
Oracle instance shut down RMAN> startup mount connected to target database (not started)
Oracle instance started
database mounted Total System Global Area 523108352 bytes Fixed Size 1337632 bytes
Variable Size 394266336 bytes
Database Buffers 121634816 bytes
Redo Buffers 5869568 bytes RMAN> backup database; Starting backup at 2019-04-08 20:28:01
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=18 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/oradata/prod/system01.dbf
input datafile file number=00002 name=/u01/oradata/prod/sysaux01.dbf
input datafile file number=00003 name=/u01/oradata/prod/undotbs01.dbf
input datafile file number=00005 name=/u01/oradata/prod/example01.dbf
input datafile file number=00004 name=/u01/oradata/prod/users01.dbf
channel ORA_DISK_1: starting piece 1 at 2019-04-08 20:28:03
channel ORA_DISK_1: finished piece 1 at 2019-04-08 20:29:08
piece 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:05
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 2019-04-08 20:29:09
channel ORA_DISK_1: finished piece 1 at 2019-04-08 20:29:10
piece 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:01
Finished backup at 2019-04-08 20:29:10 RMAN> alter database open; database opened RMAN> exit Recovery Manager complete.
[oracle@cuug ~]$
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 all input;} allocated channel: d1
channel d1: SID=35 device type=DISK allocated channel: d2
channel d2: SID=1 device type=DISK Starting backup at 2019-04-08 20:46:57
channel d1: starting compressed full datafile backup set
channel d1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/oradata/prod/system01.dbf
input datafile file number=00005 name=/u01/oradata/prod/example01.dbf
channel d1: starting piece 1 at 2019-04-08 20:46:58
channel d2: starting compressed full datafile backup set
channel d2: specifying datafile(s) in backup set
input datafile file number=00002 name=/u01/oradata/prod/sysaux01.dbf
input datafile file number=00003 name=/u01/oradata/prod/undotbs01.dbf
input datafile file number=00004 name=/u01/oradata/prod/users01.dbf
channel d2: starting piece 1 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 parameters for database with db_unique_name PROD are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/oracle/dbs/snapcf_prod.f'; # default RMAN>
- 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 14 days;
configure backup optimization on;
configure controlfile autobackup on;
configure device type disk parallelism 4 backup type to compressed backupset;
configure channel device type disk format 'c:\db_backups\%d_%T_%u';
configure archivelog deletion policy to backup 2 times to disk;
在使用命令就能满足上述需求:
backup database;
backup archivelog all delete input;
永久配置设置是为每个目标数据库配置的,存储在RMAN库中,要返回默认值,可以连接目标,执行CLEAR命令:
configure retention policy clear;
configure backup optimization clear;
configure controlfile autobackup clear;
configure device type disk clear;
configure channel device type disk clear;
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的备份信息总结
关于Oracle数据库的RMAN备份,除了邮件外,是否能通过其它方式检查RMAN备份的成功与失败呢?其实我们可以通过下面SQL脚本来检查某个时间段备份失败的记录: SELECT * FROM V$RM ...
- 转 ORACLE 查看RMAN的备份信息总结
http://www.cnblogs.com/kerrycode/p/5684768.html 关于Oracle数据库的RMAN备份,除了邮件外,是否能通过其它方式检查RMAN备份的成功与失败呢?其实 ...
- Oracle 12 Rman增量备份
增量备份 增量备份主要作用是仅复制自上次备份以来已更改的数据块.您可以使用RMAN创建数据文件,表空间或整个数据库的增量备份. 将增量备份作为策略的一部分的主要原因是: 用于基于增量更新备份的策略,其 ...
- oracle11gRAC环境使用RMAN增量备份方案
转摘:http://blog.itpub.net/29819001/viewspace-1320977/ [oracle@zx ~]$ rman target /Recovery Manager: R ...
- Oracle 12c: RMAN restore/recover pluggable database
查看数据库状态 运行在归档模式,可拔插数据库name=pdborcl SQL> archive log list; Database log mode Archive Mode Automati ...
- oracle数据库rman备份计划及恢复
1.rman完全恢复的前提条件:历史的datafile,controlfile和spfile备份,加上完整的archivelog和完好的redolog. 2.rman备份脚本: a.RMAN 0级备份 ...
- Oracle 12c RMAN备份文档
创建备份目录,查看剩余空间 [cistest@cistest ~]$ df -h df: '/home/oratest/.gvfs': Permission denied Filesystem Siz ...
- Oracle Rman 控制RMAN的备份时间,减少IO消耗
一.问题描述 由于服务器配置不高,备份策略为周末全备.周一至周六差异备份. 平时服务器CPU使用30%左右. 全备份时,开启两个通道,CPU达到70%-80%左右,业务不卡顿.不掉单,session不 ...
- Oracle Rman 增量备份与差异备份
一.增量与差异 关于Incremental增量备份级别: Oracle 9i 共有五种级别 0 1 2 3 4,0级最高-4级最低,0级是1级的基础以此类推. Oracle 10g官方文档明确指出增量 ...
随机推荐
- css权威指南读书笔记-第10章浮动和定位
这一章看了之后真是豁然开朗,之前虽然写了圣杯布局和双飞翼布局,有些地方也是模糊的,现在打算总结之后再写一遍. 以下都是从<css权威指南>中摘抄的我认为很有用的说明. 浮动元素 一个元素浮 ...
- 浏览器根对象window之history
1. history(H5) Window.history保存用户在一个会话期间的网站访问记录,用户每次访问一个新的URL即创建一个新的历史记录. 1.1 length 返回浏览器历史列表中的 URL ...
- IoT Gateway Based on OSGi
1. OSGi Knowleage 2. OSGi.Net on Windows 3. OSGi with JAVA 4. OSGi with Qt and C++ 5. Architecture o ...
- RecyclerView之UI与数据绑定
package activity.cyq.com.learnrsv; import android.support.v7.widget.RecyclerView; import android.vie ...
- [译] Z-variant (Z变体)
阅读目录 1. Z轴上的区别 2. 问题 Unihan 的 kZVariant 字段 译自: en.wikipedia.org/wiki/Z-variant | 已发布zh.wiki 在Unicode ...
- JDK自带工具native2ascii
背景:在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,比如常见的validator验证用的消息资源(properties)文件就需要进行Unicode重新编码.原因是java ...
- yum 安装 lnmp
一. 系统 更新 yum -y update 二. 安装nginx 创建文件 vim /etc/yum.repos.d/nginx.repo 文件内容,这配置是安装最新的稳定版1.8 [nginx] ...
- Python初学者第十六天 文件处理操作练习
16day 练习:模拟登陆 1.用户输入账号密码进行登陆: 2.用户信息保存在文件内: 3.用户密码输入错误三次后,锁定用户,下次登陆,检测到这个用户再也登陆不了 #获取用户名及密码f_user = ...
- CSMA/CD 3
一.二进制指数类型退避算法 (truncated binary exponential type) 发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据. 目的:重传时再次发生碰撞的 ...
- CentOS使用PXE网络启动自动安装操作系统
PXE工作原理简介 PXE (Preboot Excution Environment) 预启动执行环境 工作环境介绍: 要实现PXE自动网络安装CentOS至少需要两台主机 1)PXE服务器PXE ...