1.主要内容:
(1)描述11g中RMAN的新特性;
(2)duplicate数据库可以直接通过网络传输,不需要有备份;
(3)可以把大文件分段备份;
(4)创建长期保存的归档备份;
(5)管理recovery catalog;
(6)描述virtual private catalogs的使用;
2.使用SET NEWNAME子句:
(1)新增加的SET NEWNAME子句可以为数据库/表空间内所有的文件指定一个默认的名称格式;
(2)可以用于DUPLICATE,RESTORE和SWITCH命令的RUN块中;
(3)SET NEWNAME子句可以使用一条命令设置所有文件名称,而不需要为每个文件分别设定名;
(4)语法元素:
%b:指定文件的文件名,用在文件名不变,只修改文件目录的情况;
%I:指定DBID;
%N:指定表空间名称;
%U:指定一个系统成的格式[data-D-%d_id-%I_TS-%N_FNO-%f];
(5)使用的例子:
a.修改数据库中数据文件的目录:SET NEWNAME FOR DATABASE TO '/NEWPATH/%b';
b.修改表空间中数据文件的目录:SET NEWNAME FOR TABLESPACE tbs_name TO '/NEWPATH/%b';
c.然后再执行DUPLICATE TARGET DATABASE TO dup_db;
3. 性能的加强:
(1)Physical Standby可以启动Fast Incremental Backups:
a. 开启:ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'tracking_file' REUSE;
b. 关闭:ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
c. trace file记录了上次完全备份之后所有发生变化的块,增量备份时直接读取这些块,可以从v$block_change_tracking视图中查看设置的信息;
d. 启用快速增量备份之后就之后0和1级别了,没有2,3,4,5级别了;
(2)提升了块的恢复,之前是block recovery,现在可以直接使用recovery;
4. 坏块检测的加强:
(1)使用v$database_block_corruption视图查看存在的快坏;
(2)加强了VALIDATE命令:
a. VALIDATE ... BLOCK;
b. VALIDATE DATABASE;
(3)与dbverify的功能相似;
5. 使用新的二进制压缩功能:
(1)命令为:CONFIGURE COMPRESSION ALGORITHM 'HIGH/MEDIUM/LOW/DEFAULT';
(2)压缩级别:
a. HIGH:压缩率很大,消耗最多的cpu;
b. MEDIUM:压缩率一般,消耗较多的cpu;
c. LOW:比较低的压缩率,消耗较少的cpu;
d. DEFAULT:介于HIGH和MEDIUM之间;
(3)HIGH/MEDIUM/LOW:这三项压缩级别需要高级压缩功能:
a. 使用dba_registry视图查看已经安装的组件;
6. 备份的优化:
(1)优化了UNDO的备份,减少了时间和占用空间:
a. 不备份那些已经提交,而且提交的时间超过UNDO_RETENTION的UNDO快;
b. 只备份那些未提交,或者提交了但是提交时间小于UNDO_RETENTION的UNDO快;
(2)灵活使用VSS-enabled软件:
a. VSS:Volume Shadow Copy Service,卷影拷贝服务;Windows中的功能,使用VSS,在特定卷上建立数据拷贝时间点,并在将来的某一时刻把数据恢复到任何一个你曾创建的时间点的状态;
b. 与存储级别的拷贝有关;
c. 如果备份sql Server时,主机不知道存储层面备份,可能发生数据不一致的情况,因此需要先发出vss命令来出发;
d. Oracle不需要必须使用VSS,当然也可以使用;
(3)在multiple-component环境(主要是指dg环境)简化了归档日志的管理:
a. 主要是在rman中删除主库归档日志时确保归档日志已经传到了备库(手动删除无法控制);
b. 主要通过命令实现:
- CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON [ALL] STANDBY:备库应用上以后才可以删除;
- CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO [ALL] STANDBY:传输到了备库就可以删除;
- CONFIGURE ARCHIVELOG DELETION POLICY TO NONE:没有删除策略;、
(4)在配置了多个归档路径的情况下,如果其中一个归档路径损坏,可以自动failover到其它的路径备份归档日志;
7. 并行备份/恢复超级大文件:
(1)11g之前一个文件只能使用一个Channel来备份,现在对于超大文件可以使用多个Channel把文件分成多个Section来备份,最多256个Section;
(2)通过SECTION SIZE N [K|M|G]来控制每个的大小,可以用在BACKUP和VALIDATE DATAFILE命令中;
(3)把SYSTEM表空间分四份备份的例子:
a. CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;
b. BACKUP SECTION SIZE 200M TABLESPACE SYSTEM;
c. 会按照文件的块分成四份,由四个channel分别备份;
(4)如果指定的section size太小而超过256个section的话,rman会自动计算section size的大小,正好生成256个section;
8. DUPLICATE数据库的加强:
(1)可以使用网络,不需要备份即可完成;
(2)需要包含自定义的spfile(需要指定出初始化参数文件和监听器的连接方式),在duplicate的时候会自动创建spfile;
(3)duplicate数据库的过程:
a. 注册静态监听文件,并配置tnsnames.ora文件;
b. 创建密码文件;
c. 在$ORACLE_HOME/dbs目录下写pfile,添加db_name,db_file_name_convert,log_file_name_convert,sga_target和compatible参数;
d. 创建$ORACLE_BASE/admin/SID/[a|b|c|u]dump目录和数据文件目录;
e. 启动到momount状态下;
f. rman target xx@tnsnames auxiliary xx@tnsnames catalog xx@tnsnames;
g. duplicate target database to xx from active database;
h. tips:不要在duplicate时指定spfile,容易出错,使用pfile,duplicate完成后会自动创建spfile;
(4)创建standby的过程:duplicate target database for standby from active database,其它步骤一样;
(5)使用duplicate甚至可以不连target database,但是要连catalog,通过catalog查看target database的文件结构,通过备份复制数据库;
a. 启动auxiliary instance到nomount状态;
b. rman auxiliary xx@tnsnames catalog xx@tnsnames;
c. duplicate database target_name to dup_name;
(6)可以使用duplicate ... [skip] tablespace命令跳过某些表空间;
a. 当skip某个或者某些表空间时,要确保剩下的表空间没有引用skip的表空间;
b. 使用dbms_tts.transport_set_check过程来检查是否自包含;
(7)在duplicate时一定要先alter system switch logfile切出来一个归档日志,duplicate本身是把数据库不完全恢复到一个时间点,这个时间点不能在online redo log file中,所以至少要有一个archive log;
(8)DUPLICATE命令的新选项:
a. NOREDO:当使用targetless duplicate(即duplicate不连接target database)而且target database处于NOARCHIVELOG模式下,没有archive log可以恢复时,要把target database启动到mount状态然后做duplicate,意义不大;
b. UNDO TABLESPACE:中间换过UNDO表空间,那么在recovery的时候就会报错,此时需要指定原来的UNDO表空间;
9.使用RMAN创建Archival Backups:
(1)Archival Backup:是完整的数据库的备份,包括数据文件的备份,控制文件的备份,归档日志的备份.通过Archival Backup可以完全恢复出一个数据库到某个时间;
(2)通过KEEP子句完成,可以在线做:NOKEEP | KEEP {FOREVER | UNTIL TIME [=] ' date_string '} [RESTORE POINT rsname];
a. KEEP FOREVER:永久保留,只能通过catalog做;
b. KEEP UNTIL TIME = '':可以通过控制文件做;
c. RESTORE POINT rsname:是为这个Archival Backup指定一个名词;
(3)RMAN中列出所有的restore points:LIST RESTORE POINT ALL;
(4)RMAN中显示某一个restore points:LIST RESTORE POINT 'rsname';
(5)管理Archival Database Backup:
a. 备份时指定KEEP时间:BACKUP TABLESPACE users KEEP UNTIL TIME = 'YYYYY-MM-DD';
b. 已经存在的备份可以使用CHANGE命令修改:CHANGE BAKCUP/BACKUPSET TAG 'tag' KEEP UNTIL TIME = 'YYYYY-MM-DD';
c. NOKEEP一个拷贝:CHANGE COPY OF DATABASE CONTROLFILE NOKEEP;
d. 备份时使用KEEP命令会把数据文件,归档日志和控制文件都一起备份;CHANGE之前的备份/备份集的话相关的归档日志是可以删除的;
(6)EM中Database Instance->Availability->Schedule Backup->Schedule Customized Backup中,第二步Settings是可以选择Policy,来指定KEEP的时间;
10.从内存中生成pfile或者spfile:
(1)CREATE PFILE [= 'pfile_name' ] FROM { { SPFILE [= 'spfile_name'] } | MEMORY };
(2)CREATE SPFILE [= 'spfile_name' ] FROM { { PFILE [= 'pfile_name' ] } | MEMORY };
11. TSPITR的加强与改动:
(1)TSPITR:Tablespace Point-In-Time Recovery,基于时间点的表空间恢复,将一个或者多个表空间恢复到过去的一个时间点,而其它的表空间仍然保持现有的状态;
(2)11g之前是从duplicate出来的中间库把表空间导出导入,现在可以使用传输表空间和数据泵;
(3)TSPITR可以用于恢复一个被删除的表空间;
(4)TSPITR在设置为ONLINE之前可以反复执行,而且不需要recovery catalog;
(5)使用dbms_tts.transport_set_check过程检查要恢复的一个或者几个表空间自包含;
(6)使用Image Copy加快TSPITR的性能:
a. 使用SET NEWNAME命令替代CONFIGURE AUXNAME命令:SET NEWNAME FOR DATAFILE 'xx' TO 'yyy';
b. 恢复表空间到某个SEQUENCE:RECOVER TABLESPACE tbsname UNTIL SEQUENCE xxx THREAD 1;
12. 管理Recovery Catalogs:
(1)创建Recovery Catalog;
(3)如果愿意,可以使用IMPORT CATALOG命令把老的catalog的信息导入进来合并;
a. 假设有三个Recovery,分别为11.1,10.2和9.2的版本,要把低版本的catalog的元信息合并到高版本;
b. 连接11.1版本的catalog:CONNECT CATALOG cat111/oracle@destdb;
c. 导入在10.2版本中注册的所有的数据库的元信息:IMPORT CATALOG cat102/oracle@srcdb;
d. 导入在9.2版本中注册的两个数据库的元信息:IMPORT CATALOG cat92/oracle@catdb DBID=1423241,1423242;
e. NO UNREGISTER:默认情况下,导入到其它catalog时,数据库就会从原来的catalog中unregister掉,可以加NO UNREGISTER参数,使数据库在两边都注册;
f. 主要是为了合并之前版本中注册数据库的备份信息,也可以都重新注册到新的catalog,然后再备份,但是如果库很多使用合并就方便很多;
(4)如果需要的话,可以注册一些老的备份到catalog;
(5)如果需要的话,可以创建virtual recovery catalog为某些用户,叫VPC(Virtual Private Catalogs);
a. 假如有4个dba管理了20台oracle server,每人管理5台,那么可以先创建一个base的catalog,把20台db都注册到catalog中,然后分配权限,这样每个人只能看到自己管理的db的元信息了;
b. 创建base的catalog:
RMAN> CONNECT CATALOG catowner/oracle@catdb;
RMAN> CREATE CATALOG;
sql> CONNECT SYS/oracle@catdb AS SYSDBA;
sql> GRANT RECOVERY_CATALOG_OWNER to vpcowner;
d. 为vpc用户授权:
catalog的拥有者连接:RMAN> CONNECT CATALOG catowner/oracle@catdb;
授权管理db10g数据库的元信息:RMAN> GRANT CATALOG FOR DATABASE db10g TO vpcowner;
授权可以注册新的数据库进来:RMAN> GRANT REGISTER DATABASE TO vpcowner;
e. 使用vpc用户创建virtual catalog:
如果是11g客户端的话:
RMAN> CONNECT CATALOG vpcowner/oracle@catdb;
RMAN> CREATE VIRTUAL CATALOG;
如果是11g之前的客户端的话:
sql> CONNECT vpcowner/oracle@catdb;
sql> exec catowner.dbms_rcvcat.create_virtual_catalog;
RMAN> CONNECT TARGET / CATALOG vpcowner/oracle@catdb;
RMAN> REGISTER DATABASE;
g. 使用virtual catalog:
RMAN> BACKUP DATABASE;
(6)保护Recovery Catalog;