首页 > 数据库 >Oracle-Rman备份全解析

Oracle-Rman备份全解析

时间:2023-07-17 12:22:27浏览次数:47  
标签:RMAN CONFIGURE default 备份 Oracle Rman backup rman

RMAN备份数据库物理文件到备份集(backupset)中。在创建备份集时,仅备份已经使用的数据库(不备份空闲的数据块),而且还可以采用压缩功能。

RMAN恢复时指当数据库出现介质失败时,使用RMAN命令转储(restore)并恢复(recover)数据库的方法,使用restore命令进行备份文件的转储,然后使用recover命令进行恢复。

RMAN执行命令方式

  • 交互式

    一条一条命令执行并等待其反馈。

    如:
    
crosscheck backup;
delete expired backup;
  • 批处理脚本

    将一批命令放入到run{} 语句块中批量执行。


run{
  crosscheck backup;
  delete expired backup;
  backup database;
}

RMAN与建立数据库连接

本地连接:

rman target /

# nocatalog表示rman没有创建恢复目录,将rman备份信息存储到控制文件中
rman target / nocatalog

远程连接:

rman target sys/PASSWD@网络连接串 nocatalog

或者进入rman后再连接:

rman
RMAN>connect target /

1、traget表示目标数据库。

2、如果添加nocatalog,则表示rman没有建立恢复目录,此时将使用目标数据库的控制文件代替恢复目录(就算不写他也会使用控制文件代替)

RMAN默认配置

官方文档:

https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/configuring-rman-client-basic.html

https://docs.oracle.com/en/database/oracle/oracle-database/19/rcmrf/CONFIGURE.html

进入rman后输入命令查看RMAN当前配置:show all

[oracle@swq ~]$ rman target /

Recovery Manager: Release 11.2.0.1.0 - Production on Mon Aug 1 11:33:23 2022

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1638871046, not open)

**# 查看RMAN当前配置。show all;**
RMAN> show all;
### [**因为当前没有建立恢复目录,所以提示使用控制文件代替恢复目录存储RMAN备份信息。**](https://www.wolai.com/ggEsY3Z8UgLF8dQPbMwtw#2foP1XkMcnFaNHuF4F4XWz)
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name ORCL are:
**# 备份冗余策略,即下次将这次备份的文件标记为过期(obsolete)状态。
# 后面可以使用delete obsolete;来删除过期备份。**
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
**# 是否开启备份优化**
CONFIGURE BACKUP OPTIMIZATION OFF; # default
**# 备份介质,默认是磁盘,也可以是磁带**
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
**# 是否自动备份控制文件
# off:默认情况下,在备份system表空间时,会自动备份controlfile(控制文件)和spfile(服务参数文件)
# on:1、在做任何文件的备份时,都会自动备份controlfile和spfile
#   2、数据库的物理结构发生变化时,也自动备份controlfile(延迟创建)**
CONFIGURE CONTROLFILE AUTOBACKUP OFF;# default 
**# 自动备份控制文件的格式定义**
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'autoback_arch_%F';
# 备份并行度。
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 '/data/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_orcl.f'; # default

备份保留策略RETENTION POLICY

用于确定备份和归档日志必须为媒体恢复保留多长时间。保留策略可以从备份冗余和恢复窗口两方面定义。RMAN保留满足当前保留策略所需的数据文件备份,以及完全恢复这些数据文件备份所需的任何归档重做日志。

在rman默认配置中有这么一行配置:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1;

该配置是用来决定哪些备份文件的状态是否为obsolete(过时的)或者是available(可用的)

1)冗余度策略redundancy,给定至少需要保留最近的N份备份,更早的备份会被obsolete

例如,如果有3个备份,而冗余数是2,那么最早的那个备份(即第1个备份)将被废弃

2)恢复窗口策略recovery window,指定一个时间窗口,此策略将保证必须能恢复此时间段内任一个时刻的数据

obsolete和expired的区别:

