【Oracle篇】rman物理备份工具的基础理论概述(第一篇,总共八篇)

☘️博主介绍☘️:

✨又是一天没白过,我是奈斯,DBA一名✨

✌✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌✌️

❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣️❣️❣️

久违了,各位朋友们!近来的工作变动确实让我有些忙碌,不过,今天终于能抽出片刻宁静的时光,与大家分享我的新篇章------Oracle的RMAN物理备份工具。在之前的博客中,我详细探讨了Oracle的逻辑备份工具expdp(exp)和impdp(imp),它们为我们的数据库提供了强大的数据导出和导入功能。而今,我将转向另一种备份工具,即物理备份RMAN(Recovery Manager)这一强大工具。

RMAN是Oracle提供的一款功能丰富的备份与恢复工具,它允许我们 直接备份数据库的物理文件,而不仅仅是数据的逻辑表示 。这种备份方式在某些场景下,尤其是在需要快速恢复或保持数据库物理结构一致性时,显得尤为重要。在接下来的内容中,我将带大家深入了解RMAN的工作原理、使用方法以及一些最佳实践,希望能够为大家在数据库管理和维护方面提供一些有价值的参考。

然而,RMAN所涉及的内容之广、之深,使得难以在单篇文章中全面涵盖。所以我将理论、命令、备份策略、异机恢复、坏块处理等分成八篇文章去讲,即使分为八篇也有不少内容没有涵盖到,所以这八篇文章都是精华,看完这八篇就可以解决95%以上的RMAN相关工作内容了。八篇文章的内容分别如下:

  • 第一篇:rman物理备份工具的基础理论概述
  • 第二篇:rman工具实用指南:常用命令详解与实践
  • 第三篇:rman标准化全库备份策略
  • 第四篇:rman全库异机恢复:从RAC环境到单机测试环境的转移
  • 第五篇:rman全库异机恢复:从单机环境到RAC测试环境的转移
  • 第六篇:rman时间点异机恢复:从单机环境到单机测试环境的转移
  • 第七篇:Oracle数据库物理坏块处理:rman修复坏块实践与案例分析
  • 第八篇:逻辑备份工具expdp(exp)/impdp(imp)和物理备份工具rman的区别和各自的使用场景总汇

目录

1、rman工具

一、rman的内存缓冲与块跟踪:

二、rman服务器进程:

三、rman的备份分类

四、rman连接操作的使用(本地和远程)

五、rman中执行操作系统命令,执行sql语句

六、使用rman创建脚本(必须连接到catalog数据库,不然无法保存)

案例一:连接rman创建一个rman脚本

六、使用rman执行外部脚本(使用rman参数cmdfile)

