Rman备份与还原
推荐的oracle官方文档http://tahiti.oracle.com
需要翻墙的技术文档资源http://www.slideshare.net
恢复管理器, Recovery Manager, 简陈 RMAN。 RMAN 实现是服务器管理恢复(Server Managed Recovery: SMR)。SMR 是一种数据库执行所需要的操作以确保自身备份成功的能力,依赖于Oracle RDBMS 内核中的内置代码可以完成这一功能。SMR 的功能主要体现在能够减少用户的操作。
rman的原理
1.1. SMR实现过程
RMAN 是SMR的具体实现,RMAN 是一个独立的应用程序,它负责建立到Oracle 数据库的客户端连接,以访问数据库内部的备份和恢复数据包。
RMAN 的核心命令是解释程序,命令解释程序接受所输入的命令,并将这些命令转换为在数据库上执行的远程调用(Remote Procedure call: RPC).
要强调的是,RMAN 只是做少量的工作。虽然时间的协调非常重要,但是备份和恢复一个数据库的具体工作实际上是由目标数据库上的进程完成的。
RMAN 是Database Utilities的一部分。Database Utilities是一组命令行形式的使用程序,包括Import,export,sql*loader和 dbverify。 典型的安装Oracle 时会自动安装RMAN。
RMAN 分企业版和标准版2种,如果只能使用标准版的RMAN,那么RMAN 就只能分配一个通道。
RMAN 由两部分组成,可执行文件和recover.bsq 文件
Recover.bsq 文件实质上是库文件,RMAN程序从recover.bsq 文件中析取代码来创建在目标数据库上执行的PL/SQL 调用。
Recover.bsq 文件是整个操作的中枢。这个文件始终保持链接,并在逻辑上构成RMAN 客户端使用程序。
思考:recover.bsq 文件在什么目录下面?
find /* -name recover.bsq
注意:
recover.bsq 文件和 RMAN程序的版本必须是相同,否则不能正常工作。
1.2. RMAN 与数据库权限
RMAN 需要访问目标数据库上sys用户存在的各种数据包,还需要具有启动和关闭目标数据库的权限。
因此RMAN 通常以sysdba用户身份连接到目标数据库。如果以不具有sysdba 权限的用户连接到目标数据库,RMAN 会报ORA-01031: insufficient privileges 错误。
验证一下:
SQL>CREATE USER RMAN IDENTIFIED BY RMAN; SQL>GRANT CONNECT,RESOURCE TO RMAN; SQL>EXIT; $rman target rman/rman RMAN> |
小注:
在一般情况下,大多数Unix系统中都有一个Oracle用户,它是dba组的一个成员。 这是最初安装Oracle软件的用户,如果以Oracle用户登录,在RMAN中以什么身份连接就变的不重要,它将总是作为sysdba互用来连接目标数据库,并且能够访问sys模式,同时也具有启动和关闭数据库的能力。 在windows平台上,Oracle会创建一个ORA_DBA本地组,并将安装Oracle软件的用户添加到这个本地组中。 如果作为dba组成员之外的用户登录并需要使用RMAN,就必须创建和使用一个口令文件来连接到目标数据库。如果要使用一个客户系统通过网络来连接RMAN,也需要创建和使用一个口令文件。 |
1.3. 运行 RMAN
RMAN是一个客户端应用程序,它通过Oracle Net Service连接来与目标数据库连接。如果目标数据库位于ORACLE_HOME主目录中,运行同样位于这个主目录中的RMAN程序,ORACLE net连接就会是一个本地连接。
只要在Oracle环境中设置了合适的ORACLE_SID 变量,就不需要为这个连接提供一个Oracle net别名。否则,我们必须配置tnsnames.ora文件,在文件中指定目标数据库,并且在将要运行RMAN的位置上完成这个操作。
1.4.1. 远程运行RMAN
如果我们负责管理很多的数据库。最好在单个客户端系统上将应用程序合并,这样就可以在这个客户端系统上更好的管理tnsnames.ora 文件内容。
1.4.2. 在目标数据库的ORACLE_HOME 中运行本地RMAN
恢复目录: 用于存储RMAN 备份的历史记录,它含有有关备份发生时间,备份内容和备份大小的元数据。 历史记录中还含有恢复备份所需的关键信息。 元数据是从默认位置(目标数据库控制文件)析取的,并保留在用户模式的数据库表内。