学习网考试学习资料

Gzu521.com

Oracle数据库中回滚监视的深入探讨(2)

ORACLE/CIW认证   点击:次   发布时间:2007-1-31   【字体: 】   来源:Gzu521.com
贵 州 学 习 网

  select sql_text
  from v$sql
  where sql_id = ;

  该查询返回所回滚的语句,因此提供了额外的校验以及 sql 语句的地址和散列值。R RCR9hr(A Tp 7[ 此文转贴于我的学习网IT认证ORACLE/CIW认证 http://www.Gzu521.com]R RCR9hr(A Tp 7

  并行实例恢复

  如果 dml 操作是并行操作,则列 qcsid 显示并行查询服务器会话的 sid。在并行回滚事件中,如实例恢复以及随后的故障事务恢复期间,经常用到该信息经常。

  例如,假设在大型的更新期间,实例异常关闭。当实例启动时,发生故障的事务被回滚。如果启用了用于并行恢复的初始化参数值,则回滚并行地而不是串行地发生,如同它发生在常规事务回滚中一样。下一步的任务是评估回滚进程的完成时间。

  视图 v$fast_start_transactions 显示为回滚故障事务所产生的事务。类似的视图 v$fast_start_servers 显示对回滚进行处理的并行查询服务器的数量。这两个视图都在以前的版本中提供,但显示事务标识符的新列 xid 使得联接更方便了。在 oracle9i database 以及更低的版本中,您必须通过三列(usn — 重做段号,slt — 重做段中的存储区号,seq — 序列号)来联接视图。其父集显示在 parentusn、parentslt 和 parentseq 中。在 oracle database 10g 中,您只需将其联接到 xid 列,其父 xid 由直观的名称表示:pxid。

  最有用的信息部分来自于 v$fast_start_transactions 视图中的列 rcvservers。如果发生并行回滚,则该列中显示并行查询服务器的数量。您可以查看该列,了解启动了多少并行查询进程:

select rcvservers from v$fast_start_transactions;

  如果输出是 1,则事务正在由 smon 进程进行串行回滚 — 显然这是完成工作的一种不充分的方法。您可以将初始化参数 recovery_parallelism 的值改为除 0 或 1 以外的值,重新启动实例进行并行回滚。随后您可以执行 alter system set fast_start_parallel_rollback = high,按 cpu 数量的 4 倍创建并行服务器。

  如果上述查询的输出显示不是 1,则正在进行并行回滚。您可以查询同一视图 (v$fast_start_transactions) 来获得父事务和子事务(父事务 id — pxid,而子事务 id — xid)。xid 还可用于联接此视图与 v$fast_start_servers,以获得其他详细信息。

  结论

  总之,当在 oracle database 10g 中回滚长期运行的事务时 — 无论是并行实例恢复会话还是用户执行的回滚语句 — 您所需做的一切就是查看视图 v$session_longops 并评估还需要多少时间。

上一页
本文共2页: 第 [1] [2]

责任编辑:gzu521

IT认证分类
计算机软件水平考试
全国计算机等级考试
思科认证
微软认证
ORACLE/CIW认证
Linux认证
JAVA认证
其它认证
分类推荐信息
更多...
大类最新文章
更多...