[七、rman的Data Recovery Advisor(DRA,数据恢复顾问):](#七、rman的Data Recovery Advisor(DRA,数据恢复顾问):)

[案例一:单机环境使用DRA修复数据库启动故障之控制文件丢失(11g rac不支持。在进行案例之前需要先进行备份)](#案例一:单机环境使用DRA修复数据库启动故障之控制文件丢失(11g rac不支持。在进行案例之前需要先进行备份))

[案例二:单机环境使用DRA修复数据库启动故障之数据文件丢失(11g rac不支持。在进行案例之前需要先进行备份)](#案例二:单机环境使用DRA修复数据库启动故障之数据文件丢失(11g rac不支持。在进行案例之前需要先进行备份))

2、catalog数据库

一、ncatalog和catalog的恢复

二、升级的问题

[三、手工再同步恢复目录(resync catalog)](#三、手工再同步恢复目录(resync catalog))

四、注册catalog信息

五、撤消catalog注册信息

六、删除catalog注册信息

案例一:创建catalog恢复目录(在多实例备份时使用)


1、rman工具

rman(recovery manager)是8i以后备份、还原和恢复的工具,位于$oracle_home/bin目录下。rman实用由两部分组成,可执行文件和recover.bsq文件。recover.bsq文件实质上是库文件,可执行文件从recover.bsq文件中析取代码来创建在目标数据库上执行的 pl/sql调用。

rman支持命令行及图形接口,可以通过第三方软件(nbu\legato\tsm等)及磁带机进行备份 ,支持整备数据库、表空间、数据文件、控制文件、归档日志文件、参数文件等。

通过rman可以用来备份恢复数据库的数据文件,归档日志,控制文件以及参数文件及整个数据库的备份恢复工具,同时也可以用来执行完全备份恢复和不完全备份恢复,通过计划任务实现自动的定时的最优化的备份恢复方案。

rman介绍:

01.可以实现自动备份和恢复

02.方便有效的备份归档日志

03.自动检测新的数据文件

04.支持增量备份

05.最大限度的减少备份和恢复的错误

06.减少恢复时间

07.在热备中不会产生redo日志

08.自动检测损坏的数据块,并跳过。

09.并行备份恢复

10.在线备份不影响业务的正常运转

rman体系架构:

rman是服务器管理恢复工具(servermanaged recover,smr)实际上是一个独立应用程序,主要是建立oracle数据库的客户端连接,达到有效的访问并对数据库执行备份恢复操作,用于备份与恢复的接口。

服务进程

rman的服务是一个后台进程,用于rman工具与数据库之间的通信,也用于rman工具与磁盘/磁带等i/o设置之间的通信,服务进程负责备份与恢复的所有工作,在如下情况将产生一个服务进程。当连接到目标数据库分配一个新的通道

通道

通道是服务进程与i/o设备之前读写的途径,一个通道将对应一个服务进程,在分配通道时,需要考虑i/o设备的类型,i/o并发处理的能力,i/o设备能创建的文件的大小,数据库文件最大的读速率,最大的打开文件数目等因素

目标数据库

就是rman进行备份与恢复的数据库

恢复目录

用来保存备份与恢复信息的一个数据库,不建议创建在目标数据库上,利用恢复目录可以同时管理多个目标数据库,存储更多的备份信息,可以存储备份脚本。如果不采用恢复目录,可以采用控制文件来代替恢复目录,9i后支持控制文件自动备份的功能,利用控制文件很大程度上可以取代恢复目录。

媒体介质管理层

media management layer (mml)是第三方工具,用于管理对磁带的读写与文件的跟踪管理。如果你想直接通过rman备份到磁带上,就必须配置媒体管理层,媒体管理层的工具如备份软件可以调用rman来进行备份与恢复。

备份集与备份片

当发出backup命令的时候,rman将创建一个完成的备份,包含一个到多个备份集,备份集是一个逻辑结构,包含一组的物理文件。这些物理文件就是对应的备份片。备份片是最基本的物理结构,可以产生在磁盘或者磁带上,可以包含目标数据库的数据文件,控制文件,归档日志与spfile文件。备份集与备份片有如下规定:

(1) 一个数据文件不能跨越一个备份集,但是能跨多个越备份片

(2) 数据文件,控制文件能保存在同样的备份集上,但是不能与归档日志保存在同样的备份集上

资料库

rman资料库(rman repository)存储了目标数据库的元数据(metadata)和使用rman备份的备份集信息,例如备份集的位置,备份集内包括的备份片,备份集的状态等。rman进行备份和恢复操作都要访问rman资料库。

一、rman的内存缓冲与块跟踪:

RMAN的备份是基于数据块的备份,数据块备份的工作原理是:RMAN基于备份算法规则来编译要备份的文件列表。

RMAN会利用PGA(有时是SGA)创建一些缓冲区,然后通过这些缓冲区将数据块写入到备份中(这就是为什么在进行rman备份时,前期不会马上生成文件,而是将数据缓存到PGA中,然后生成文件)

内存缓冲区分为输入缓冲区和输出缓冲区:

  • 输入缓冲区input buffer填充从备份文件中读取数据块;
  • 输出缓冲区output buffer则在执行内存对内存的写操作时填充需要备份的数据块,一旦输出缓冲区被填满,输出缓冲区的内容就会被写入到备份位置。
  • 一旦所有文件已通过内存缓冲区过滤,就完成了备份片,同时RMAN会在目标数据库控制文件中写入备份片的完成时间和备份片的名称。

RMAN的内存利用:

在磁盘上备份会使用PGA内存空间作为备份缓冲区,PGA内存空间从用于信道进程的内存空间中分配。如果操作系统没有配置本地异步I/O, 则可以利用DBWR_IO_SLAVES参数使用 I/O 丛属来填充内存中的输入缓冲。如果设置DBWR_IO_SLAVES参数为任意的非零值,则RMAN会自动分配4个I/O从属来协调输入缓冲区中数据块加载。为了实现这一功能,RMAN必须利用一个共享内存区域。因此,用于磁盘备份的内存缓冲区会被推入共享池,如果存在大池,则被推入大池。如果没有使用磁带I/O从属,则会在PGA中分配用于磁带输出缓冲区的内存。

rman块:

①块备份优点:

1)每个数据块从磁盘读入内存时都会发生内存到内存的写操作

2)在这个操作期间会检查数据块的损坏。

②空块压缩:

RMAN访问数据块时可以选择空块压缩(null block compression),删除从来没有使用过的数据块(header is 0),并在执行内存对内存的写操作是丢弃这些数据块。因此,我们只需要备份使用过的数据块。

③未使用的块压缩:

未初始化的块不会备份,在 10.2.0.3 版本后,即使是使用过的块,如果是空块,也不会被备份。

④RMAN的块跟踪:

Block change tracking 记录自从上一次备份以来数据块的变化,并把这些信息记录在跟踪文件中。RMAN使用这个文件判断增量备份中需要备份的变更数据。这极大的促进了备份性能,RMAN可以不再扫描整个文件以查找变更数据。为此Oracle引入了一个新的后台进程,CTWR,其全称为Change Tracking Writer,用于记录变化的块并将变化写入相应的日志文件中。

这里延展一个问题:开启|关闭rman block tracking块跟踪。 增量的时候必须开。在使用RMAN增量备份的情况下,启动block change tracking,在做增量备份时会缩短RMAN备份的时间, 因为不用扫描整个data file。 但是block tracking也会带来其他的一些开销。所以要根据实际情况决定是否启用block change tracking

sql 复制代码
开启:
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/home/oracle/block.trc'; 
SQL> select status,filename from v$block_change_tracking; 
  
禁用: 
SQL>alter database disable block change tracking;

⑤通过位图跟踪两次备份间变化的数据块:

  • 每次备份前进行位图切换;
  • 开发增量备份策略时,要考虑到8个位图的限制;一般增量备份周期为一个礼拜。在RAC环境中,change tracking file需要放在共享存储上,Change tracking file的大小和数据库的大小、enabled 的redo thread的个数成正比;
  • Change tracking file 的大小和数据更新的频率无关;
  • 开启块跟踪功能对数据库的性能有一点影响。

二、rman服务器进程:

RMAN生成一个到target db的客户端连接,并创建两个服务器进程:

(1)主要进程:生成对sys用户中的数据包调用(dbms_rcvman和dbms_backup_restore数据包),以执行备份和恢复操作,该进程会在备份和还原期间协调信道进程的工作。

(2)次要进程或(影子进程):轮询RMAN中的所有长事务(long-runningtransaction)并在内部记录信息。

rman进程只有在备份时才有 (查看rman备份进程的SQL):

sql 复制代码
RMAN> backup database;
SQL> select sid,
       serial#,
       context,
       sofar,
       totalwork,
        round(sofar / totalwork * 100, 2) "%_COMPLETE"
  from v$session_longops
 where opname like 'RMAN%'
   AND OPNAME NOT LIKE '%aggregate%'
   and totalwork != 0
   and sofar <> totalwork;
sofar:完成的工作量
totalwork:总工作量
%_COMPLETE:完成的工作量的百分比
sql 复制代码
SQL>select sid,serial#,username,paddr,module,program,client_info from v$session where sid=1; 
sql 复制代码
SQL> select * from v$process where addr='00000000AF71B2B0';

三、rman的备份分类

rman完整备份:

一个或多个数据文件的完整副本,包括从备份开始的所有级的数据块。
rman增量备份( 基本、差异、 累计增量备份的总称):

从基本备份以来被修改过或增加过的数据块。增量备份分为0级增量基本备份、1级差异增量备份、1级累积增量备份,增量备份支持归档和非归档模式****,并且只能使用rman才可以实现增量备份。****

  • **基本增量(backup incremental level=0 database):**执行增量备份操作时,首先需要的是增量基本备份(incremental base backup),以后所有的增量备份都基于这个基本备份。
  • 差异增量(backup incremental level=1 database): 是基本备份以来所有变化的数据块,差异增量是默认增量备份。差异增量是根据上一次备份后,备份有变化的数据。这种备份把全库数据分为一小段一小段的,节省了空间,但在恢复时会很麻烦需要逐个恢复。所以不建议使用
  • 累积增量(backup incremental level =1 cumulative database):**** 是基本备份以来所有变化的数据块。累计增量是根据上一次备份后,备份最开始到生产的所有数据,占用了空间,在恢复时只需恢复一个即可。 累计增量适用于数据量小的数据库,如果数据量很大也不建议使用差异增量备份。

四、rman连接操作的使用 (本地和远程)

[oracle@lf ~]$ rman --help

target 目标数据库的连接字符串

catalog 用于恢复目录的连接字符串

nocatalog 如果指定,则没有恢复目录

cmdfile 输入命令文件的名称

使用rman命令进到终端,首先连到target目标实例,然后连接到catalog/nocatalog数据库:

1)本地连接:

本地连接nocatalog数据库 (常用):

bash 复制代码
[oracle@lf ~]$ rman target /       ---target / 表示使用sys连接到目标数据库实例。

本地连接catalog数据库:

bash 复制代码
[oracle@lf ~]$ rman target /  catalog rman/123456@orcl       ---target / 表示使用sys连接到目标数据库实例。 rman用户是创建catalog数据库时,一起创建的

2)客户端连接:

