rman恢复oracle data目录

Objectives

1.对比使用恢复目录作为rman资料库和使用控制文件作为rman资料库的差异; 
2.创建和配置恢复目录; 
3.注册数据库到恢复目录中; 
4.同步recovery catalog; 
5.使用rman存储脚本; 
6.备份recovery catalog; 
7.创建一个虚拟私有目录;

RMAN Repository Data Storage Comparison of Options

1.rman的备份信息默认是存放在目标数据库的控制文件中的,存放时间由control_file_record_keep_time参数控制,默认是7天; 
2.同时,也可以把rman的备份信息保存到一个独立的数据库中,叫做recovery catalog; 
3.使用recovery catalog可以保存更长时间的备份信息,当目标数据库的控制文件丢失时非常有用; 
4.recovery catalog可以保存多个目标数据库的备份信息,可以保存RMAN stored scripts(类似于存储过程,就是一系列rman脚本); 
5.如果只是简单的备份管理需求的话,建议使用控制文件即可,因为如果使用recovery catalog的话,意味着还要对其它的数据库做备份管理,Licence费用;所以,只有在使用recovery catalog带来的好处比较大时才使用;

Storing Information in the Recovery Catalog

1.使用recovery catalog的话,在每次更新资料库操作之后和某些操作之前rman都会把数据库结构信息,归档日志,备份集信息,数据文件的镜像信息从目标数据库的控制文件中推送到recovery catalog中; 
2.查看数据库结构的命令; 
rman target / 
RMAN> report schema; 
3.查看归档日志信息; 
RMAN> list archivelog all; 
4.查看备份集信息; 
RMAN> list backup [of database/controlfile/archivelog]; 
5.查看数据文件镜像信息; 
RMAN> list copy [of database/controlfile/archivelog];

Reasons to User a Recovery Catalog

1.比控制文件存储更多的历史信息,控制文件中存放备份信息的空间是有限的; 
2.可以使用RMAN存储脚本; 
3.可以针对所有注册的目标数据库创建定制化的报表;因为连接到recovery catalog后就可以查看RC_*的视图,如果不用recovery catalog的话需要连接到每一个目标数据库分别查看相应的v$视图; 
4.使用backup命令时可以使用keep forever子句;keep子句的意义在于创建一个备份单独指定过期策略,不受默认的过期策略影响,而keep forever表示备份永久不过期,所以需要使用recovery catalog来永久保存备份信息; 
5.可以列出目标数据库任何给定时间的数据库结构(数据文件和表空间),report schema [at time|scn|logseq]命令,只有在使用recovery catalog时才可以使用at子句;

Creating the Recovery Catalog:Three Steps

1.配置想要存储recovery catalog的数据库; 
2.创建recovery catalog的用户; 
3.创建recovery catalog;

Configuring the Recovery Catalog Database

1.为Recovery Catalog分配空间,要考虑的因素有: 
- 支持的数据库的数量; 
- 归档日志文件的数量和备份信息的数量; 
- 存储的RMAN stored scripts;

2.创建表空间,用于作为Recovery Catalog拥有者的默认表空间; 
CREATE TABLESPACE tbs_rc DATAFILE '/u01/app/oracle/oradata/ORCL/tbs_rc01.dbf' SIZE 50M AUTOEXTEND ON MAXSIZE 2G;

Creating the Recovery Catalog Owner

1.创建Recovery Catalog拥有者,默认表空间为刚刚创建的表空间,而且要可以无限制使用空间; 
2.需要授予recovery_catalog_owner角色; 
CREATE USER rman IDENTIFIED BY oracle DEFAULT TABLESPACE tbs_rc QUOTA UNLIMITED ON tbs_rc; 
GRANT recovery_catalog_owner TO rman; 
补充: 
查看recovery_catalog_owner角色有哪些权限:SELECT * FROM dba_sys_privs WHERE grantee = 'RECOVERY_CATALOG_OWNER'; 
查看有recovery_catalog_owner角色的用户:SELECT * FROM dba_role_privs WHERE granted_role = 'RECOVERY_CATALOG_OWNER';

