RMAN 系列(一)---- RMAN 体系结构概述(一)

2014-11-24 18:25:56 · 作者: · 浏览: 0

一. 服务器管理恢复



二. RMAN 使用程序


RMAN SMR的具体实现,它是Oracle 提供的,RMAN 是一个独立的应用程序,它负责建立到Oracle 数据库的客户端连接,以访问数据库内部的备份和恢复数据包。RMAN 的核心命令是解释程序,命令解释程序接受所输入的命令,并将这些命令转换为在数据库上执行的远程调用(Remote Procedure callRPC.


要强调的事,RMAN 只是做少量的工作。虽然时间的协调非常重要,但是备份和恢复一个数据库的具体工作实际上是由目标数据库上的进程完成的,目标数据库(target database)指的是要备份的数据库。Oracle 数据库的内部数据包可以将RMAN 中的PL/SQL 块变成系统调用,这些调用即可以写入数据库服务器的磁盘系统,也可以读取数据库服务器的磁盘子系统。


RMAN 实用程序是Database Utilities的一部分Database Utilities是一组命令行形式的使用程序,包括Importexportsql*loaderdbverify。 典型的安装Oracle 时会自动安装RMANRMAN 分企业版和标准版2种,如果只能使用标准版的RMAN,那么RMAN 就只能分配一个通道。


RMAN 实用由两部分组成,可执行文件和recover.bsq 文件Recover.bsq 文件实质上是库文件可执行文件从recover.bsq 文件中析取代码来创建在目标数据库上执行的PL/SQL 调用Recover.bsq 文件是整个操作的中枢。这个文件始终保持链接,并在逻辑上构成RMAN 客户端使用程序。要注意的是: recover.bsq 文件和 可执行文件的版本必须是相同,否则不能正常工作。


RMAN 实用程序有一种独特的,有序的,可预测的用法:解释在目标数据库上远程执行的PL/SQL 调用中的命令。 RMAN 实用程序完成了我们需要做的所有备份,还原,恢复和处理备份工作。由可执行解释程序负责解释这些程序命令,并基于用户的请求收集信息。 如果要求I/O 操作(即一条备份命令或一条还原命令),RMAN 会在返回信息时准备另一个过程块,并将这个过程块传递回目标数据库。这些过程负责执行OS的系统调用以进行指定的读或写操作。




RMAN 与数据库权限


RMAN 需要访问目标数据库上sys模式中存在的各种数据包,还需要具有启动和关闭目标数据库的权限。 因此RMAN 通常以sysdba 用户身份连接到目标数据库。 如果以不具有sysdba 权限的用户连接到目标数据库,RMAN 会报ORA-01031: insufficient privileges 错误。


在一般情况下,大多数Unix 系统中都有一个Oracle 用户,它是dba组的一个成员。 这是最初安装Oracle 软件的用户,如果以Oracle 用户登录,在RMAN 中以什么身份连接就变的不重要,它将总是作为sysdba 互用来连接目标数据库,并且能够访问sys 模式,同时也具有启动和关闭数据库的能力。 在windows 平台上,Oracle 会创建一个ORA_DBA本地组,并将安装Oracle 软件的用户添加到这个本地组中。


如果作为dba组成员之外的用户登录并需要使用RMAN,就必须创建和使用一个口令文件来连接来连接到目标数据库。如果要使用一个客户系统通过网络来连接RMAN,也需要创建和使用一个口令文件。



三. RMAN 备份的网络拓扑结构


RMAN 是一个客户端应用程序,它通过Oracle net 连接来与目标数据库连接。 如果目标数据库位于ORACLE_HOME 主目录中,运行同样位于这个主目录中的RMAN 可执行文件,ORACLE net连接就会是一个本地连接。 只要在Oracle 环境中设置了合适的ORACLE_SID 变量,就不需要为这个连接提供一个Oracle net 别名。 否则,我们必须配置tnsnames.ora 文件,在文件中指定目标数据库,并且在将要运行RMAN的位置上完成这个操作。


一般倾向与在目标数据库的ORACLE_HOME 中运行rman, 这是避免在混合环境中出现兼容性问题的最简单和最直观的方法。 我们需要在这种混合环境中负责跨越多个Oracle 数据库和版本的备份。也可以使用OEM 来处理。




3.1 远程运行RMAN


如果你负责管理许多数据库。最好在单个客户端系统上将应用程序合并,这样就可以在这个客户端系统上更好的管理tnsnames.ora 文件内容。如果在RMAN 配置中使用了恢复目录(recovery catalog),由于每次操作RMAN时都会生成一个以上的Oracle net 连接,所以这样的客户端/ 服务端模型不会让人混淆。另一方面,运行与目标数据库不同系统(或者是不同ORACLE_HOME主目录)上的RMAN时,我们需要建立一个口令文件,这样在每个目标数据库上都需要更过的配置和管理。


恢复目录: 用于存储RMAN 备份的历史记录,它含有有关备份发生时间,备份内容和备份大小的元数据。 历史记录中还含有恢复备份所需的关键信息。 元数据是从默认位置(目标数据库控制文件)析取的,并保留在用户模式的数据库表内。



如果要建立一个RMAN 和 目标数据库之间的远程连接,需要创建一个使用专用服务器进程连接到目标数据库的tnsnames.ora 条目。 因为RMAN 不能使用共享服务器(通常称多线程服务器或者MTS)来建立数据库连接。



MYICD =


(DESCRIPTION =


(ADDRESS = (PROTOCOL = TCP)(HOST = DavidDai)(PORT = 1521))


(CONNECT_DATA =


(SERVER = DEDICATED)


(SERVICE_NAME = myicd)


)


)



3.2 在目标数据库的ORACLE_HOME 中运行本地RMAN


从每个目标数据库中本地运行RMAN 实际上是管理具有数百或者上千 数据库目标的大型企业的唯一方法。 因为RMAN一直具有兼容性问题,将rman.exe 与目标数据库紧密绑定可在长期运行中节省时间。虽然这种方式部署RMAN 备份存在一些缺陷,但这也是最佳方式.


本地运行RMAN意味着只需要本地连接数据库,而不需要建立口令文件和配置tnsnames.ora 文件。但这种简易性也正是它的缺陷。因为一旦引入恢复目录或者执行数据库复制操作,就会雨打我们之前的问题。




四. 数据库控制文件


控制文件平常的作用是负责数据库的物理结构,控制文件控制数据库查找物理文件的位置,并控制每个文件当前包含(或应当包含)的头信息,其内容包括数据文件信息,重做日志信息和归档文件信息。 控制文件还含有与数据库关联的关键文件的每一个文件头的快照(snapshot)。


由于控制文件存储的是数据库文件信息,所以RMAN 会利用控制文件获取备份所需的信息,具体的操作方式是: RMAN 使用控制文件来编译文件列表,得到检查点信息,并确定可恢复性。通过直接访问控制文件,RMAN可以编译文件列表而不需要用户创建文件列表,这样避免了备份脚本时的一个非常繁琐的步骤,并且在添加一个新文