客户端连接nocatalog数据库 (常用):

bash 复制代码
C:\Users\Administrator>rman target sys/123456@orcl   --不指定catalog/nocatalog默认使用nocatalog,也就是将rman备份信息保存在控制文件

客户端连接catalog数据库:

bash 复制代码
C:\Users\Administrator>rman target sys/123456@orcl  catalog rman/123456@orcl    --不指定catalog/nocatalog默认使用nocatalog,也就是将rman备份信息保存在控制文件

3)进入rman命令里面连接:

[oracle@lf ~]$ rman

连接nocatalog数据库 (常用):

bash 复制代码
RMAN> connect target /     ---不指定catalog/nocatalog默认使用nocatalog,也就是将rman备份信息保存在控制文件

连接catalog数据库:

bash 复制代码
RMAN> connect catalog rman/123456@orcl    

五、rman中执行操作系统命令,执行sql语句

1)执行系统命令

bash 复制代码
RMAN> run {host 'ls -lrt';}
RMAN> run {host 'pwd';}

2)执行数据库命令

bash 复制代码
rman> shutdown immediate 
rman> startup 
rman> sql 'select * from user_tablespaces';

六、使用rman创建脚本 (必须连接到catalog数据库,不然无法保存)

****创建rman脚本:****create script script_name

