一、故障类别
1、语句故障
单个数据库操作失败(select、insert、update或delete),如:
- 在表中输入无效的数据,解决方法:可与用户合作来验证并更正数据;
- 执行操作,但权限不足,解决方法:提供适当的对象或系统权限;
- 分配空间失败,解决方法:启用可恢复的空间分配,增加所有者限额,增加表空间的空间;
- 应用程序存在逻辑错误,解决方法:与开发人员合作来更正程序错误。
2、用户进程故障
- 用户执行了异常断开连接操作;
- 用户会话已异常终止;
- 用户遇到了程序错误并终止了会话。
解决方法:通常不需要DBA执行任何操作就可解决用户进程故障。实例的后台进程会回退未提交的更改并解除锁定。
注:
进程监视程序(PMON) :PMON定期轮询服务器进程,如果发现某个服务器进程的用户不再处于连接状态,会进行恢复,并回退未提交的更改并解除失败会话持有的任何锁定。
3、网络故障
网络故障最好为网络连接提供冗余路径,通过备份监听程序、网络连接和网络接口等方法降低网络故障,如:
- 监听程序失败,解决方法:配置备份监听程序和连接时故障转移;
- 网络接口卡故障,解决方法:配置多个网卡;
- 网络连接失败,解决方法:配置备份网络连接。
4、用户错误
用户可能会无意中删除或修改数据,这时,DBA需要帮助用户从错误中进行恢复。
- 用户尚未提交,则进行回退操作;
- 用户提交了更改,可以使用闪回查询来确定以前的值是什么,再进行相应的恢复。
如因超出了还原保留期而无法使用闪回的,可通过使用LogMiner 来恢复原始信息; - 用户删除表后可从回收站中恢复表,如果清空了回收站,或者用户使用PURGE 选项删除了表,仍可通过使用时间点恢复(PITR) 来恢复删除的表。
5、实例故障 (smon完成)
如果在同步所有数据库文件之前关闭了数据库实例,就会发生实例错误,如:
- 软硬件故障,导致实例错误,只要重新启动实例即可;
- 使用SHUTDOWN ABORT 和STARTUP FORCE 紧急关闭命令,导致实例错误,只要重新启动实例即可;
- 断电,导致实例错误,只要重新启动实例即可;
- 后台进程出现故障,导致实例错误,只要重新启动实例即可。
6、介质故障
导致一个或多个数据库文件(数据文件、控制文件或重做日志文件)丢失或损坏的任何故障。要从介质故障进行恢复,需要还原并恢复缺失的文件。 可能导致介质故障的原因:
- 磁盘驱动器故障
- 磁盘控制器故障
- 删除或损坏了数据库文件
解决办法:
- 从备份中还原受影响的文件
- 通知数据库关于新文件的位置
- 通过应用重做信息来恢复文件
二、日常运维规划策略
1、多路复用控制文件
与数据库关联的所有控制文件是完全相同的。丢失一个控制文件后进行恢复并不难。但是丢失了所有控制文件后进行恢复则很困难。为了避免丢失所有控制文件,至少要有2至3个副本,建议使用RMAN定期自动备份。
2、多路复用重做日志组
实例故障或介质故障进行恢复,可使用重做日志信息将数据文件前滚到最后一个提交的事务处理。如果重做日志组依赖于一个重做日志文件,那么这个文件丢失了很可能意味着数据也丢失了。
重做日志组由一个或多个重做日志文件组成,组中的每个日志文件都是其它日志文件的副本。Oracle 建议每个重做日志组至少包含两个文件,两个文件要分布在不同的磁盘或控制器上。
所以,当单个设备出现故障时就不会损坏整个日志组。丢失了整个日志组可以算是一种最严重的介质故障,因为这会导致丢失数据。
3、保留重做日志的归档副本
如果某个文件丢失后通过备份已还原,实例就必须应用重做信息,以便将该文件返回到控制文件中包含的最新SCN。所以,为保证数据恢复,可将数据库置于ARCHIVELOG 模式。
4、配置快速恢复区
快速恢复区是为保存归档日志、备份、闪回日志、镜像控制文件和镜像重做日志而在磁盘上专门留出的空间。
快速恢复区在磁盘上的保留位置应不同于数据库文件的工作区所在的位置。否则,磁盘将成为数据库的单点故障。
理想情况下,快速恢复区应足够大,可存放数据文件和控制文件副本,以及基于保留策略从保留的备份恢复数据库所需的闪回日志、联机重做日志和归档日志。
5、计划常规备份
大多数介质故障需要从备份还原丢失或损坏的文件。