WEB开发网
开发学院数据库Oracle Oracle数据库中事物与回滚的一点研究 阅读

Oracle数据库中事物与回滚的一点研究

 2008-08-20 12:42:35 来源:WEB开发网   
核心提示: 让我们仔细检查这些列中的每一列,在会话中可能会有超过多个长期运行操作 — 特别是因为视图中包含以前的会话中所有长期运行操作的历史,Oracle数据库中事物与回滚的一点研究(2),列 OPNAME 显示该记录用于“事务回滚”,这为我们指出了正确的方向,在早

让我们仔细检查这些列中的每一列。在会话中可能会有超过多个长期运行操作 — 特别是因为视图中包含以前的会话中所有长期运行操作的历史。列 OPNAME 显示该记录用于“事务回滚”,这为我们指出了正确的方向。列 TIME_REMAINING 显示所评估的剩余时间秒数,这在前面已经描述过,而列 ELAPSED_SECONDS 显示到目前为止所消耗的时间。

那么该表如何提供对剩余时间的评估呢?可以在列 TOTALWORK 中找到线索,该列显示要完成的“工作”总量,还有 SOFAR 显示到目前为止已经完成了多少工作。工作的单位显示在列 UNITS 中。在本例中以数据块为单位;因此,到目前为止已经回滚了 20,554 个数据块中共计 10,234 个数据块。此操作到目前为止已消耗了68秒。因此,剩余数据块将消耗:

68*(10234/(20554-10234))˜68秒

但您不必利用这种方法来获得该数值,它已经清楚地显示出来了。最后,列 LAST_UPDATE_TIME 显示有关当前视图内容的时间,这将用于加强您对结果的解释。

回滚段的问题及解决方法

问题一:事务要求的回滚段空间不够,表现为表空间用满,回滚段扩展到达参数MAXEXTENTS的值。

解决方法:向回滚段表空间添加文件或使已有的文件变大;增加MAXEXTENTS的值。

问题二:读一致性错误(ORA-01555 SNAPSHOT TOO OLD)

解决方法:增加MINEXTENTS的值,增加区的大小,设置一个高的OPTIMAL值。

SQL 语句

另一部分重要的新信息是正在被回滚的 SQL 语句的标识符。在早先,SQL_ADDRESS 和 SQL_HASH_VALUE 用于获取正在被回滚的 SQL 语句。新的列 SQL_ID 对应于视图 V$SQL 的 SQL_ID,如下所示:  

   SELECTSQL_TEXT
  FROMV$SQL
  WHERESQL_ID=;

Tags:Oracle 数据库 事物

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接