查看rman脚本内容:

方式一:Print script my_backup_script;

方式二:RMAN@orcl> select * from rc_stored_script_line; ---使用属于catalog数据库的用户才能查询此表

****运行rman脚本:****run { execute script script_name; }

****修改rman脚本:****replace script script_name

****删除rman脚本:****delete script script_name;

案例一:连接rman创建一个rman脚本

bash 复制代码
[oracle@lf ~]$ rman target / catalog rman/123456@orcl   ---rman脚本需要连接到catalog数据库,在于保存脚本

(1)创建rman脚本

sql 复制代码
RMAN> create script rman_show
comment 'show'        ---comment描述脚本的大意。
{  
show all;
}

(2)修改脚本

sql 复制代码
RMAN> replace script rman_show
comment 'show'
{
show all;
show all;
}

(3)运行脚本

sql 复制代码
RMAN> run {execute script rman_show;}

(4)查看脚本内容

sql 复制代码
方式一:RMAN> print script rman_show;
        
方式二:RMAN@orcl> select * from rc_stored_script_line;     ---使用属于catalog数据库的用户才能查询此表

六、使用rman执行外部脚本 (使用rman参数cmdfile)

sql 复制代码
[oracle@lf ~]$ vi rman.sh
show all;
         
[oracle@lf ~]$ rman target / cmdfile=rman.sh   ---不指定catalog/nocatalog,默认连接为nocatalog

七、rman的Data Recovery Advisor(DRA,数据恢复顾问):

11g推出Data Recovery Advisor(DRA),DRA是和Oracle经典备份还原工具RMAN绑定使用的。提供了一个自动诊断、修复数据库的选择,是Oracle的一个内置(Build-In)工具,用于进行数据错误、损坏的报告和修复建议。如DRA能够自动发现当前存在坏块,并且查看备份资料库(RMAN)给出修复建议和语句。

