Oracle RMAN的catalog并不是指标备份恢复操作的一个必要组件,但oracle推荐使用该组件。启用之后,归档日志、备份集、镜像复制等备份信息的保存地点是RMAN资料库(catalog),

记录了所有的在DISK及SBT设备上的各种备份的详细信息,rman的catalog是一个逻辑概念,物理保存点可以在两个不同的地方,目标数据库的控制文件中及catalog中,

控制文件在默认情况下无须配置就可以保存rman资料库,而catalog需要创建、配置后才可以使用。

SYS@ orcl >show parameter control_file_record_keep_time
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7

默认情况下,控制文件能够保存多少短期性信息受制与参数control_file_record_keep_time

是控制文件必须将归档日志、备份集合镜像复制等保存在rman资料库中的短期性信息至少保留7天,控制文件自动增长

SYS@ orcl >select type,records_total,records_used from v$controlfile_record_section where type='ARCHIVED LOG';
TYPE RECORDS_TOTAL RECORDS_USED
---------------------------- ------------- ------------
ARCHIVED LOG 308 200

RECORDS_TOTAL为308,说明现在控制文件中只能够保存308个归档日志的归档日志记录槽。

SYS@ orcl >host ls -l /u01/app/oracle/oradata/orcl/control01.ctl
-rw-r----- 1 oracle oinstall 10076160 Jun 4 17:35 /u01/app/oracle/oradata/orcl/control01.ctl

参数 control_file_record_keep_time最大值365

寻回一个控制文件的自动备份

RMAN> catalog backuppiece '/u01/app/oracle/fra/ORCL/autobackup/2019_05_30/o1_mf_s_1009648986_ggzbltkq_.bkp';

cataloged backup piece
backup piece handle=/u01/app/oracle/fra/ORCL/autobackup/2019_05_30/o1_mf_s_1009648986_ggzbltkq_.bkp RECID=38 STAMP=1010135802

寻回一个数据文件的备份--同上

寻回归档日志

RMAN> catalog archivelog '/u01/app/oracle/fra/ORCL/archivelog/2019_05_27/o1_mf_1_277_ggq5qlvl_.arc';

cataloged archived log
archived log file name=/u01/app/oracle/fra/ORCL/archivelog/2019_05_27/o1_mf_1_277_ggq5qlvl_.arc RECID=203 STAMP=1010136222

将快速恢复区中的所有文件探测一遍,如果是rman资料库汇总没有记载的,则全部添加回资料库

RMAN> catalog db_recovery_file_dest;

为什么要使用catalog

--1 保存比控制文件多得多的有关归档日志和备份的历史信息,使rman保存资料库信息不受参数control_file_record_keep_time的限制

--2 使rman可以用run命令调用catalog中的存储脚本,由于catalog可以在另外一个服务器的db中,rman脚本自身也提供了高可用性

--3列出任意时间点上的表空间和数据库文件结构,report schema 命令可以使用at子句查看某一时间点上的数据库结构

--4 简化在丢失控制文件情况下的还原和恢复操作。恢复控制文件简化到只要执行restore controlfile即可,无须from子句,以及在命令上告知控制文件备份的位置。

1 创建catalog

--在catalog所使用的db上创建catalog的schema

--为catalog填充对象,包括表、索引、视图、PL/SQL包等

虽然catalog的方案可以创建在目标db上,可是一旦目标db的控制文件损坏,由于db无法打开,导致catalog信息无法访问。所以应该只是将catalog的方案放到另外一个服务器的db上,为catalog db,tns连接别名

