文档内容
|
|
用途 |
|
|
适用范围 |
|
|
详细信息 |
| 支持容器和可插拔数据库 |
| SYSBACKUP 权限 |
| SQL 接口改进 |
| 多截面备份改进 |
| Active 数据库复制改进 |
| RMAN 复制的 NOOPEN 选项 |
| 备份恢复结合第三方快照技术 |
| 跨平台备份恢复改进 |
| 从 RMAN 备份中恢复表和表分区 |
| 通过网络还原和恢复 |
| RMAN 和统一审计: |
|
|
参考 |
适用于:
Oracle Database - Enterprise Edition - 版本 12.1.0.1 和更高版本本文档所含信息适用于所有平台
用途
本文档提供 RMAN 在 Oracle 12c 的可用的增强功能信息。
适用范围
本文适用于有很强 RMAN 知识能力的 DBA。
详细信息
RMAN 在 12c 对可插拔数据库环境提供了全方位的备份和恢复支持。你可以使用全部或者增量备份的方式对整个容器数据库(CDB)备份。也可以对一个、多个可插拔数据库(PDB)备份。
下面的文档中详细解释了该特性: RMAN Pluggable Database Point in Time Recovery (Note 1521075.1) RMAN Pluggable Database Backup and Recovery (Note 1521005.1)
在 12c,Oracle 通过引入特定任务的管理责任支持分离的数据库管理(DBA)职责。备份和恢复的这部分管理权限叫做 SYSBACKUP。这允许实施备份恢复任务但不能访问数据表的内容(SYSDBA 适合访问表数据的情况)。这个权限包含备份和恢复的许可(例如可以连接关闭的数据库),不包含以 SELECT ANY TABLE 的权限访问数据。SYSBACKUP 权限是在安装 Oracle 数据库时自动安装的。使用之前 SYSBACKUP 用户必须解锁和赋权。如果使用操作系统认证,那么在通过 orapwd 重建密码文件时必须添加 SYSBACKUP=Y 语句。SYSDBA 仍然是默认的连接,如果在连接串中既没有指定 AS SYSBACKUP 也没有指定 AS SYSDBA,那么将会使用 AS SYSDBA 建立连接。SYSBACKUP 权限是安装 Oracle 数据库时自动创建的。
SYSBACKUP 用户被赋予以下权限:
PRIVILEGE
----------------------------------------
ALTER SYSTEM
AUDIT ANY
SELECT ANY TRANSACTION
SELECT ANY DICTIONARY
RESUMABLE
CREATE ANY DIRECTORY
UNLIMITED TABLESPACE
ALTER TABLESPACE
ALTER SESSION
ALTER DATABASE
CREATE ANY TABLE
DROP TABLESPACE
CREATE ANY CLUSTER
在 12c,现在你在 RMAN 命令行窗口中执行 SQL 和 PL/SQL 存储过程时不需要前缀 SQL 命令了。这包括 select 语句也包括 desc 命令,它提供和 sql*plus 中的 desc 命令一样的功能。要访问特定 schema 下的表你需要这个对象上的查询权限。SYSBACKUP 权限没有赋予访问用户表或者视图的权限,这些权限必须手工赋予或者以 SYSDBA 的方式连接。
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
RMAN> connect target /
connected to target database: ORACLE (DBID=1558452677)
RMAN> alter session set nls_date_format = 'dd-mon-yyyy hh24:mi:ss';
using target database control file instead of recovery catalog
Statement processed
RMAN> select sysdate from dual;
SYSDATE
--------------------
27-feb-2013 08:03:25
RMAN> desc v$logfile;
Name Null? Type
----------------------------------------- -------- ----------------------------
GROUP# NUMBER
STATUS VARCHAR2(7)
TYPE VARCHAR2(7)
MEMBER VARCHAR2(513)
IS_RECOVERY_DEST_FILE VARCHAR2(3)
CON_ID NUMBER
最小的 RMAN 备份单元是一整个数据文件,随着数据文件的增加,11g 添加了多截面备份功能。 通过这个功能 RMAN 可以通过 backup 和 restore 将一个大的文件备份成多个部分。备份管理员为每个读的进程(通道)选择一个大小(使用 SECTION SIZE 关键字)允许一个独立的数据库以并行的方式备份。在一个备份集中每个进程(通道)创建一个单独的文件。
在 12c,多截面备份适合所有的备份类型,包括 backupsets(11g 新添加的功能),镜像拷贝和增量备份。这个特性可以减少‘非备份’使用的完成时间,例如拷贝一个可传输表空间过程的文件或者创建一个克隆的 active 数据库的复制。
这个新功能要求兼容性设置为 12.0 并且只能够用于数据文件。例如它不能用于备份控制文件。如果选择的截面大小大于这个文件那么 rman 将不会对这个文件使用多截面备份。同样地,如果选择的截面大小太小以至于会有256个部分生成,RMAN 将增加截面大小到一个产生256个部分的合适的值。注意。根据语法的不同你可以在一个相同的备份工作中对不同的文件选择不同的截面大小。
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORACLE_C (DBID=2144146745)
RMAN> backup incremental level 1 section size 300M database;
Starting backup at 05-MAR-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=365 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=16 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=133 device type=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: SID=254 device type=DISK
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00003 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_SYSAUX_8LYWMRBC_.DBF
backing up blocks 1 through 38400
channel ORA_DISK_1: starting piece 1 at 05-MAR-13
channel ORA_DISK_2: starting incremental level 1 datafile backup set
channel ORA_DISK_2: specifying datafile(s) in backup set
input datafile file number=00005 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_UNDOTBS1_8LYWR7B5_.DBF
backing up blocks 1 through 38400
channel ORA_DISK_2: starting piece 1 at 05-MAR-13
channel ORA_DISK_3: starting incremental level 1 datafile backup set
channel ORA_DISK_3: specifying datafile(s) in backup set
input datafile file number=00001 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_SYSTEM_8LYWOT2Q_.DBF
backing up blocks 1 through 38400
channel ORA_DISK_3: starting piece 1 at 05-MAR-13
channel ORA_DISK_4: starting incremental level 1 datafile backup set
channel ORA_DISK_4: specifying datafile(s) in backup set
input datafile file number=00004 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_SYSAUX_8LYX0ZLS_.DBF
skipping datafile 00004 because it has not changed
channel ORA_DISK_4: backup cancelled because all files were skipped
channel ORA_DISK_4: starting incremental level 1 datafile backup set
channel ORA_DISK_4: specifying datafile(s) in backup set
input datafile file number=00003 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_SYSAUX_8LYWMRBC_.DBF
backing up blocks 38401 through 76800
channel ORA_DISK_4: starting piece 2 at 05-MAR-13
channel ORA_DISK_2: finished piece 1 at 05-MAR-13
piece handle=C:\APP\ORACLE\FAST_RECOVERY_AREA\ORACLE_CDB\BACKUPSET\2013_03_05\O1_MF_NNND1_TAG20130305T060331_8MCYSO3X_.BKP tag=TAG20130305T060331 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:00:09
channel ORA_DISK_2: starting incremental level 1 datafile backup set
channel ORA_DISK_2: specifying datafile(s) in backup set
input datafile file number=00003 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_SYSAUX_8LYWMRBC_.DBF
backing up blocks 76801 through 103680
channel ORA_DISK_2: starting piece 3 at 05-MAR-13
channel ORA_DISK_3: finished piece 1 at 05-MAR-13
piece handle=C:\APP\ORACLE\FAST_RECOVERY_AREA\ORACLE_CDB\BACKUPSET\2013_03_05\O1_MF_NNND1_TAG20130305T060331_8MCYSOC7_.BKP tag=TAG20130305T060331 comment=NONE
channel ORA_DISK_3: backup set complete, elapsed time: 00:00:13
channel ORA_DISK_3: starting incremental level 1 datafile backup set
channel ORA_DISK_3: specifying datafile(s) in backup set
input datafile file number=00005 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_UNDOTBS1_8LYWR7B5_.DBF
backing up blocks 38401 through 76800
channel ORA_DISK_3: starting piece 2 at 05-MAR-13
channel ORA_DISK_1: finished piece 1 at 05-MAR-13
piece handle=C:\APP\ORACLE\FAST_RECOVERY_AREA\ORACLE_CDB\BACKUPSET\2013_03_05\O1_MF_NNND1_TAG20130305T060331_8MCYSNVV_.BKP tag=TAG20130305T060331 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:16
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00005 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_UNDOTBS1_8LYWR7B5_.DBF
backing up blocks 76801 through 103680
channel ORA_DISK_1: starting piece 3 at 05-MAR-13
channel ORA_DISK_3: finished piece 2 at 05-MAR-13
piece handle=C:\APP\ORACLE\FAST_RECOVERY_AREA\ORACLE_CDB\BACKUPSET\2013_03_05\O1_MF_NNND1_TAG20130305T060331_8MCYT36N_.BKP tag=TAG20130305T060331 comment=NONE
channel ORA_DISK_3: backup set complete, elapsed time: 00:00:05
channel ORA_DISK_3: starting incremental level 1 datafile backup set
channel ORA_DISK_3: specifying datafile(s) in backup set
input datafile file number=00001 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_SYSTEM_8LYWOT2Q_.DBF
backing up blocks 38401 through 76800
channel ORA_DISK_3: starting piece 2 at 05-MAR-13
channel ORA_DISK_1: finished piece 3 at 05-MAR-13
piece handle=C:\APP\ORACLE\FAST_RECOVERY_AREA\ORACLE_CDB\BACKUPSET\2013_03_05\O1_MF_NNND1_TAG20130305T060331_8MCYT54L_.BKP tag=TAG20130305T060331 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:06
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=C:\APP\ORACLE\ORADATA\ORACLE_CDB\DATAFILE\O1_MF_SYSTEM_8LYWOT2Q_.DBF
backing up blocks 76801 through 98560
channel ORA_DISK_1: starting piece 3 at 05-MAR-13
channel ORA_DISK_2: finished piece 3 at 05-MAR-13
piece handle=C:\APP\ORACLE\FAST_RECOVERY_AREA\ORACLE_CDB\BACKUPSET\2013_03_05\O1_MF_NNND1_TAG20130305T060331_8MCYT2XM_.BKP tag=TAG20130305T060331 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:00:13
............
Active 复制选项在 RMAN 11g 被应用了,这个功能使用一个“推”的进程通过网络从目标(源)向辅助(目的地)发送整个数据文件的拷贝。目标通道做了推动数据文件从目标数据库跨越网络到达辅助实例的工作。
在 12c,RMAN 默认使用一个“拉”的(或者 restore)进程为 active 复制使用备份集.不同于数据文件的镜像拷贝,rman 以备份集的方式发送数据文件数据到辅助实例,从这个实例还原数据文件.之前存在的备份不能使用这种操作,反之,rman 将在源端创建一个新的备份集并且直接传输(通过 Sql*net)到辅助实例.通过使用备份集,使得压缩,截面大小和加密变成可用的选项并且可以被添加到 duplicate 命令。
在 12c 为了并行化的 active duplicate 的执行,必须分配多个辅助通道而不是使用像 11g 那样的目标通道。
这个新的功能通过分出 active duplication 过程中数据传输操作到辅助服务器,减少了对源数据库的冲击。通过使用压缩或者多截面备份的方式展开还原工作负载可以缩短复制大文件的时间。
在 12c,一旦复制命令完成时,你现在可以指定不打开辅助数据库。通过这个选项 rman 将完成它的任务保留克隆数据库处于 MOUNT 状态,随时准备打开。在之前的版本,辅助数据库会在最后阶段被 RMAN 自动打开。除了其他的潜在用处外 NOOPEN 选项允许你做:
- 配置快速增量备份或者删除数据库设置。
- 修改块改变跟踪文件名称或者地址。
- 通过打开数据库到 UPGRADE 模式升级数据库,运行适当的升级脚本。
在之前的 RMAN 版本,为了实现通过第三方快照创建一个备份,你不得不将数据库设置为 backup 模式(begin backup)来创建一个存储快照。在 12c,这个要求已经被取消,只要下面所有的条件都被满足:
-
- 如果数据库 down 掉的,如果做快照需要数据文件的状态一致;
- 每个数据文件的写顺序都保留在一个快照文件中;
- 快照文件里存储了快照结束的时间点;
在 12c,你可以使用新的关键字 SNAPSHOT TIME 和 RECOVER 命令去恢复一个没有数据文件在备份模式的快照。例如,你现在可以:
-
- 使用特定的快照恢复数据库:
SNAPSHOT TIME ‘02/26/2013 10:00:00’;
-
- 使用归档日志实施一个特定的恢复:
SNAPSHOT TIME ‘02/26/2013 10:00:00’;
RMAN 允许你跨平台传输数据库,数据文件,表空间。这包括跨平台传输不同字节码的表空间。在 12c 之前,所有的跨平台数据传输需要使用镜像拷贝。在 12c 你现在可以使用备份集做跨平台传输数据。同时,Oracle 12c 也运行使用不一致的备份,即备份是一个表空间在 READ WRITE 模式下创建的。之前的版本要求备份在 READ ONLY 模式下。
由于使用了备份集,你可以选择压缩和多截面备份的选项,这可以减少整个的传输时间。当选择一个数据库传输策略时,你需要考虑平台的字节码格式和数据库的打开模式。例如:
-
- 数据库级别的传输需要相同的字节码(在源端和目标端)和源端的只读(READ ONLY)模式(这可能不会令人满意)。
- 表空间和备份集可以跨平台传输无论字节码相同或者不同,源端数据库也可以保持在线读写模式。在这种情况下大部分的工作是在源端数据库在读写模式下完成的。一个最终的步骤(一个小的增量备份)是在数据库只读的模式下完成的。这是必须的,因此数据库可以被打开到一致性的状态。
在 12c,rman 提供下面的选项结合备份命令:
-
- FOR TRANSPORT: 这个选项创建一个可以被传输到任何目标端的备份集。如果目标端使用的字节码不同于源端,字节码的转换是在目标端数据库实施的。
- TO PLATFORM:这个选项导致大小码转换在源端执行,并且只能用于那个支持的平台。
- DATAPUMP:这指定当实施跨平台转换时一个数据泵导出文件会被创建。
在 RMAN 12c,你现在可以随时恢复一个特定的表或者表分区而不影响这个数据库或者表空间的其他对象。这包括恢复一个清空(truncated)或者删除掉的表。RMAN 12c 将对需要的文件在一个单独的磁盘路径创建一个辅助实例。然后它将创建一个数据泵导出文件包含需要恢复的对象。可以使用不导出表的选项(NOTABLEIMPORT)或者可选择的重命名需要恢复的表或者表分区使用 REMAP TABLE 或 REMAP TABLESPACE 字句.
可用的选项包括:
-
- 小批量的表
- 表不在自包含的表空间
- Purged 的表
- 表数据已经越过了可用的 undo
- 表已经有 DDL 结构改变
RMAN RECOVER TABLE Feature New to Oracle Database 12c (Note 1521524.1)
在 RMAN12c,你可以通过网络还原和恢复文件。由于有备份集的存在,我们可以使用多份的备份来进行备份,加密和压缩,通过并行的方式提升备份和还原的性能。
这个选项对包含 standby 数据库的场景非常有用。你可以:
-
- 还原或者恢复丢失的数据文件时,可以通过网络连接到一个数据库(standby/primary)这个数据库包含这个可用的文件。
- 拿掉主库,通过增量备份恢复 standby 数据库来前滚 standby。
在 12c Oracle,UNIFIED_AUDIT_TRAIL 数据字典视图有一系列的字段(以 RMAN_ 前缀),这些字段自动记录 RMAN 相关的等待事件。然而为了查询视图 UNIFIED_AUDIT_TRAIL 查看这些等待事件你必须有 AUDIT_ADMIN 和 AUDIT_VIEWER 角色。
参考
NOTE:1521524.1 - RMAN RECOVER TABLE Feature New to Oracle Database 12cNOTE:1521075.1 - RMAN Pluggable Database Point in Time Recovery
NOTE:1521005.1 - RMAN Pluggable Database Backup and Recovery in a Multitenant Environment
NOTE:1115423.1 - Rman Enhancements In Oracle 11g.