obsolete:过时的,根据保留策略,restore时不使用,可以删除,但依然有效

expired过期的,无效的

recovery window恢复窗口

至少有一个备份能恢复到sysdate-7的时间点上,之前的备份将标记为obsolete

CONFIGURE RETENTION POLICY TO recovery window of 7 days;

reduadancy冗余度

CONFIGURE RETENTION POLICY TO redundancy 2;

不使用保留策略

CONFIGURE RETENTION POLICY TO none;

不会将备份标记为obsolete状态

清除、恢复默认配置

CONFIGURE RETENTION POLICY clear;

保留策略实验:redundancy 1

设置备份保留策略为:冗余度 1,连续备份2次同一个数据文件,查看是否有obsolete的备份

创建存放 rman 备份目录

mkdir /u01/backup/rman ls -ld /u01/backup/rman

**列出构成数据库的数据文件 **

report schema;

**备份users01.dbf数据文件 **

backup datafile 7 format '/u01/backup/rman/users_%d_%T_%U.bak';

列出obsolete备份

report obsolete;

**再次备份users表空间 **

backup tablespace users format '/u01/backup/rman/users_%d_%T_%U.bak';

列出过时obsolete备份

report obsolete;

**删除过时备份 **obsolete

delete obsolete;

再次列出过时备份****obsolete

report obsolete;

查看备份列表

list backup;

也可以删除未过时的指定备份集****obsolete

list backup; 
delete backupset 3;
list backup;

备份优化backup optimization

第二行:CONFIGURE BACKUP OPTIMIZATION OFF; # default

如果优化设置打开,针对归档日志,只读或脱机表空间的数据文件,因为这些文件是不会变化的,备份集运行一个优化算法,全库备份时跳过重复的备份文件

备份优化选项依赖于RETENTION POLICY策略,如果启用优化,在已有足够相同文件副本的情况下(r+1),RMAN将不创建额外的文件副本

开启备份优化选项

CONFIGURE BACKUP OPTIMIZATION on;

将users表空间设置为只读

alter tablespace users read only; select tablespace_name,status from dba_tablespaces;

做三次全库备份

注意第3次全备时,users表空间不备份,redundancy为1,保留2份

backup database format '/u01/backup/rman/db_%d_%T_%U.bak'; 
backup database format '/u01/backup/rman/db_%d_%T_%U.bak'; 
backup database format '/u01/backup/rman/db_%d_%T_%U.bak';
list backup;

将users表空间恢复为可读写

alter tablespace users read write;

备份介质(默认备份到什么物理设备)

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

设备类型有两种,可以是磁盘(DISK),或者磁带(STB),默认为磁盘

控制文件自动备份

CONFIGURE CONTROLFILE AUTOBACKUP ON; # default 

设置控制文件自动备份

off:默认情况下,在备份system表空间时,会备份controlfile和spfile

on:①在做任何文件的备份时,都会自动备份controlfile和spfile

②数据库的物理结构发生变化时,也自动备份controlfile(延迟创建)

默认off时,备份users表空间时不备份controlfile和spfile

控制文件自动备份路径、名称

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; #default

给出控制文件自动备份的路径和命名方式,缺省是‘%F’,控制文件自动备份将放入db_recovery_file_dest目录下,也可以指定到其他地方,如:

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/backup/rman/%F';

关于%:%告诉RMAN要使用的格式模板,以便备份文件的命名引用预定的格式

  • %d  数据库名称
  • %u  一个八个字符的名称代表备份集与创建时间
  • %p  该备份集中的备份片号,从1开始到创建的文件数
  • %c  备份片的拷贝数
  • %U  系统获取的一个唯一的文件名
  • %T 年月日格式(YYYYMMDD)

当开启控制文件自动备份AUTOBACKUP ON后,控制文件备份将放入指定的目的地,这样RMAN在恢复控制文件备份时能自动找到控制文件备份。即和restore controlfile from autobackup命令配套