--sqlplus sys/oracle@tns_name as  sysdba
--在目标库上创建表空间,用户并赋予相应的权限
SQL> create tablespace rc_data datafile '/u01/app/oracle/oradata/orcl/rc_data01.dbf' size 20m autoextend on next 4m;
Tablespace created.
SQL> create user rcowner identified by oracle
temporary tablespace temp
default tablespace rc_data
quota unlimited on rc_data; 2 3 4
User created.
SQL> grant recovery_catalog_owner to rcowner;
Grant succeeded.
[oracle@DSI ~]$ rman catalog rcowner/oracle@orcl ---这里在本机测试,正常的应该用目标库的tns_name
connected to recovery catalog database
RMAN> create catalog;
recovery catalog created
--登录数据库查看对象
SQL> conn rcowner/oracle
Connected.
SQL> select object_type,count(*) objects from user_objects group by object_type;
OBJECT_TYPE OBJECTS
------------------- ----------
SEQUENCE 1
PACKAGE 2
PACKAGE BODY 2
TYPE BODY 1
TRIGGER 3
TABLE 44
INDEX 96
FUNCTION 2
VIEW 98
TYPE 3
10 rows selected.

至此,rman catalog已经准备完成,可供目标数据库注册使用了。

--使用catalog

目标数据库必须在catalog中注册之后才能使用catalog

--注册与同步

[oracle@DSI ~]$ rman target sys/oracle@orcl catalog rcowner/oracle@orcl ##后者tns_name
Recovery Manager: Release 11.2.0.4.0 - Production on Mon Jun 17 15:37:22 2019
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1534031567)
connected to recovery catalog database

将目标数据库的注册信息写入catalog

RMAN> register database;
database registered in recovery catalog
starting full resync of recovery catalog
full resync complete---表名register命令还完成了第一次完全同步完成了

--向catalog中相应的表写入数据,比如在db的表发现目标数据的内容

SQL> select * from rcowner.db;
DB_KEY DB_ID CURR_DBINC_KEY
---------- ---------- --------------
1 1534031567 2

--将目标数据库控制文件中的rman资料库上传到catalog的相关表中

--最后同步控制文件与catalog

从此以后,使用rman连接目标数据库时记得必须使用catalog子句同时连接catalog,这样才能尽量保证控制文件和catalog直接的信息同步,比如

[oracle@DSI ~]$ rman target sys/oracle@orcl catalog rcowner/oracle@orcl

信息同步--局部同步和完全同步

--局部同步指同步归档日志信息、备份集信息和镜像复制信息。

--完全同步则包括除了局部同步的所有信息之外,还要同步数据库表空间和数据文件物理结构的信息。

发生完全同步时,RMAN会先创建一个当前目标控制文件的快照,(实际上就是当前控制文件的副本),然后RMAN会利用此快照与catalog进行比较,

如有需要,rman就会将目标控制文件中的归档日志信息、备份信息、镜像复制进行以及数据库表空间和数据文件物理结构上传至catalog。

可以查看控制文件快照的路径。控制文件的快照,执行任务备份命令时都会生成一个快照文件

RMAN> show snapshot controlfile name;
RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_orcl.f'; # default
[root@DSI oracle]# ll /u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_orcl.f
-rw-r----- 1 oracle oinstall 10076160 Jun 17 15:38 /u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_orcl.f

也可以使用configure修改路径

RMAN> configure snapshot controlfile name to '/home/oracle/snapshot.ctl'; ###如果路径设置错误,报错,请看上一篇。

在同时连接到目标db和catalog执行rman命令时,不论是局部同步还是全局同步,同步操作都能够由rman执行相关命令(backup、configure)时自动判断、自动发起

完全同步也可以通过”resync catalog”手动发起,一般没有必要这样做,但以下3种情况除外

--1 使用rman执行了需要同步的操作(比如configure命令备份某个表空间),但是在执行此类命令时由于种种原因rman没有连接catalog,只连接了目标db

--2 dba备份db的频率过低,很久不用一次rman,这样,由于control_file_record_keep_time参数的设置,catalog可能会遗忘某些归档日志信息

--3 在db物理结构发生变化之后,比如:添加数据文件,新建表空间等

RMAN> resync catalog;
starting full resync of recovery catalog
full resync complete

--rman能力的增强

有了catalog,rman保存历史的信息能力很强大,完全不受参数control_file_record_keep_time的限制,另外,catalog还补全了rman所有的功能

--在nomount状态下查看rman 资料库

--查看数据库的物理结构历史

--将rman脚本保存在rman资料库中

--将数据库恢复到以前的incarnation

