1、概念:
1、恢复目录数据库:恢复目录数据库是指专门用于存放护肤目录方案的oracle数据库,注意,如果使用恢复目录存放rman元数据,那么一定要将恢复目录存放到堵路的恢复目录数据库中,而不应该存放到目标数据库。
2、恢复目录所有者:是指在恢复目录数据库中用于管理恢复目录数据库对象的数据库用户,注意:恢复目录所有者必须具有recovery_catalog_owenr 角色,并且恢复目录所有者不能是sys用户。
3、恢复目录方案:是指恢复目录数据库对象的集合,其名称世界就是恢复目录所有者的名称,为了建立恢复目录方案,必须在rman中以恢复目录所有者身份登录,然后执行create catalog命令。
4、。规划恢复目录空间,在建立恢复目录之前,必须规划恢复目录所占用的空间,多数情况下,每个目标数据库的rman元数据每年大约占用15M的恢复目录空间,因此,如果恢复目录方案只存放一个目标数据库的rman元数据,那么每年大于需要15M空间,若果存放两个目标数据库的rman元数据,那么每年大约需要30M空间。
5、恢复目录的内容
存放数据文件、控制文件、归档日志、和spfile的备份集和备份片信息。
存放数据文件、控制文件、归档日志映像副本的信息。
存放目标数据库的物理结构信息。
存放数据库副本信息。
存放存储脚本信息。
6、恢复目录的优点:
存放多个目标数据库的rman元数据,目标数据库控制文件只能存放其自身数据库的rman元数据。而不能存放其他目标数据库的rman元数据。
存放同一个目标数据库不同副本的元数据。在执行了不完全恢复。用resetlogs选项打开目标数据库之后,会生成一个新的数据库副本。
存放目标数据库的历史元数据,如果使用目标数据库控制文件存放rman元数据,当时间达到初始化参数control_file_record_time的值时,rman元数据会被覆盖,如果使用恢复目录存放rman 元数据,那么恢复目录可以永久保留rman元数据。
存放存储脚本,当使用目标数据库控制文件存放rman元数据时,不能建立存储脚本,如果使用恢复目录存放rman元数据,则可以建立存储脚本。
2、建立恢复目录:
1、建立恢复目录表空间:为了易于管理和备份恢复目录,应该讲恢复目录放在专门的表空间上,如果一个恢复目录只存放一个目标数据库的rman元数据,那么应该升值其尺寸不低于15M,首先建立恢复目录表空间:
SQL> create tablespace rman_ts datafile '$ORACLE_BASE/oradata/test/rman.dbf' size 15M;
2、建立恢复目录所有者。除了sys用户之外,恢复目录数据库的其他数据库用户都可以作为恢复目录所有者,为了捡回恢复目录的管理,应该在恢复目录数据库上建立专门的恢复目录所有者。当建立恢复目录所有者时,应该将恢复目录表空间设置为其默认表空间,下面建立RMAN 恢复目录。
SQL > create user rman identified by rman default tablespace rman_ts;
3、授予恢复目录所有者角色。恢复目录所有者必须具有recovery_catalog_owner角色。另外,当建立恢复目录时,需要连接到数据库,并且在恢复目录表空间上键表。因此,还应该为恢复目录所有者授予 connect 和 resource 角色。
SQL > grant connect ,resource ,recovery_catalog_owner to rman ;
4、建立恢复目录,使用rman命令的creat catalog来完成的。当建立恢复目录时,必须以恢复目录所有者身份连接到恢复目录数据库,当运行rman时,通过指定catalog选项可以连接到恢复目录数据库。
c:\ > rman catalog rman/rman@catdb
RMAN > create catalog;
5、注册目标数据库:建立了恢复目录之后,为了将目标数据库的rman元数据存放到恢复目录中,必须连接到目标数据库,并使用register database 命令可以检查注册是否成功,示例:
RMAN > connect target sys/liu123 @mynewdb
RMAN > register database;
RMAN >report schema;
3、使用存储脚本:
存储脚本用于存放频繁的备份、转储、和恢复操作。通过使用预先建立好的存储脚本,不仅可以避免操作人员执行交互操作时可能发生的错误,而且可以使系统自动执行备份操作。注意:存储脚本只能存放在恢复目录中。
1、建立存储脚本: 用create script命令来完成的,注意,当建立存储脚本时,必须同时连接到目标数据库和恢复目录。下面以建立用于备份数据库所有数据文件、控制文件和归档日志的存储脚本bak_database为例,说明。
C:\> rman catalog rman/rman@catdb target sys/liu123@mynewdb
RMAN > create script bak_database{
backup format = 'd:\backup|%d_%s.bak'
database include current controlfile
plus archivelog;
sql 'alter system archive log current';
}
2、运行存储脚本
运行存储脚本有两种方法:第一种方法是在rman提示符下运行存储脚本,第二种方法是在命令行直接影响存储脚本,通过运行存储脚本,可以执行备份、转储、和恢复等操作。
1、在rman提示符下运行存储脚本。是使用execute script命令来完成的。注意,因为execute script命令时作业命令,所以必须在run块内指定该命令。RMAN > run{ execute script bak_database; }
2、在命令行运行存储脚本。是通过指定script选项来完成的,示例:
c:\> rman catalog rman/rman@catbd target sys/oracle@mynewdb script bak_dtyabase;
3、显示存储脚本内容,是使用print script命令来完成的。示例:
RMAN > print script bak_database;
4 、替换存储脚本:使用replace script命令来完成的。如果存储脚本内同不适合,那么使用replace script可以替换其原来的内容。
RMAN > replace script bak_database {
backup database format = 'd:\backup\%d_%s.bak';
}
5、删除存储脚本:
使用delete script命令来完成的,如果存储脚本不在需要,可以使用此命令删除:
RMAN > delete script bak_database;
6、列出所有存储脚本
是使用list script names命令完成的:
RMAN > list scropt names;
4、维护恢复目录:
1、重新同步恢复目录:是使用resync catalog 命令来完成的,是为了是恢复目录和目标数据库控制文件保持同步。当目标数据库物理结构发生改变(增加和删除表空间,增加数据文件)时,应该重新同步恢复目录:
RMAN > resync catalog ;
当执行了resync catalog 命令之后,rman会建立快照控制文件,比较恢复目录和快照控制文件,然后使用快照控制文件信息更新恢复目录。注意:当执行某些rman命令(如:backup、delete 等)时,会自动重新同步恢复目录。
2、注销目标数据库:使用unregister database命令来完成,注销目标数据库后,会丢失早于contrilfile_record_keep_time设定时间的rman资料库记录,示例如下:
RMAN > unregister database;
3、升级恢复目录:使用ungrade catalog命令来完成的。如果rman客户端版本高于恢复目录版本号,那么应该升级恢复目录。假定rman客户端版本号为10.1.0而恢复目录的版本号是9.2.0 那么应该升级恢复目录到10.1.0. 注意,当升级恢复目录时,需要执行 两次ungrade catalog命令。
c:\> rman catalog rman/rman@catdb target sys/liu123 @demo
RMAN >upgrade catalog ;
4、删除恢复目录:删除恢复目录时使用drop catalog 命令来完成的。注意需要执行两次这个命令。示例:
c:\> rman catalog rman/rman@catdb target sys/liu123 @demo
RMAN >drop catalog ;
5、恢复数据库到早期数据库副本:当执行了不完全恢复后,需要使用alter database open resetlogs。命令打开数据库,当使用alter database open resetlogs命令打开数据库后,会建立新的数据库副本,如果你希望将数据库恢复到早期副本的状态,则必须使用reset database to incarnation 命令设置当前书库副本为早期副本。然后执行相应的恢复操作。具体步骤如下:
1、确定数据库副本的副本键值。使用list incarnation of database 命令可以列出所有的数据库副本。并显示数据库副本键值。
RMAN > list incarnation of database ;
reset time 用于标识执行resetlogs操作时的时间。
2、设置数据库到早期副本。使用reset database to incarnation 命令可以设置数据库到早期副本。当设置数据库到早期副本时,需要制定书库副本键值。注意,当设置数据库到早期副本时,要求目标数据库鼻息处于mount状态. 示例:
RMAN > startup force mount
RMAN > reset database to incarnation 2;
3、转储早期版本的控制文件。当转储控制文件时,要求目标数据库必须处于nomount状态。注意,当转储早期版本的控制文件时,必须确保控制文件备份存在。示例:
RMAN > run {
startup force nomount ;
set unil scn = 656740;
restore controlfile;
}
4、恢复数据库到早期副本。在转储了早期版本的控制文件以后,就可以护肤数据库到早期版本了。应为转储数据库和恢复数据库必须在mount状态下完成。所以应该首先装载数据库,然后执行转储和恢复等命令:
RMNA > run {
alter database mount;
restore database;
recover database;
alter datbase open resetlogs;
}
5、查询恢复目录:
1、RC_DATABASE 视图:该数据字典视图用于显示在恢复目录中已经注册的多有目标数据库信息。下面以显示目标数据库DBID,数据库名和执行和resetlogs操作时的scn值 为例。说明使用该数据字典视图的方法。示例如下:
SQL > select dbid , name , resetlogs_change# from rc_database;
2、RC_TABLESPACEA视图:该数据字典视图用于显示在恢复目录中目标数据库的表空间信息。下面以显示目标数据库demo的所有表空间编号,名称,建立时的scn值为例。说明使用该数据字典视图的方法。
SQL> select ts#, name ,creation_change# from rc_tablespace where db_name= 'demo';
3、RC_DATFILE 视图。显示在恢复目录中记载的目标数据库的数据文件信息。下面显示目标数据库demo的所哟数据文件编号,名称,和尺寸。说明使用该数据字典的方法:
SQL> select file# , name , bytes from rc_datafile where db_name = 'demo' ;
4、RC_STORED_SCRIPT : 用于显示在恢复目录中所记载的所有存储脚本信息。下面显示目标数据库demo的所有存储脚本:
SQL > select script_name from rc_stored_script where db_name = 'demo';
5、RC_STORED_SCRIPT_LINE:显示存储脚本的内容,
SQL> select line , text from rc_stored_script_line where script_name = 'bak_database';