【备份并行度、分配通道】

并行度和RMAN工作效率有直接关系。

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default 

注意:定义备份的位置使用format子句大致有三种形式,以局部优先级更高为原则:

1) 在环境变量里定义,如:

CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT '/u01/backup/rman/%U.bak'; 

2****) 在run块中定义,如:

run{
allocate channel c1 type disk format '/u01/backup/rman/%s.bak';
};

3)在backup语句中定义,如:

backup datafile 4 format '/u01/backup/rman/%d_%s.bak';

删除所有备份

delete backup;
list backup;

实验:只设置并行度为2

CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;

备份语句中指定备份路径,默认分配两个通道:

backup database format '/u01/backup/rman/db_%U.bak';

实验:设置并行度2,指定2个通道及路径

configure channel 1 device type disk format '/u01/backup/rman/%U.bak';
configure channel 2 device type disk format '/u01/backup/rman/%U.bak';  
show all;  
backup database;

实验:并行度恢复为1,设置2个channel时第二个忽略

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;
show all;

取消通道分配

CONFIGURE CHANNEL 1 DEVICE TYPE DISK clear;
CONFIGURE CHANNEL 2 DEVICE TYPE DISK clear;

删除所有备份

delete backup;

分配通道的语句通常在备份脚本run{}内部书写 allocate channel/release channel 分配通道/释放通道

run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup ....
release channel c1;
release channel c2;
}

【多重备份集 多路复用】

默认配置:
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default 

实验:双重备份集

方法一:通过配置设置

**创建第二个备份目录 **

mkdir /u01/backup/rman2

环境变量中配置

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;

backup tablespace users format '/u01/backup/rman/%U.bak','/u01/backup/rman2/%U.bak';

恢复默认配置

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK clear;

delete backup;

方法二:备份语句中指定

backup copies 2 tablespace users format '/u01/backup/rman/%U.bak','/u01/backup/rman2/%U.bak';

【归档备份 多路复用 】

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default 

归档日志的多路复用,类似数据文件多路复用 ,也就是备份时备份多少份。

备份集最大尺寸 maxsetsize

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

该配置限制通道上备份集的最大尺寸,单位支持Bytes 、KB、MB、GB,默认值是 unlimited,可以在备份语句中设置 。

加密encryption

第十行: CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

第十一行: CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

加密,Transparent encryption透明的加密,带钱夹,Password encryption:不带钱夹

压缩备份compression

CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZEFOR LOAD TRUE ; # default

压缩只能是针对backupset

不要将RMAN的压缩和外部压缩实用程序混合在一起做(考点)

可以在备份语句中使用压缩关键字as compressed backupset

backup tablespace users format '/u01/backup/rman/%U.bak'; 
backup as compressed backupset tablespace users format '/u01/backup/rman/%U.bak';

查看生成的备份对比

list backup of tablespace users;

V$RMAN_OUTPUT视图

第十三行:RMAN OUTPUT TO KEEP FOR 7 DAYS; # default

设置了V$RMAN_OUTPUT保留的天数。默认为7天,V$RMAN_OUTPUT视图里面记录了RMAN执行的一些操作,例如删除归档日志等

可以自己用select * from v$rman_output查看以下。

归档删除策略

第十四行:CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

对于归档文件,可以根据保留策略,在备份脚本中指定删除归档文件的语句

控制文件快照

第十五行:CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/oracle/dbs/snapcf_prod.f'; #default

目标库控制文件与catalog目录库做全同步或者备份当前控制文件时的时候,需要建立一个controlfile的快照,这个参数指定快照存放位置

标签:RMAN,CONFIGURE,default,备份,Oracle,Rman,backup,rman
From: https://www.cnblogs.com/juelian/p/17559760.html

