zoukankan      html  css  js  c++  java
  • Oracle中如何追踪savepoint

    Oracle中的savepoint是事务中的标示符,以帮助我们做到部分操作的回滚。 我们可以通过trace找出会话中自上次commit以来所有的savepoint保存点,要阅读这些trace内容你需要有user_dump_dest目录的相关权限。

    SQL> oradebug setmypid; 已处理的语句 SQL> SQL> SQL> insert into  system.linktest values(2); 已创建 1 行。 SQL> savepoint a; 保存点已创建。 SQL> insert into system.linktest values(3); 已创建 1 行。 SQL> savepoint b; 保存点已创建。 SQL> insert into system.linktest values(4); 已创建 1 行。 SQL> savepoint d; 保存点已创建。 SQL> oradebug event immediate trace name savepoints level 1;

    已处理的语句 SQL> oradebug tracefile_name; e:\oracle\product\10.2.0\admin\orcln\udump\orcln_ora_1756.trc

    其中 oradebug setmypid;  表示要trace的session为当前会话。

    在非mts环境下,我们也可以通过如:

    oradebug setospid OSPID;         -- 通过指定OS中的进程号,即v$process中的spid

    oradebug setorapid ORAPID;      -- 通过指定Oracle 中的进程号,即v$process中的pid

    来定制我们需要trace的相关session。

    退回到命令行格式,该trace主要内容如下:

    *** 2009-09-15 12:39:37.828 *** SERVICE NAME:(SYS$USERS) 2009-09-15 12:39:37.828 *** SESSION ID:(151.83) 2009-09-15 12:39:37.828 ==================================================== SAVEPOINT FOR CURRENT PROCESS ------------------------------ flag: 0x1 name: D dba: 0x800084, sequence #: 177, record #: 51, savepoint #: 81 status: VALID, next: 28236068 name: B dba: 0x800084, sequence #: 177, record #: 50, savepoint #: 66 status: VALID, next: 282373F4 name: A dba: 0x800084, sequence #: 177, record #: 49, savepoint #: 52 status: VALID, next: 00000000

    metalink中的相关介绍如下:

    Subject:

    How To Find Out The Savepoint For Current Process

    Doc ID:

    108611.1

    Type:

    BULLETIN

    Modified Date:

    16-JUN-2004

    Status:

    PUBLISHED
    PURPOSE ------- This information shows you how to get the savepoints you have issued since the last commit was issued. SCOPE & APPLICATION ------------------- Any user can follow the steps to find out the savepoints in their own session.  However, only the the user who have read permission to the user_dump_dest directory can view the output. Steps to Retrieve the Savepoint Issued after the Last Commit ------------------------------------------------------------ In the following illustration, two savepoints are created in the same session.  Then a savepoints dump is issued to get the savepoint information.  An example of the dump file is included. SQL> insert into emp (empno, ename) 2  values (9995, 'vso'); 1 row created. SQL> savepoint pt1; Savepoint created. SQL> insert into emp (empno, ename) 2  values (9994, 'vso'); 1 row created. SQL> savepoint pt2; Savepoint created. SQL> alter session set events 2  'immediate trace name savepoints level 1'; Session altered. A trace file is generated in the user_dump_directory.  The content of the trace file is included in the following: Dump file /u04/app/oracle/admin/R805/udump/r805_ora_18763.trc Oracle8 Enterprise Edition Release 8.0.5.2.1 - Production With the Partitioning and Objects options PL/SQL Release 8.0.5.2.0 - Production ORACLE_HOME = /u04/app/oracle/product/8.0.5 System name:    SunOS Node name:      rtcsol1 Release:        5.6 Version:        Generic_105181-17 Machine:        sun4u Instance name: R805 Redo thread mounted by this instance: 1 Oracle process number: 8 Unix process pid: 18763, image: oracleR805 *** 2000.04.18.14.11.37.000 *** SESSION ID:(7.391) 2000.04.18.14.11.37.000 ==================================================== SAVEPOINT FOR CURRENT PROCESS ------------------------------ flag: 0x1 name: PT2 dba: 0x80020e, sequence #: 0, record #: 9, savepoint #: 131 status: VALID, next: 10a0868 name: PT1 dba: 0x80020e, sequence #: 0, record #: 7, savepoint #: 109 status: VALID, next: 0
  • 相关阅读:
    蘑菇街2016校园招聘第一个编程题
    杭州天丽笔试题
    2016校园招聘 cvte一面被问到的面试题目
    C#中ArrayList,List,数组的区别
    大白话讲解.NET中挂起线程的Thread.Sleep()方法
    OutLook邮箱获取授权码
    EPIC全速下载游戏加速教程
    远程服务器提示:身份验证错误 要求的函数不受支持解决办法汇总-- Windows远程桌面连接
    华硕主板重装系统以后BIOS设置的启动项就没有了,开机就进BIOS,不进系统
    Windows10访问共享文件夹:此用户无法登录,因为该账户当前已被禁用此用户无法登录,因为该账户当前已被禁用或者直接找不到相应的计算机解决办法
  • 原文地址:https://www.cnblogs.com/macleanoracle/p/2967360.html
Copyright © 2011-2022 走看看