Oracle数据库中回滚监视的深入探讨
2007-05-10 12:16:53 来源:WEB开发网那么该表如何提供对剩余时间的评估呢?可以在列 TOTALWORK 中找到线索,该列显示要完成的“工作”总量,还有 SOFAR 显示到目前为止已经完成了多少工作。工作的单位显示在列 UNITS 中。在本例中以数据块为单位;因此,到目前为止已经回滚了 20,554 个数据块中共计 10,234 个数据块。此操作到目前为止已消耗了 77 秒。因此,剩余数据块将消耗:
77 * ( 10234 / (20554-10234) ) ˜ 77 秒
但您不必利用这种方法来获得该数值,它已经清楚地显示出来了。最后,列 LAST_UPDATE_TIME 显示有关当前视图内容的时间,这将用于加强您对结果的解释。
SQL 语句
另一部分重要的新信息是正在被回滚的 SQL 语句的标识符。在早先,SQL_ADDRESS 和 SQL_HASH_VALUE 用于获取正在被回滚的 SQL 语句。新的列 SQL_ID 对应于视图 V$SQL 的 SQL_ID,如下所示:
SELECT SQL_TEXT
FROM V$SQL
WHERE SQL_ID = <value of SQL_ID from V$SESSION_LONGOPS>;
该查询返回所回滚的语句,因此提供了额外的校验以及 SQL 语句的地址和散列值。
并行实例恢复
如果 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 并评估还需要多少时间。
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接