前3个功能只用控制文件是无法提供的。

RMAN> list backupset summary;

有了catalog,数据库没有mount也不是问题,记得连接catalog模式

第一个功能:没有catalog时执行restore命令还原控制文件时必须给出from 子句说明控制文件的备份在何处,而使用catalog时from子句不是必要的

第二个功能:report schema at命令能够显示数据库中数据文件的历史结构

RMAN> report schema;
Report of database schema for database with db_unique_name ORCL List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 780 SYSTEM YES /u01/app/oracle/oradata/orcl/system01.dbf
2 720 SYSAUX NO /u01/app/oracle/oradata/orcl/sysaux01.dbf
3 1250 UNDOTBS1 YES /u01/app/oracle/oradata/orcl/undotbs01.dbf
4 5 USERS NO /u01/app/oracle/oradata/orcl/users01.dbf
5 500 TEST NO /u01/app/oracle/oradata/orcl/test01.dbf
6 50 ASSM NO /u01/app/oracle/oradata/orcl/assm01.dbf
7 50 MSSM NO /u01/app/oracle/oradata/orcl/mssm01.dbf
8 20 RC_DATA NO /u01/app/oracle/oradata/orcl/rc_data01.dbf List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 59 TEMP 32767 /u01/app/oracle/oradata/orcl/temp01.dbf
2 1024 TEMP 32767 /u01/app/oracle/oradata/orcl/temp03.dbf
RMAN> report schema at time "sysdate - interval '' day";
Report of database schema for database with db_unique_name ORCL List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 780 SYSTEM YES /u01/app/oracle/oradata/orcl/system01.dbf
2 720 SYSAUX YES /u01/app/oracle/oradata/orcl/sysaux01.dbf
3 1250 UNDOTBS1 YES /u01/app/oracle/oradata/orcl/undotbs01.dbf
4 5 USERS YES /u01/app/oracle/oradata/orcl/users01.dbf
5 500 TEST YES /u01/app/oracle/oradata/orcl/test01.dbf
6 50 ASSM YES /u01/app/oracle/oradata/orcl/assm01.dbf
7 50 MSSM YES /u01/app/oracle/oradata/orcl/mssm01.dbf List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 59 TEMP 32767 /u01/app/oracle/oradata/orcl/temp01.dbf
2 1024 TEMP 32767 /u01/app/oracle/oradata/orcl/temp03.dbf

第三个功能:保存rman脚本

RMAN> create script recover_controlfile {
2> startup force nomount;
3> restore controlfile;
4> mount database;
5> recover database;
6> alter database open resetlogs;
7> }
created script recover_controlfile
也可以将现有的文本载入
RMAN> create script backup_db from file '/home/oracle/backup_db.rman';
script commands will be loaded from file /home/oracle/backup_db.rman
created script backup_db
RMAN> list script names;
List of Stored Scripts in Recovery Catalog
Scripts of Target Database ORCL Script Name
Description
-----------------------------------------------------------------------
backup_db
recover_controlfile
RMAN> print script backup_db; ##print查看脚本内容
printing stored script: backup_db
run {
allocate channel c1 device type disk;
backup database;
}
使用rman连接目标库和catalog后,执行run {execute script ...}
RMAN> run {execute script backup_db;}