DRA可以做到"一键式"的恢复,敲一个修复命令,就自动执行修复脚本,将错误解除。DRA是自动在后台进行数据库状态检查和数据收集,一旦发现错误,就会自动的进行修复建议的提示。

目前 DRA 可以支持 User界面和命令行两种方式工作,OEM与命令行,11g不支持RAC只支持单机,报RMAN-05533: LIST FAILURE is not supported on RAC database

DRA目前可以在两种方式下进行工作:

(1)一个是数据库启动障碍,比如启动过程报错。

(2)另一个是运行过程障碍,例如运行中数据库异常损坏(如数据文件被后台删除)。

常用DRA命令:

sql 复制代码
list failure all(list failure all detail;);   ---查看错误列表
advise failure;   ---给出修复故障的建议(脚本的形式,手动执行)
repair failure;   ---自动执行脚本,修复故障
change failure all closed;   ---处理完成但DRA还有错误信息,通过命令关闭信息

案例一:单机环境使用DRA修复数据库启动故障之控制文件丢失 (11g rac不支持。在进行案例之前需要先进行备份)

(1)控制文件被误删

sql 复制代码
[oracle@lf orcl]$ rm -rf control.ctl   
SYS@orcl> startup    ---告警日志提示控制文件丢失

(2)通过DRA自动恢复控制文件

sql 复制代码
RMAN> list failure all;
sql 复制代码
RMAN> advise failure;   ---给出修复故障的建议(脚本的形式,手动执行)

analyzing automatic repair options; this may take some time
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=17 device type=DISK
RMAN-06495: must explicitly specify DBID with SET DBID command
analyzing automatic repair options complete

Not all specified failures can currently be repaired.
The following failures must be repaired before advise for others can be given.

Failure ID  Priority Status  Time Detected  Summary
失败ID        优先级         发现时间       总结
----------  ----------------  ----------------  -----------
3702       CRITICAL OPEN      06-SEP-20     Control file /oracle/app/oracle/oradata/orcl/control.ctl is missing

Mandatory Manual Actions    ---强制手动操作建议
========================
no manual actions available

Optional Manual Actions     ---可选手动操作建议
=======================
no manual actions available

Automated Repair Options    ---自动修复选项
========================
Option Repair Description 选择修复描述
------ ------------------
1      Use a multiplexed copy to restore control file /oracle/app/oracle/oradata/orcl/control.ctl  
  Strategy: The repair includes complete media recovery with no data loss
  Repair script: /oracle/app/oracle/diag/rdbms/orcl/orcl/hm/reco_1324809895.hm   ---修复脚本,通过rman的DRA给出脚本来自动修复

(3)查看DBR修复脚本并执行

bash 复制代码
[oracle@lf orcl]$ more /oracle/app/oracle/diag/rdbms/orcl/orcl/hm/reco_1324809895.hm
sql 复制代码
RMAN> restore controlfile from '/oracle/app/oracle/oradata/orcl/control02.ctl';
      sql 'alter database mount';

案例二:单机环境使用DRA修复数据库启动故障之数据文件丢失 (11g rac不支持。在进行案例之前需要先进行备份)

(1)数据文件被误删

sql 复制代码
[oracle@lf orcl]$ rm -rf users.294.1048669455
SYS@orcl> startup    ---告警日志提示不能打开users数据文件

(2)通过DRA自动恢复数据文件缺失

sql 复制代码
RMAN> list failure all;
sql 复制代码
RMAN> advise failure;  ---给出修复故障的建议(脚本的形式)

analyzing automatic repair options; this may take some time
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=18 device type=DISK
analyzing automatic repair options complete

Mandatory Manual Actions
========================
no manual actions available

Optional Manual Actions
=======================
1. If file /oracle/app/oracle/oradata/orcl/users.294.1048669455 was unintentionally renamed or moved, restore it
2. If you restored the wrong version of data file /oracle/app/oracle/oradata/orcl/users.294.1048669455, then replace it with the correct one

Automated Repair Options
========================
Option Repair Description
------ ------------------
1      Restore and recover datafile 4  
  Strategy: The repair includes complete media recovery with no data loss
  Repair script: /oracle/app/oracle/diag/rdbms/orcl/orcl/hm/reco_2099725888.hm

(3)自动执行DRA给出的修复脚本