Creating the Recovery Catalog

1.使用catalog的拥有者连接数据库; 
2.执行create catalog命令创建recovery catalog; 
rman catalog rman/oracle@ORCL(如果当前的ORACLE_SID就是就是catalog数据库的SID,就不用使用net_service_name了) 
create catalog;

Managing Target Database Records in the Recovery Catalog

1.注册目标数据库到recovery catalog中; 
2.把附加的备份添加到recovery catalog中; 
3.从recovery catalog中移除对目标数据库的注册;

Registering a Database in the Recovery Catalog

rman主要做以下三件事: 
1.在recovery catalog表中为目标数据库添加记录; 
2.拷贝目标数据库控制文件信息到recovery catalog表中; 
3.同步recovery catalog与控制文件; 
rman target sys/ORACLE@ORCL catalog rman/oracle@ORCL(rman target / catalog rman/oracle) 
register database

Use EM to Register a Database

1.在EM->Availability->Recovery Catalog Settings页面; 
2.点击[Use Recovery Catalog],然后点击[Add Recovery Catalog]来添加信息; 
3.如果想要在EM中使用recovery catalog做备份还原的操作,必须使用EM的方式注册目标数据库; 
4.建议不要使用EM配置,本身命令行操作起来已经非常简单;

Unregistering a Target Database from the Recovery Catalog

1.如果unregister database,则会从recovery catalog中移除目标数据库的信息,可以再重新的注册目标数据库,但是recovery catalog中只保存重新注册之后的信息; 
2.只有当目标数据库不再使用recovery catalog或者目标数据库不在存在时才unregister; 
rman target / catalog rman/oracle 
unregister database;

Cataloging Additional Backup Files

1.CATALOG命令可以把已经存在的备份文件(但是它们的信息并不在控制文件中)添加到catalog中; 
2.当使用rman做还原时可以使用到这些文件; 
3.主要的备份文件类型有: 
- 控制文件拷贝; 
- 数据文件拷贝; 
- 备份片; 
- 归档日志文件; 
- 语法有:CATALOG CONTROLFILECOPY/DATAFILECOPY/BACKPIECE/ARCHIVELOG 'filename';

4.也可以把某个文件夹中的文件都注册进来:CATALOG RECOVERY AREA|DB_RECOVERY_FILE_DEST NOPROMPT; 
5.start with选项:可以指定文件的前缀,然后使用通配符,把类似的文件都catalog进来; 
把/tmp/bset目录和子目录下的文件都加入到catalog中:catalog start with '/tmp/bset';

Recovery Catalog Resynchronization:Concepts

1.当rman执行同步时,会比较recovery catalog中的信息和目标数据库中控制文件信息是否一致,然后更新recovery catalog中缺失或者改变的信息; 
2.有两种重新同步的方式:partial和full 
- partial:比较recovery catalog和控制文件的信息,然后更新备份集,归档日志,数据文件拷贝等元数据信息; 
- full:首先创建一个控制文件快照,用于跟recovery catalog比较,然后做与partial相同的事情,然后会添加数据库结构的变化(比如schema的改变或者表空间的改变);

3.database schema包括数据文件的名称和位置,在线日志文件,归档日志文件,UNDO段和其它能在控制文件中找到的信息; 
4.如果控制文件改变的信息都在control_file_record_keep_time参数指定的时间内的话,只需要做部分同步即可,否则做完全同步,手动发出resync catalog命令也可以执行完全同步;

Manually Resynchronizing the Recovery Catalog

1.当一下三种情况发生时需要手动同步recovery catalog: 
- 当执行rman命令触发部分同步时,recovery catalog不可用时; 
- 当不经常备份目标数据库从而导致recovery catalog没有自动更新在线日志切换或者在线日志归档的信息时; 
- 当目标数据库的物理结构发生变化时;

2.执行命令; 
resync catalog;

Using RMAN Stored Scripts

1.是可选的命令文件,主要是用来管理那些经常使用的rman命令脚本; 
2.对于能够连接到目标数据库和recovery catalog的任何rman客户端都可用; 
3.有两种类型: 
- local:关联到创建脚本时连接的目标数据库,只能在这个目标数据库中使用; 
- global:可以被任何注册到recovery catalog中的数据库使用;