oracle 11g 数据库恢复技术 --rman catalog的更多相关文章

  1. oracle 11g 数据库恢复技术 ---02 控制文件

    oracle 11g 数据库恢复技术 ---02 控制文件 SYS@ orcl >show parameter control_file NAME TYPE VALUE ------------ ...

  2. oracle 11g 数据库恢复技术 ---04 rman

    四 RMAN RMAN体系结构的主要组成部分: --1 目标数据库(target) --2 RMAN命令行客户端 --3 通道(channel) --4 快速恢复区(fast recovery are ...

  3. oracle 11g 数据库恢复技术 ---03 补充日志

    三 补充日志(supplemental logging) 补充日志是对重做记录中变更矢量的补充信息,增加了变更矢量记载的记录量.Oracle某些功能要求启用补充日志才能正常或更好的工作,比如logmi ...

  4. oracle 11g 数据库恢复技术 ---01 重做日志

    一 redo log Oracle数据库中的三大核心文件分别是数据文件(data file).重做日志(redo log)和控制文件(control file).数据文件保证了数据库的持久性,是保存修 ...

  5. Oracle 11g 中恢复管理器RMAN介绍

    这是我平时摘录的笔记,从管理艺术那本书上摘录出来的,放到这里 RMAN 可在数据库服务器的帮助下从数据库内备份数据文件,可构造数据文件映像副本.控制文件和控制文件映像.对当日志 SPFILE 和RMA ...

  6. 在Windows 10上安装Oracle 11g数据库出现的问题及解决

    在Windows 10上安装Oracle 11g数据库,并且很多次出现过:当安装的进度条进行到快要结束的时候弹出一个提示框.如下: [Java(TM)2 Platform Standard Editi ...

  7. 完美完全卸载Oracle 11g数据库

    Oracle 11g可在开始菜单中卸载,然后同时需要删除注册表中相关内容. 操作系统:windows10专业版. 卸载步骤: 1.停用oracle服务:进入计算机管理,在服务中,找到oracle开头的 ...

  8. PL/SQL Developer工具包和InstantClient连接Oracle 11g数据库

    一.前言 PLSQL Developer是Oracle数据库开发工具,很牛也很好用,PLSQL Developer功能很强大,可以做为集成调试器,有SQL窗口,命令窗口,对象浏览器和性能优化等功能. ...

  9. 在Windows10系统下安装Oracle 11g数据库

    在Windows10系统下安装Oracle 11g数据库 https://blog.csdn.net/wei1992_6/article/details/60054727

随机推荐

  1. linux系统批量修改root密码

    #!/bin/bash ip_list=(192.168.36.12 192.168.36.13) remote_cmd="echo new-passwd | passwd --stdin ...

  2. oracle sql 高级编程 历史笔记整理

    20130909 周一 oracle sql 开发指南 第7章 高级查询 1.层次化查询select level,ttt.*,sys_connect_by_path(ttt.col1,',') fro ...

  3. Flask【第10篇】:自定义Form组件

    自定义Form组件 一.wtforms源码流程 1.实例化流程分析 1 # 源码流程 2 1. 执行type的 __call__ 方法,读取字段到静态字段 cls._unbound_fields 中: ...

  4. Vue props双向绑定

    props是不能改变的 项目里遇到一个问题,就是props的组件内是不能改变,就像react中的props值也是不能改变的, 所以我在用的时候竟然忽略了这个点.真的要反省反省, 下面就是这个报错的问题 ...

  5. 使用 python 开发 Web Service

    使用 python 开发 Web Service Python 是一种强大的面向对象脚本语言,用 python 开发应用程序往往十分快捷,非常适用于开发时间要求苛刻的原型产品.使用 python 开发 ...

  6. thinkphp一对多关系

    兹有用户表user和评论表comment 一对一 public function returnmany() { return $this->hasOne('commnet','uid','use ...

  7. null转为数字的坑

    在项目中,需要用到某个字段等于0时来处理逻辑 if (+item.ext === 0) {} // 前面的+号是转为数字 // 如果item.ext 为 null时, +item.ext 就等于 0 ...

  8. Codeforces 1272D

    题意:给定一个长度为n的数组a,你至多可以删去其中的一个元素,找出最长的连续(严格)上升子序列的长度. 分析:读完题之后可以发现这道题和模板:连续上升子序列很相像,首先可以确定方向是dp:状态是当前的 ...

  9. DOM自定义属性操作

        DOM标准     (一)核心DOM 可以操作一切结构化文档的API,包括HTML和XML,核心DOM是万能的,但又是繁琐的. (二)HTML DOM 专门操作HTML文档的简化版DOM AP ...

  10. Zabbix4.x安装部署

    zabbix监控的重要性就不用再赘述了.直接上干货. 1.环境背景: Linux:CentOS 7.x, Database:MySQL zabbix server 和 zabbix mysql 安装在 ...