sql 复制代码
RMAN> repair failure;   ---自动执行脚本,修复故障

2、catalog数据库

上述提到了rman那么就不得不提catalog数据库。大家知道RMAN(Recovery Manager)是用于备份、恢复和管理数据库的工具。而RMAN的catalog是一个逻辑概念,用于存储与RMAN备份、恢复和保管相关的元数据。

分为nocatalog和catalog。Catalog可以包含业务生产的所有实例的备份信息,nocatalog(利用控制文件实现)只能包含当前实例的备份信息

nocatalog:

使用control file作为catalog,每次备份都要往控制文件里面存放备份信息,控制文件里面会有越来越多的备份信息。当使用rman nocatalog方式备份时,备份controlfile是非常重要的。建议将参数文件中的control_file_record_keep_time值加大(缺省为7天) ,参数在$oracle_home/dbs/initsid.ora中。超过这个期限就会删除备份信息,这样对数据库还原恢复有影响。

sql 复制代码
SYS@orcl> show parameter control
NAME				                 TYPE	          VALUE
---------------------------------    ------------    ---------------
control_file_record_keep_time	       integer        	  7          ---控制文件里保存rman备份信息的保存时间,到规定时间就自动清除以前的备份信息。默认7天
control_files			               string	      /oracle/app/oradata/orcl/control01.ctl
control_management_pack_access         string	      DIAGNOSTIC+TUNING

sql> alter system set control_file_record_keep_time=14 scope=both; 

catalog:

catalog恢复目录存储的是与rman备份有关的元数据。在某种意义上,恢复目录可以看做是保存rman备份和恢复所需的相关信息的副本。可以在数据库中在用户模式下创建恢复目录,这个恢复目录仅仅是一些数据包,表,索引和视图。rman中的再同步命令会使得目标数据库控制文件中的内容刷新这些表中的数据。当然,区别在于恢复目录可以包含企业中所有数据库的信息,而控制文件只包含关于它自己的数据库的信息。备份信息永久保存在catalog数据库中,并且支持多个数据库

一、ncatalog和catalog的恢复

当使用rman nocatalog恢复时,数据库必须是处于mount状态的。而oracle startup mount的前提条件是control必须存在。因此,你必须在恢复datafile之前先恢复controlfile。

使用rman catalog方式时,可以startup nomount然后restore controlfile;但使用rman nocatalog 时,必须先用文件方式恢复controlfile(以下的恢复都是在 online 状态下的备份):

rman nocatalog恢复过程:

  1. 建立 oracle 运行环境(包括 init 或 sp 文件)

  2. 文件方式恢复 controlfile 到 init 文件指定的位置

  3. startup mount

  4. rman,恢复 datafile

  5. alter database open resetlogs 。可以看出,rman nocatalog备份时,必须用文件方式备份 controlfile。

rman catalog恢复过程:

  1. 建立 oracle 运行环境(包括 init 或 sp 文件)1

  2. rman ,restore controfile

  3. alter database mount

  4. rman, restore datafile

  5. alter database open resetlogs

二、升级的问题

如果数据库进行了大版本升级,那么catalog不会自动升级,需要手动执行升级

(1)使用catalog模式的用户登录,查看catalog版本

sql 复制代码
SYS@orcl> conn rman/123456
RMAN@orcl> select * from rcver;

(2)升级catalog

sql 复制代码
[oracle@lf ~]$ rman target / catalog rman/123456@rman
RMAN@orcl> upgrade catalog  
第一次输入,提示恢复目录所有者是rman,再次输入确认升级

三、手工再同步恢复目录(resync catalog)

RMAN使用恢复目录时,它会使用在同步进程来确保恢复目录和目标数据库的控制文件一致。通常,Oracle在 RMAN 操作(备份和恢复)后会再同步数据库,这样就不必经常再同步恢复目录。需要再同步恢复目录的一个实例是有时使用恢复目录,有时不使用恢复目录,此时,可以使用 resync catalog 命令手工使 Oracle 再同步恢复目录。

sql 复制代码
Rman>resync catalog;       ---Oracle同步恢复目录时,它首先会创建一个快照控制文件,并比较这个文件和恢复目录。完成比较后,Oracle更新恢复目录,是恢复目录与数据库控制文件同步。 

四、注册catalog信息

sql 复制代码
RMAN> register database;     