相关文章

  • ElasticSearch快照备份、还原
    快照备份备份和还原的前提:在配置文件elasticsearch.yml中设置path.repopath.repo:["D:\\elasticsearch-6.8.23\\elasticsearch-6.8.23\\snapshot_data"]创建快照仓库语法:PUThttp://127.0.0.1:9200/_snapshot/快照仓库名实例:创建一个名叫my_fs_backup的快照仓库PUThtt......
  • Oracle 异常处理
    在编程语言中异常处理是必不可少的部分,plsql也不例外,一个良好的提示能让调试和排查中少走很多弯路,简单记录一下oracle异常处理中常用的部分:pragma用来定义异常标识符(系统已经定义了大部分异常标识符,即常量)语法:declaree_20001;初始化异常变量pragmaexception_init(e_2......
  • redis 更改备份路径
    Redis更改备份路径简介Redis是一个开源的高性能键值对存储系统,常用作缓存、消息队列和数据库等应用。在运维Redis时,备份是非常重要的一项任务。默认情况下,Redis将备份数据存储在与Redis配置文件(redis.conf)相同的目录中。然而,有时我们可能希望将备份数据存储在其他位置,以提高数据......
  • Oracle 12c for Linux安装手册
    Oracle安装前配置关闭防火墙及selinux、修改主机名和host文件vi/etc/selinux/configselinux=disabledserviceiptablesstopchkconfig iptables off/etc/sysconfig下面的network文件HOSTNAME=hostname在/etc/hosts文件最后添加x.x.x.xhostname安装依赖包yum-......
  • oracle pl/sql与lightdb plorasql面向对象支持
    虽说现在新系统pl/sql已经很少用了,但是在信创迁移过程中,仍然有很多oraclepl/sql过程、函数、包需要能够无缝的移植到信创数据库,比如在很多风控系统移植lightdb的过程中,就遇到了很多,甚至还有pro*c。所以才有了本文。--最常用,用于集合处理DECLARECURSORallrows_curISSELECT*......
  • 【Oracle】在PL/SQL中使用sql实现插入排序
    【Oracle】在PL/SQL中使用sql实现插入排序一般来说,SQL要排序的话直接使用orderby即可不一般来说,就是瞎搞,正好也可以巩固自己的数据结构基础,主要也发现没有人用SQL去实现这些算法(小声bb)使用SQL实现排序系列:使用SQL实现冒泡排序使用SQL实现选择排序以下是正文:规范:createor......
  • 微小企业的数据备份方案
    问题企业内部的文件,系统,数据库等需要备份。最开始我们是采用挂接NFS->jenkinsjob(定时)->ossutil===》阿里云oss库直到发现每个月需要1000+的接口调用费用,当时就哭了。阿里云的服务是隐藏的贵,所以,上云的时候一定要规划好,否则,每个月的账单让人想骂......
  • 实现LVM的备份还原,结合binlog恢复最新状态
    -备份过程1实现LVMmkdir/data/{mysql,binlog}vim/etc/fstabmount/dev/vg0/lv_mysql/data/mysqlmount/dev/vg0/lv_binlog/data/binlogchown-Rmysql.mysql/data/vim/etc/my.cnfdatadir=/data/mysqllog_bin=/data/binlog/mysql-binsystemctlrestartmariadb2mysq......
  • oracle数据库表常用分区创建
    按年进行分区createtabletest_part(IDNUMBER(20)notnull,REMARKVARCHAR2(1000),create_timeDATE)PARTITIONBYRANGE(CREATE_TIME)INTERVAL(numtoyminterval(1,'year'))(partitionpart_t01valueslessthan(to_date('2018-11-01','yyy......
  • oracle资源正忙,需指定nowait
    1.通过此语句查询正在锁定的SESSION_ID:SELECTdistinctSESSION_IDFROMV$LOCKED_OBJECT,USER_OBJECTSWHEREV$LOCKED_OBJECT.OBJECT_ID=USER_OBJECTS.OBJECT_ID2.通过第一步查询到的SESSION_ID查询SERIAL#:622928617SELECTSERIAL#FROMV$SESSIONWHERE......