Oracle数据备份与恢复开发思路图

Posted on 2020-03-31 10:15  独孤九剑第八剑  阅读(992)  评论(0)    收藏  举报

1.备份草图

 

 

针对上面的草图做以下说明:
Oracle备份SBT库(libobk.so/libobk.a/orasbt.dll)由oracle的rman进程加载调用。
Oracle备份代理插件(OraRman-agent.so/OraRman-agent.dll)由avatarclient进程加载。
Oracle备份任务是通过配置在服务端(Master)下的备份策略自动或手动触发的。备份任务触发后,客户端(Client)通知Oracle备份代理插件(Oracle Backup Agent)调用Rman脚本启动RMAN进程,RMAN进程加载Oracle备份SBT库(Oracle Backup SBT),向oracle数据库读取数据。
Oracle备份SBT库(Oracle Backup SBT)库读取的备份流如何传送到设备呢?从上图可看到数据流向是从Oracle备份SBT库 -----》Oracle备份代理插件 ------》客户端 -------》设备端 ------》存储,这条通道关键点在Oracle备份SBT库 -----》Oracle备份代理

oracle备份插件备份时常见问题:
oracle rman程序加载不了oracle 备份SBT库(libobk.so/libobk.a/orasbt.dll).常见的提示如下:

 

如上图所示:出现Failed to load Media Managerment Library错误时就是RMAN的进程未成功加载Oracle 备份SBT库(libobk.so/libobk.a/orasbt.dll)。出现这种情况的原因分析和排查方法如下:
1). 在WINDOW平台是orasbt.dll, 在安装时,WINDOW平台下是安装包直接拷贝orasbt.dll到C:/WINDOWS下.
在WINDOW平台下排查上面这个加载不了库的问题的步骤如下:
---》在环境变量的所有路径下查看是否除了我们软件安装的orasbt.dll外还有其它软件安装留下的orasbt.dll,如是有重命名掉,以免造成混乱。导致上面的问题出现。
---》查看要备的ORACLE数据库的版本是32位还是64位。由于我们的安装包是根据操作系统的版本还拷贝对应版本的orasbt.dll到C:/WINDOWS下的。在用户环境,有可能在64位的WINDOW系统下安装了32位的ORACLE数据库。导致上面的问题出现,解决办法是到安装包下拷贝和ORACLE数据库版本一致的orasbt.dll到C:/WINDOWS下。

2). 在LINUX平台是libobk.so. 在LINUX平台下libobk.so在安装包安装完成不会拷贝到oracle的环境变量里,而是通过备份时生成的备份脚本里,判断$ORACLE_LIB/libobk.so是否存在,如果存在,将跳过,如果不存在将会在$ORACLE_LIB/下做个软链接libobk.so,链接到/usr/local/avatar/client_server/agents/libobk.so。
在LINUX平台下排查上面这个加载不了库的问题的步骤如下:
---》在Oracle账户的环境变量下查看是否除了我们软件的libobk.so外还有其它软件安装时留下的libobk.so,如果有重命名掉,以免造成混乱。导致上面的问题出现
---》查看要备的ORACLE数据库的版本是32位还是64位。检查我们软链接过去的libobk.so库的版本是否和ORACLE数据库一致。
---》查看libobk.so依赖的库是否有缺失。
---》查看libobk.so的用户权限,oracle rman进程是否有权限访问和调用。

3). 在AIX平台是libobk.a.在AIX平台下libobk.a在安装包安装完成不会拷贝到oracle的环境变量里,而是通过备份时生成的备份脚本里,判断$ORACLE_LIB/libobk.a是否存在,如果存在,将跳过,如果不存在将会在$ORACLE_LIB/下做个软链接libobk.a,链接到/usr/local/avatar/client_server/agents/libobk.a。
在AIX平台下排查上面这个加载不了库的问题的步骤如下:
---》在Oracle账户的环境变量下查看是否除了我们软件的libobk.a外还有其它软件安装时留下的libobk.a,如果有重命名掉,以免造成混乱。导致上面的问题出现
---》查看要备的ORACLE数据库的版本是32位还是64位。检查我们软链接过去的libobk.a库的版本是否和ORACLE数据库一致。
---》查看libobk.a依赖的库是否有缺失。
---》查看libobk.a的用户权限,oracle rman进程是否有权限访问和调用。
oracle备份到一半时出现没有开归档,如下图所示错误:

 

  解决办法,将oracle的归档模式开启即可。

2.恢复草图

 

 

针对上面的草图做以下说明:
恢复时任务触发是从oracle的RMAN进程中输入恢复脚本开始,按照标准恢复步骤进行恢复。输入恢复脚本后,RMAN会根据脚本寻找需要恢复的内容,将需恢复内容通过Oracle Backup SBT库与Master服务端建立SOCKET通道,发送给Master服务端,Master服务端从DB中查找恢复的内容和块信息,建立恢复任务。通知设备端(Device)准备向磁盘或磁带中读取要恢复的数据并传送给客户端。同时通知客户端(Client)准备接受恢复数据。客户端(Client)将接受的数据,传送给Oracle备份代理(Oracle Backup Agent),Oracle备份代理再通过与RMAN进程加载的Oracle Backup SBT库建立的命名管道通道将数据传输给Oracle数据库,完成数据恢复。

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3