五、撤消catalog注册信息

sql 复制代码
RMAN> unregister database; 

六、 删除catalog注册信息

sql 复制代码
RMAN> drop catalog;

案例一:创建catalog恢复目录 (在多实例备份时使用)

(1)创建 catalog 所需要的表空间 (表空间的命名不能是rman,在恢复时会与rman冲突)

sql 复制代码
SYS@orcl> create tablespace rman1 datafile '/oracle/app/oradata/orcl/rman1.dbf' size 50m autoextend off;     ---生产环境建议10G

(2)创建rman用户并赋权 (用户的命名可以是rman)

sql 复制代码
SYS@orcl> create user rman identified by 123456 default tablespace rman1;
SYS@orcl> grant connect,resource,recovery_catalog_owner to rman;
---connect,resource,recovery_catalog_owner都为系统自带角色。select * from role_sys_privs where role IN ('RECOVERY_CATALOG_OWNER','RESOURCE','CONNECT');

(3)连接rman创建catalog恢复目录,使用rman用户登录

sql 复制代码
[oracle@lf ~]$ rman  catalog  rman/123456     ---使用rman的catalog模式登录
RMAN> create catalog tablespace rman1;        ---创建catalog恢复目录的默认表空间为rman1

(4)配置目标数据库的tnsnames.ora

sql 复制代码
[oracle@lf admin]$ vi  tnsnames.ora 
除了连接描述名改为rman以为,其他与当前实例连接信息保持一致,

(5)注册目标数据库

sql 复制代码
[oracle@lf ~]$ rman target / catalog  rman/123456@rman    ---/表示环境变量里的实例和sys用户
[oracle@lf ~]$ rman target  sys/123456@orcl  catalog rman/123456@rman    ---远端连接的方式
RMAN> register database;         ---注册目标的实例

(6)检查catalog恢复目录

sql 复制代码
RMAN> report schema;    ---显示目标实例的信息
Rman> resync catalog;    
sql 复制代码
RMAN> list backup;      ---查看备份信息(从control读取信息)

关于RMAN物理备份工具的基础理论概述就到此告一段落。对于初次接触RMAN的小伙伴来说,这些内容可能显得有些晦涩难懂,这是完全正常的。不过请放心,随着后续篇章的深入学习和实践操作的累积会逐渐感受到这些理论知识的实际价值。

正如我自己在学习过程中的体会,我第一遍接触理论时也会觉得难以捉摸,但当我们真正将理论知识应用到实践中,再去回顾这些理论时,会有一种"轻舟已过万重山"的豁然开朗之感(嗯......自己平时学习理论也是第一遍确实看不明白,等把实践部分接触完了,再回来看理论会有再有一层深刻理解)。这种从实践中获得的深刻理解和领悟,将为我们解决日后可能遇到的相关故障提供有力的支持。

因此学习RMAN的过程中,不仅要深入钻研理论知识,更要实践,将理论知识与实际操作相结合。只有这样才能真正掌握RMAN这一强大的物理备份工具,为数据库的安全和稳定运行提供坚实的保障。那么我们下篇见!!!

相关推荐
JH307317 分钟前
Oracle与MySQL中CONCAT()函数的使用差异
数据库·mysql·oracle
蓝染-惣右介19 分钟前
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
java·数据库·tomcat·mybatis
冷心笑看丽美人20 分钟前
Spring框架特性及包下载(Java EE 学习笔记04)
数据库
努力的悟空43 分钟前
国土变更调查拓扑错误自动化修复工具的研究
运维·自动化
武子康1 小时前
Java-07 深入浅出 MyBatis - 一对多模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据库·sql·mybatis·springboot
代码吐槽菌2 小时前
基于SSM的毕业论文管理系统【附源码】
java·开发语言·数据库·后端·ssm
周末不下雨2 小时前
win11+ubuntu22.04双系统 | 联想 24 y7000p | ubuntu 22.04 | 把ubuntu系统装到1T的移动固态硬盘上!!!
linux·运维·ubuntu
路有瑶台2 小时前
MySQL数据库学习(持续更新ing)
数据库·学习·mysql
数字扫地僧2 小时前
WebLogic 版本升级的注意事项与流程
数据库
Viktor_Ye3 小时前
高效集成易快报与金蝶应付单的方案
java·前端·数据库