数据库失败的类型分为几大类。对于每种失败来说,Oracle都会提供适当的解决方法。
所有失败类型最好被记录在一个服务级别协议内,同时在程序手册中还要记录解决失败的相关步骤。
第一种失败类型:语句失败。
一条sql语句可能会由于多种原因而失败。虽然很多原因并非DBA的管理范畴。但是dba必须时刻准备修正这些错误。最初的修正应该是自动的。即在某条sql语句失败的时候,执行这条语句的服务器进程会检测问题并回滚该语句。
无效数据是语句失败的常见原因。通常是违反了格式或约束所造成的。编写规范的
用户程序可以避免格式问题.通常情况下,oracle自己会尝试通过自动的类型强制转换将数据类型转换为可以处理的类型,从而解决格式问题,不过该做法的效率非常低,而且我们也不应该对其产生依赖。虽然Oracle能够检测约束违反,凡是无法解决这些问题,从而使数据正确有效,并且必须与编程人员一起尝试自动进行这些处理。
另一种与dba物管的语句失败是应用程序中的逻辑错误。编程人员开发的代码在某些环境下数据库无法执行。例如:一个回话在同一行上执行相同的操作造成死锁问题。死锁不是数据库错误,而是由于编程人员编写的代码允许出现不可能情况所导致的错误。
空间管理问题是一个常见问题,同时又是不应当出现的问题。一个优秀的dba会主动的监视空间的使用情况。并且能够在出现问题之前执行适当的操作。通常与空间相关的语句失败的原因包括:由于表空间已满而无法扩展某个段;耗尽撤销空间;运行使用磁盘排序的查询或使用临时表时临时空间不足;某个用户达到配额;某个对象达到其最大区间限制。
如果将数据文件设置为自动扩展或启用可恢复的空间分配,那么可能减轻空间问题的
影响。
注:如果执行命令alter session enable resumable;那么指定会话就不会告知任何与空间问题相关的错误,而是将问题挂起直至其被解决,使用resumable_timeout参数可以为整个实例启用可恢复的空间分配。
sql语句还会由于缺少权限而失败。例如在分析一条sql语句时,服务器进程检查该语句的用户是否具有必须的权限.此时,dba需要授予适当的系统权限和对象权限.
(如果某个语句失败,则该语句将回滚,而其他任何DML语句保持完好,不会提交)。
所有失败类型最好被记录在一个服务级别协议内,同时在程序手册中还要记录解决失败的相关步骤。
第一种失败类型:语句失败。
一条sql语句可能会由于多种原因而失败。虽然很多原因并非DBA的管理范畴。但是dba必须时刻准备修正这些错误。最初的修正应该是自动的。即在某条sql语句失败的时候,执行这条语句的服务器进程会检测问题并回滚该语句。
无效数据是语句失败的常见原因。通常是违反了格式或约束所造成的。编写规范的
用户程序可以避免格式问题.通常情况下,oracle自己会尝试通过自动的类型强制转换将数据类型转换为可以处理的类型,从而解决格式问题,不过该做法的效率非常低,而且我们也不应该对其产生依赖。虽然Oracle能够检测约束违反,凡是无法解决这些问题,从而使数据正确有效,并且必须与编程人员一起尝试自动进行这些处理。
另一种与dba物管的语句失败是应用程序中的逻辑错误。编程人员开发的代码在某些环境下数据库无法执行。例如:一个回话在同一行上执行相同的操作造成死锁问题。死锁不是数据库错误,而是由于编程人员编写的代码允许出现不可能情况所导致的错误。
空间管理问题是一个常见问题,同时又是不应当出现的问题。一个优秀的dba会主动的监视空间的使用情况。并且能够在出现问题之前执行适当的操作。通常与空间相关的语句失败的原因包括:由于表空间已满而无法扩展某个段;耗尽撤销空间;运行使用磁盘排序的查询或使用临时表时临时空间不足;某个用户达到配额;某个对象达到其最大区间限制。
如果将数据文件设置为自动扩展或启用可恢复的空间分配,那么可能减轻空间问题的
影响。
注:如果执行命令alter session enable resumable;那么指定会话就不会告知任何与空间问题相关的错误,而是将问题挂起直至其被解决,使用resumable_timeout参数可以为整个实例启用可恢复的空间分配。
sql语句还会由于缺少权限而失败。例如在分析一条sql语句时,服务器进程检查该语句的用户是否具有必须的权限.此时,dba需要授予适当的系统权限和对象权限.
(如果某个语句失败,则该语句将回滚,而其他任何DML语句保持完好,不会提交)。