Oracle的失败类型小结

1、语句失败:
指处理sql语句出现的逻辑失败。当出现语句失败时,Oracle Server会自动回退失败的sql语句,并且会给用户返回错误代码和错误信息。通过查看错误代码和错误信息,应用开发人员和DBA可以确定错误原因,并解决这些错误。
1.1、应用逻辑错误:主要是指sql语句的编写错误。
1.2、输入错误数据:指用户试图输入违反约束规则的错误数据。
1.3、执行未授权操作:指数据库用户试图执行并未授权的数据库操作。
1.4、超出空间配额:指用户在特定表空间上所需实际空间超过了该用户在该表空间上可占用的最大空间。
1.5、表空间无足够空间:指当sql操作需要从表空间分配空间时,表空间没有足够剩余空间所导致的错误。

[@more@]

2、用户错误:
指用户的误操作,例如误删除表、误截断表、错误的DML操作等,下面是常见的用户错误及其解决方法。
2.1、DROP TABLE误操作
当执行了DROP TABLE操作之后,会删除表结构及其数据。解决方法:
<1>.使用IMPOPT工具导入表结构及其数据,但这种方法可能会丢失部分数据(灾难发生到最近备份直接发生改变的数据)。
<2>.使用基于时间点的数据库不完全恢复(DBPITR),这种方法可以确保不会丢失发生错误表的任何数据,但可能丢失其他表空间事务操作的数据。注意,DBPITR只适用于ARCHIVELOG模式的数据库。
<3>.使用基于时间点的表空间不完全恢复(TSPITR),这种方法不仅可以确保不会丢失发生错误表的任何时间,还可以确保不会丢失其他表空间时间操作的数据。注意,DBPITR只适用于ARCHIVELOG模式的数据库。
<4>.在oracle 10g中可以通过使用FLASHBACK TABLE语句不仅可以快速恢复表,而且也不会影响任何其他表空间和其他表。在oracle database 10g中,当执行DROP TABLE操作时,表结构和数据不会被立即清除,而是放在数据库回收站(Recyclebin)中。如果表段所在表空间足够大,那么其内容可能永远不会被清除,此时通过FLASHBACK TABLE可以快速恢复表(eg:FLASHBACK TABLE sales TO BEFOR DROP;)。
2.2、DML误操作
<1>.如果DML误操作之后,事务没有被提交,那么执行rollback语句可以取消误操作。
<2>.如果在DML误操作之后执行了commit从,那么必须做些处理。【1】在10g以前,dba可以使用LogMiner工具分析特定时间段的DML操作,并生成dml源操作、反操作(insert反操作delete,delete反操作insert,update反操作update)以及相关时间,在确定了错误的dml操作之后,只要执行相应的反操作就可以了;【2】10g中,可以使用flashback table语句将表时间恢复到过去的时间点或者过去的scn值,注意,如果要使用该特征,那么必须激活表的行移动特征,另外fashback table所以恢复到的最早时间受限于初始化参数db_flashback_retention_target。
2.3、TRUNCATE TABLE误操作
解决方法类似drop table,如下:
<1>.使用import工具导入表数据,但这种方法可能会丢失部分数据,因为表的结构已经存在,所以在使用imp导入表时应该指定ignore=y选项。
<2>.使用基于时间点的数据库不完全恢复(DBPITR),这种方法可以确保不会丢失发生错误表的任何数据,但可能丢失其他表空间事务操作的数据。注意,DBPITR只适用于ARCHIVELOG模式的数据库。
<3>.使用基于时间点的表空间不完全恢复(TSPITR),这种方法不仅可以确保不会丢失发生错误表的任何时间,还可以确保不会丢失其他表空间时间操作的数据。注意,DBPITR只适用于ARCHIVELOG模式的数据库。

3、用户进程失败
指用户进程在运行过程中的异常情况,当出现此类失败时,dba不需要进行任何干预,后台进程pmon可以自动检测被意外终止的用户进程,当检测到异常终止的用户进程之后,pmon会自动回退用户进程未完成的事务,并且释放用户进程在服务器端所占用的资源和锁。


4、网络失败
当出现此类失败时,不需要dba进行任何干预,oracle server可以自动处理。eg:
<1>.对于C/S体系来说,后台进程pmon可以自动检测异常断开的用户进程,任何自动回退用户进程未完成的事务,并释放其所占用的服务器资源和锁。
<2>.对于两解答提交的分布式事务来说,在解决了网络失败之后,后台进程reco会自动解决分布式数据库系统所有节点上的分布式事务。

5、例程失败 出现情况:
<1>.电源断电导致oracle server不可用。
<2>.因为硬件失败导致oracle server不可用,eg:cpu失败、内存损坏。
<3>.某个必须的后台进程(DBWR LGWR PMON SMON CKPT)出现失败。
例程失败类似于执行SHUTDOWN ABORT命令关闭数据库,在解决了硬件问题和电源断电等问题之后,dba只需要执行startup命令启动例程和数据库就可以了,而不需要执行任何恢复命令,在装载了数据库之后,后台进程smon会自动执行例程恢复,最终时数据库的所有文件(数据文件、控制文件、重做日志)完全同步。

6、介质恢复 指数据库文件出现物理损坏导致服务器进程、后台进程不能读写数据库操作所必需的物理文件。包括以下几种情况:
<1>.磁盘驱动器的磁头出现失败,导致无法读写数据库文件。
<2>.要读写的文件出现了问题(eg:某些块所在扇区出现了损坏)。
<3>.数据库文件被意外删除。
解决方法,由dba利用备份与恢复进行介质恢复。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8633028/viewspace-905559/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8633028/viewspace-905559/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值