Oracle数据库备份和恢复配置详解

可能的失败及其解决方法

失败类型

我们坑你遇到的失败或错误分为两大类:物理和逻辑。物理错误一般是硬件错误或使用数据库的应用程序中的软件错误,而逻辑错误一般在终端用户级别(数据库用户和管理员)。

按从轻到重、易恢复到难恢复排列:

语句失败:用户的SELECT或DML语句因权限、语法或资源限制而失败。

用户错误:用户误删了一个表或表中的行。

用户进程失败:与数据库的连接因为客户端断开或未预料的停机而失败。

网络失败:客户机和服务器(数据库)之间的网络连接因为网络硬件或协议错误而失败。

实例失败:数据库实例因为bug、操作系统错误、内存崩溃甚或服务器的功率损失而崩溃。

媒介失败:磁盘驱动物理错误或控制器硬件失败。

Oracle备份和恢复方法

恢复管理器(Recovery Manager,RMAN)是用于在表级别(12c新增)、数据文件、表空间和数据库级别上备份、还原和恢复数据库对象的主要工具。除了备份和恢复之外,RMAN还有许多用途,包括把数据库克隆或复制到另一个位置。RMAN的一个主要组件是备份和恢复对象的一个特定位置,称为快速恢复区(Fast Recovery Area,FRA)。这个区在理想情况下是ASM中的一个磁盘组,但也可以位于操作系统的文件系统上。无论位置在哪里,它都是所有备份和恢复对象的集中存储位置。FRA根据大小和恢复目标来管理,这是指根据恢复窗口或需要保留的备份数。使用FRA是可选的,但这是最佳实践方式。

Oracle安全备份(Oracle Secure Backup,OSB)与RMAN一起提取RMAN备份,把它们复制到磁带设备或运存储中,以防止数据中心的灾难性故障而导致的数据丢失。OSB还提供了OS级别上的RMAN扩展,来备份Linux服务器和任何附加的存储,例如网络附加存储(NAS)设备。

Oracle Data Guard是Oracle的一个可用性(HA)很高的解决方案,用于确保接近实时(因为主数据库失败)的可用性,或防止数据库崩溃。从主数据库的副本中实例化一个独立数据库(可以创建好几个独立数据库),从数据库中接收重做数据,来更新其数据文件。因此,独立数据库就与主数据库保持同步。独立数据库还可以临时用作数据库的只读副本,以用于生成报表,因此释放主数据库上的资源,在联机事务处理(OLTP)环境中有更短的响应时间。另一种独立数据库称为逻辑独立数据库。它不是持续不断地把重做数据应用于主数据库的物理副本,而是把重做操作转换为等价的DML SQL。因此,独立数据库在逻辑上等价于独立数据库,但几乎肯定没有与主数据库相同的物理结构。逻辑独立数据库并不是容错环境的一部分,而是一个优化为数据仓储的独立数据库,其中包含了与主数据库相同的数据。

实例恢复和数据库不可能崩溃

实例失败的原因有电力故障、重启服务器、发出SHUTDOWN ABORT命令,或导致实例后台进程终止、破坏System Global Area(SGA)的任何事情——所有这些都没有尝试把缓存中变更的缓存数据刷新到数据文件中,或者混滚任何正在进行的事务。

大体上,实例恢复只不过是使用联机日志文件的内容,将数据库缓冲区缓存重新构建至崩溃之前的状态。这个重构过程将重演在崩溃时未被写至磁盘的数据块的相关重做日志中提取出的所有变更。完成上述操作后,就能够打开数据库。此时,数据库仍然受到损坏,但是由于用户看到的实例已被修复,因此允许用户进行连接。实例恢复的这个阶段称为前滚,该阶段将恢复所有变更(也就是针对已提交和未提交事务的数据块变更与撤销块变更)。每条重做记录都具有重新构造一个变更所需的最少信息:数据块的地址以及新值。在前滚期间,会读取每条重做记录,相应的数据块从数据文件载入数据块缓冲区缓存,并且应用相应的变更,随后,数据块会被写回磁盘。

向前回滚结束后,崩溃看上去似乎从未发生过。不过此时数据库中还存在未提交的事务,这些事务必须被回滚,Oracle将在实例恢复的回滚阶段自动完成未提交事务的回滚操作。然而,上述操作则发生在数据库已被打开且使用之后。如果用户在连接时遇到某些需要回滚但是尚未回滚的数据,那么不存在任何问题。由于前滚阶段会填充保护未提交事务的撤销段,因此服务器能够以正常的方式回滚变更,从而实现度一致性。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a5814957e246edcd8a674635ffcaa0a8.html