1.对比使用恢复目录作为rman资料库和使用控制文件作为rman资料库的差异;
2.创建和配置恢复目录;
3.注册数据库到恢复目录中;
4.同步recovery catalog;
5.使用rman存储脚本;
6.备份recovery catalog;
7.创建一个虚拟私有目录;
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带来的好处比较大时才使用;
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];
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子句;
1.配置想要存储recovery catalog的数据库;
2.创建recovery catalog的用户;
3.创建recovery catalog;
1.为Recovery Catalog分配空间,要考虑的因素有:
2.创建表空间,用于作为Recovery Catalog拥有者的默认表空间;
CREATE TABLESPACE tbs_rc DATAFILE '/u01/app/oracle/oradata/ORCL/tbs_rc01.dbf' SIZE 50M AUTOEXTEND ON MAXSIZE 2G;
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';
1.使用catalog的拥有者连接数据库;
2.执行create catalog命令创建recovery catalog;
rman catalog rman/oracle@ORCL(如果当前的ORACLE_SID就是就是catalog数据库的SID,就不用使用net_service_name了)
create catalog;
1.注册目标数据库到recovery catalog中;
2.把附加的备份添加到recovery catalog中;
3.从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
1.在EM->Availability->Recovery Catalog Settings页面;
2.点击[Use Recovery Catalog],然后点击[Add Recovery Catalog]来添加信息;
3.如果想要在EM中使用recovery catalog做备份还原的操作,必须使用EM的方式注册目标数据库;
4.建议不要使用EM配置,本身命令行操作起来已经非常简单;
1.如果unregister database,则会从recovery catalog中移除目标数据库的信息,可以再重新的注册目标数据库,但是recovery catalog中只保存重新注册之后的信息;
2.只有当目标数据库不再使用recovery catalog或者目标数据库不在存在时才unregister;
rman target / catalog rman/oracle
unregister database;
1.CATALOG命令可以把已经存在的备份文件(但是它们的信息并不在控制文件中)添加到catalog中;
2.当使用rman做还原时可以使用到这些文件;
3.主要的备份文件类型有:
4.也可以把某个文件夹中的文件都注册进来:CATALOG RECOVERY AREA|DB_RECOVERY_FILE_DEST NOPROMPT;
5.start with选项:可以指定文件的前缀,然后使用通配符,把类似的文件都catalog进来;
把/tmp/bset目录和子目录下的文件都加入到catalog中:catalog start with '/tmp/bset';
1.当rman执行同步时,会比较recovery catalog中的信息和目标数据库中控制文件信息是否一致,然后更新recovery catalog中缺失或者改变的信息;
2.有两种重新同步的方式:partial和full
3.database schema包括数据文件的名称和位置,在线日志文件,归档日志文件,UNDO段和其它能在控制文件中找到的信息;
4.如果控制文件改变的信息都在control_file_record_keep_time参数指定的时间内的话,只需要做部分同步即可,否则做完全同步,手动发出resync catalog命令也可以执行完全同步;
1.当一下三种情况发生时需要手动同步recovery catalog:
2.执行命令;
resync catalog;
1.是可选的命令文件,主要是用来管理那些经常使用的rman命令脚本;
2.对于能够连接到目标数据库和recovery catalog的任何rman客户端都可用;
3.有两种类型:
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;
}
1.执行局部的脚本:run{execute script script_name;};
2.执行全局的脚本:run{execute global script script_name;};
3.execute script命令必须在run块中执行;如果脚本中的命令失败,则接下来的命令不再执行;执行脚本时默认使用的是自动分配channels,可以通过allocate channel命令手动分配;
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{ <RMAN commands> ; }
5.删除脚本:DELETE SCRIPT script_name;
补充:相关的视图
SELECT * FROM rman.rc_stored_script;
SELECT * FROM rman.rc_stored_script_line ORDER BY script_name, line;
1.首先要明确的是:recover catalog也是Oracle数据库,所以它也需要像其它数据库一样备份;备份Oracle数据库,肯定推荐使用rman;
2.配置recovery catalog数据库的备份恢复环境的建议:
如果recovery catalog数据库丢失或者损坏的话,而且使用常规的办法无法恢复时就需要重建catalog,然后执行以下两种命令:
1.resync catalog命令:从目标数据库的控制文件或者控制文件拷贝来更新recovery catalog中rman资料库;
2.catalog start with命令:把合法的备份文件加入到catalog中;
1.主要是通过exp/imp工具或者expdp/impdp工具做数据的导出导入;
2.移动recovery catalog从一个数据库到其它的数据库,导入之后不需要再执行create catalog命令,导入过程中自动创建;
3.也可以作为一个逻辑备份;
tips:也可以使用可传输表空间的方式导入导出recovery catalog;
1.如果recovery catalog的版本低于rman客户端的版本,就需要升级catalog:upgrade catalog;
2.要删除recovery catalog的话使用命令:drop catalog;
1.连接到目标recovery catalog:;
2.命令解释(查看帮助文档):IMPORT CATALOG <connectStringSpec> [DBID = <dbid> [, <dbid>,…]] [DB_NAME=<dbname>[, <dbname,…]] [ NO UNREGISTER ];
3.可以从不同的catalog中导入元信息;
1.如果在生产环境中,多台数据库需要多个人维护,但是给每台数据库都独立使用一个catalog数据库又太浪费,它们的元信息存放在一个catalog中,基于安全的考虑,每个维护人员只能看到自己所维护数据库的元信息,这就是VPC的作用;
2.就需要两个角色:
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
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞2
添加新评论0 条评论