4.可以从一个文本文件中创建:CREATE [GLOBAL] SCRIPT script_name FROM 'file_name'; 
(1)创建一个局部脚本; 
rman target sys/ORACLE@ORCL catalog rman/oracle@ORCL 
CREATE SCRIPT backup_tbs_users
COMMENT "backup users tablespace"
{
BACKUP TABLESPACE USERS;

(2)创建一个全局的脚本; 
rman target sys/ORACLE@ORCL catalog rman/oracle@ORCL 
CREATE GLOBAL SCRIPT backup_whole
COMMENT "backup whole database and archived redo log files"
{
CONFIGURE CONTROLFILE AUTOBACKUP ON;
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
ALLOCATE CHANNEL ch2 DEVICE TYPE DISK;
ALLOCATE CHANNEL ch3 DEVICE TYPE DISK;
BACKUP INCREMENTAL LEVEL 0 TAG backup_whole DATABASE PLUS ARCHIVELOG;
}

Executing RMAN Stored Scripts

1.执行局部的脚本:run{execute script script_name;}; 
2.执行全局的脚本:run{execute global script script_name;}; 
3.execute script命令必须在run块中执行;如果脚本中的命令失败,则接下来的命令不再执行;执行脚本时默认使用的是自动分配channels,可以通过allocate channel命令手动分配;

Maintaining RMAN Stored Scripts

1.显示脚本:PRINT [GLOBAL] SCRIPT script_name; 
print script backup_tbs_users; 
print script backup_whole; 
2.把脚本内容转存到文件中:PRINT [GLOBAL] SCRIPT script_name TO FILE 'file_name'; 
print script backup_tbs_users to file '/tmp/backup_tbs_users.rc'; 
print script backup_whole to file '/tmp/backup_whole.rc'; 
3.列出所有的脚本名称:LIST [GLOBAL] SCRIPT NAMES; 
list script names;
4.更新脚本:REPLACE [GLOBAL] SCRIPT script_name{ ; }
5.删除脚本:DELETE SCRIPT script_name; 
补充:相关的视图
SELECT * FROM rman.rc_stored_script;
SELECT * FROM rman.rc_stored_script_line ORDER BY script_name, line;

Backing Up the Recovery Catalog

1.首先要明确的是:recover catalog也是Oracle数据库,所以它也需要像其它数据库一样备份;备份Oracle数据库,肯定推荐使用rman; 
2.配置recovery catalog数据库的备份恢复环境的建议: 
- 要运行在ARCHIVELOG模式下; 
- 设置冗余策略大于1:CONFIGURE RETENTION POLICY TO REDUNDANCY n; 
- 备份数据到磁盘或者磁带上; 
- 每次备份数据库都要加上归档日志文件:backup database plus archivelog; 
- 使用控制文件作为rman的资料库,而不是再使用另外的recovery catalog; 
- 配置控制文件自动备份:CONFIGURE CONTROLFILE AUTOBACKUP ON

Re-Creating an Unrecoverable Recovery Catalog

如果recovery catalog数据库丢失或者损坏的话,而且使用常规的办法无法恢复时就需要重建catalog,然后执行以下两种命令: 
1.resync catalog命令:从目标数据库的控制文件或者控制文件拷贝来更新recovery catalog中rman资料库; 
2.catalog start with命令:把合法的备份文件加入到catalog中;

Exporting and Importing the Recovery Catalog

1.主要是通过exp/imp工具或者expdp/impdp工具做数据的导出导入; 
2.移动recovery catalog从一个数据库到其它的数据库,导入之后不需要再执行create catalog命令,导入过程中自动创建; 
3.也可以作为一个逻辑备份; 
tips:也可以使用可传输表空间的方式导入导出recovery catalog;

Upgrading and Dropping the Recovery Catalog

1.如果recovery catalog的版本低于rman客户端的版本,就需要升级catalog:upgrade catalog; 
2.要删除recovery catalog的话使用命令:drop catalog;

IMPORT CATALOG Command

1.连接到目标recovery catalog:; 
2.命令解释(查看帮助文档):IMPORT CATALOG [DBID = [, ,…]] [DB_NAME=[, <dbname,…]] [ NO UNREGISTER ]; 
- connectStringSpec:源recovery catalog的连接串,如果不指定其它选项的话表示导入所有已注册的数据库的元信息:import catalog rman/oracle@orcl; 
- DBID:指定需要导入的的数据库的DBID列表,如果要导入的数据库已经在目的数据库中注册的话,则会报错; 
- DB_NAME:跟DBID相同,如果数据库名称重复的话,则报错; 
- NO UNREGISTER:默认情况下,从源recovery catalog导入到目的recovery catalog后,数据库会自动的从源recovery catalog中unregister掉,如果使用此选项,则保留在源catalog中的信息

3.可以从不同的catalog中导入元信息;

Creating and Using Virtual Private Catalogs(VPC)

1.如果在生产环境中,多台数据库需要多个人维护,但是给每台数据库都独立使用一个catalog数据库又太浪费,它们的元信息存放在一个catalog中,基于安全的考虑,每个维护人员只能看到自己所维护数据库的元信息,这就是VPC的作用; 
2.就需要两个角色: 
- catalog owner:之前提到的,它是标准catalog的拥有者,具有recovery_catalog_owner角色;可以看到所有注册的目标数据库; 
- virtual catalog owner:也具有recovery_catalog_owner角色,并由catalog owner用户被授予REGISTER DATABASE权限;只能连接到特定的目标数据库和注册目标数据库; 
- 查看自己管理的数据库:SELECT DISTINCT db_name FROM DBINC; 
3.配置VPC的目的就是让VPC的拥有者使用VPC就跟使用标准的catalog一样

Using RMAN Virtual Private Catalogs

1.创建标准的catalog; -- 已经创建了; 
rman catalog rman/oracle@ORCL 
create catalog;

2.创建vpc用户并授权; 
sqlplus / as sysdba 
CREATE USER vpc1 IDENTIFIED BY oracle DEFAULT TABLESPACE tbs_rc QUOTA UNLIMITED ON tbs_rc;
CREATE USER vpc2 IDENTIFIED BY oracle DEFAULT TABLESPACE tbs_rc QUOTA UNLIMITED ON tbs_rc;
GRANT recovery_catalog_owner TO vpc1,vpc2; -- 此时它们虽然有recovery_catalog_owner角色,但是看不到注册的数据库; 
查看vpc用户;SELECT * FROM rman.vpc_users;

3a.授予vpc1用户REGISTER DATABASE权限,则vpc1就可以注册新的目标数据库到VPC中; 
rman catalog rman/oracle@ORCL 
grant register database to vpc1; 
稍后使用vpc1用户创建VPC然后注册数据库;

3b.直接把某个数据库的catalog权限授予vpc2,这样它就可以直接管理这个数据库; 
rman catalog rman/oracle@ORCL 
grant catalog for database orcl to vpc2; 
查看vpc2用户管理的数据库信息:SELECT * FROM rman.vpc_databases;

4a.11g中客户端创建VPC; 
rman catalog vpc1/oracle@ORCL 
create virtual catalog; 
rman catalog vpc2/oracle@ORCL 
create virtual catalog;

4b.11g版本之前客户端创建VPC的方法,了解一下; 
exec catowner.dbms_rcvcat.create_virtual_catalog;

5.测试: 
查看vpc1管理的数据库信息; 
conn vpc1/oracle
SELECT DISTINCT db_name FROM DBINC; -- 无记录; 
查看vpc2管理的数据库信息; 
conn vpc1/oracle
SELECT DISTINCT db_name FROM DBINC; -- ORCL数据库; 
查看vpc1注册数据库; 
rman target / catalog vpc1/oracle@ORCL 
register database; -- 提示可以注册;
查看vpc2注册数据库; 
rman target / catalog vpc2/oracle@ORCL 
register database; -- 提示无权限;

6.使用; 
rman target / catalog vpc2/oracle@ORCL 
backup tablespace users

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值