/ 中存储网

Oracle 数据库故障的几种类型及相应处理方法

2016-03-18 10:27:56 来源:中存储网

Oracle 数据库故障的几种类型:

对于用户来说,Oracle数据库中保存的数据通常至关重要,所以要采取各种手段来防止各种可能的数据损失和数据故障,

而Oracle DBA主要任务就是:

  • 维持数据库的高可靠性运行,
  • 尽量提高数据库的连续可用时间,
  • 降低数据库的平均恢复时间,
  • 最小化故障时的数据损失及业务影响。

在Oracle数据库环境中,常见故障类型:

语句失败,用户进程失败,用户错误,实例失败,介质故障,网络故障,

其中最为严重的故障主要是用户错误和介质故障,

为了防止种种故障可能造成的数据损失,oracle提供了不同手段来进行数据备份,通过制定完善的备份策略,可以最小化数据损失。

部分工作内容

数据库管理员 (DBA) 的目标是确保数据库处于打开状态,从而当用户需要时可提供使用。

要实现这个目标,DBA 需要(通常与系统管理员合作):

  • 1.预计导致出现故障的常见原因并努力避免出现这些原因
  • 2.努力提高平均故障间隔时间 (MTBF),确保硬件尽量可靠,也就是通过冗余方式保护关键组件,定期执行操作系统维护。
  • 3.Oracle 数据库提供了用于提高 MTBF 的高级配置选项,其中包括:Real Application Clusters Streams
  • 4.减少平均恢复时间 (MTTR),提前确定恢复过程方案并配置备份,以便在需要时随时可用
  • 5.最大程度地减少丢失数据。

DBA 可按照接受的最佳方案配置数据库,以便永远不丢失提交的事务处理。用于帮助保证实现此目标的具体项包括:

  • 归档日志文件
  • 备用数据库和 Oracle Data Guard

故障类别 -----可分为以下几类:

  • 语句错误:单个数据库操作(选择、插入、更新或删除)失败。
  • 用户进程错误:单个数据库会话失败。
  • 网络故障:与数据库的连接断开。
  • 用户错误:用户成功完成了操作,但是操作不正确(删除了表,或输入了错误 数据)。
  • 实例错误:数据库实例意外关闭。
  • 介质故障:丢失了一个或多个数据库文件(也就是说,文件已删除或磁盘出现了 故障)。

1. 语句错误: ----- 可能需要DBA干预,才能更改用户权限

尝试在表中输入无效的数据 --------- 通过用户验证更正数据

尝试在权限不足时执行操作 --------- 提供适当的对象或系统权限

尝试分配未成功分配的空间 --------- 启用可恢复的空间分配 、 增加所有者限额quota 、 添加表空间的空间

应用程序中的逻辑错误 ---------- 与开发人员合作更正程序错误

2. 用户进程错误: ---通常不需要DBA操作,观察变化趋势

与实例异常断开的用户进程中可能包含正在进行的、需要回退的未提交任务。

为了确保服务器进程会话仍保持连接,进程监视程序(PMON)后台进程会查询服务器进程。

如果PMON发现某个服务器进程的用户不再处于连接状态,PMON会从任何实时事务处理中进行恢复;

还会回退未提交的更改并解除失败会话持有的任何锁定。

DBA工作:

从用户进程失败中进行恢复时不需要DBA的干预,但是管理员必须观察变化趋势。

有一个或两个用户异常断开时不必担心。用户进程失败比例不高时也属正常。

一致性故障和系统性故障表示还存在其他的问题。

异常断开连接比例较高时可能表示用户需要了解如何注销程序,此外,还可能存在网络和应用程序问题。

用户执行了异常断开连接操作

用户会话已异常终止

用户遇到了终止会话的程序错误

3. 网络故障

最佳解决方法: 为网络连接提供冗余路径。通过备份监听程序、网络连接和网络接口卡可降低出现网络故障时影响系统可用性的可能性。

监听程序失败 ------ 配置备份监听程序和连接时故障转移

网络接口卡(NIC)故障 ------ 配置多个网卡

网络连接失败 ----- 配置备份网络连接

4. 用户错误

用户可能会无意删除或修改数据。如果发生这种情况,DBA 可能需要帮助用户从错误中恢复。

如果用户尚未提交或退出程序,则只可以回退操作。

如果用户提交了更改,则可以使用闪回查询来确定以前的值是什么(然后,为还原原始信息而更新数据):


SQL> SELECT salary FROM employees WHERE employee_id=100;
SALARY
------
25
SQL> SELECT salary FROM employees
2 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL’10’ minute)
3 WHERE employee_id=100;
SALARY
------
24000

在因超出了还原保留期而无法使用闪回查询的情况下,DBA 仍可通过使用 Oracle LogMiner 来恢复原始信息。

用户无意中删除或修改了数据 ---------- 回退或使用闪回查询进行恢复

用户删除了表 --------- 从回收站恢复表

5. 实例错误 startup 启动通过alert日志调查出错原因。

如果在同步所有数据库文件之前关闭了数据库实例,就会发生实例错误。出现软硬件故障,或者使用SHUTDOWN ABORT 和 STARTUP FORCE紧急关闭命令时,也会发生实例错误。

管理员在实例错误恢复中参与的工作,通常仅限于重新启动实例和努力避免将来发生这种情况。

断电 使用“startup”命令重新启动实例。从实例错误中

硬件故障恢复时是自动执行的,其中包括前滚重做日志中的

有一个后台进程出现错误的更改和回退任何未提交的事务处理。

紧急关闭命令

6. 介质故障

oracle corporation 将介质故障定义为导致一个或多个数据库文件(数据文件、控制文件或重做日志文件)丢失或损坏的任何故障。

要从介质故障中恢复,需要还原并恢复缺失的文件。

  • · 磁盘驱动器故障 1. 从备份中还原受影响的文件。
  • · 磁盘控制器故障 2. 如果需要,通知数据库关于新文件的位置。
  • · 删除或损坏了数据库文件3. 如果需要,通知应用重做信息来恢复文件。