`

oracle _ v$transaction / v$session /v$process

 
阅读更多

 

摘要:

         情况,代码没有报错(no sqlException and other exception ),断点执行到ps.executeQuery()便结束,前台在打圈圈没有反应

         查了一圈了找到了几句sql,先是在v$session表中查看到当前存在的session记录,看到记录中有正在操作的表,再是kill掉对应的session,之后操作便解决了前面出现的问题

         所以,在这里做个简单的记录:

     

      

        (1)想到了一些问题,jdbc当然不是直接操作数据库的,那么遵循什么协议动态保持自身的状态与“oracle结果集”的游标关闭打开状态一致(这样表述是否正确),使用了什么协议

 
传输层:建立可靠的数据传输。TCP协议
会话层:建立端到端的连接
JDBC 连接远程计算机  是基于socket 的,也就是建立 TCP/IP 可靠的数据连接。
个人认为:属于传输层   

 

 

      既然先提到了v$session和session,那就从“会话”开始:
v$session描述的对象是一个当前存在的会话(该会话不是包括当前连接到数据库的会话,这只是数据库前台服务器进程的会话,还有数据库后台进程的会话,它是没有连接的)。

       

根据session id 可以查看当前session正在执行的的事务信息 :

 select * from  v$transaction where addr in (select  taddr from v$session where sid = &sid ) 

 

       重复查询USED_UBLK,USED_UREC可以看到变化,可以估计事务的进度,尤其是长时间的回滚操作,当这两个值为0,回滚也就完成了。

   select a.sid, a.serial#, a.user#, a.username, b.addr,

      b.USED_UBLK,  b.USED_UREC

 from v$transaction b, v$session a

 where b.addr in (select a.taddr from v$session a where a.sid = &sid)

 

          sid : session id   saddr : seesion address  

          serial# : sid会被重用,当sid被重用的时候,searial#会增加,不会重复

     

          taddr : 当前的transaction address ,可以用来关联v$transaction

          status :用来判断session的状态。

                 (1)active,正在执行sql语句 (2)inactive ,等待操作   (3)killed被标注为删除

          server : server type (dedicated or shared)

       

          USER#: session's user id。等于dba_users中的user_id。Oracle内部进程(即后台进程)的user#为0。

          USERNAME: session's username,即表示(服务端数据库里的)哪个数据库用户(而非服务端的操作系统的用户)在使用该会话。等于dba_users中的username。Oracle内部进程(即后台进程)的username为空。

     *“会话”所在的进程信息:
   paddr : process address ,关联v$process可以查到当前session所在的进

   program : 产生这个进程的应用程序?

   type : session type (background or user)

 process:客户端应用程序在其操作系统级别上的prodess id (如此描述难道还能细分)

   machine : 一般是客户端所在主机的主机名  ?

   osuser : 客户端操作系统的用户名

           terminal : 一般是客户端所在主机的主机名  ?

             附加:

                    当MACHINE=计算机名时,TERMINAL=unkown;MACHINE=工作组/计算机名时,TERMINAL=计算机名

 

   *“会话”中执行sql语句的相关信息
   command : session 正在执行的sql id ,1代表create table 3代表select
   sql_address,sql_id,sql_hash_value,sql_child_number:sql正在执行的sql statement , 与v$sql中的address,sql_id,hash_value,child_number对应(可以查看sql语句)
  
 
*“会话”属性

  MODULE, MODULE_HASH, ACTION, ACTION_HASH, CLIENT_INFO: 应用通过DBMS_APPLICATION_INFO设置的一些信息。

 

    action : 对于sql/Plus ,信息是sql window or other

 

            fixed_table_sequence  : 当session完成一个user call后便增加一个数值(不是+1),如果statue是inactive不会增加,可以根据此值的变化监控某时间点以来ssession的性能情况,eg:一个小时前,某个session的fixed_table_sequence值为1000,现在是2000,说明这个session使用的比较频繁,可以重点关注此session的performance statistics

 

          lockwait : 可以通过这个字段查询出当前正在等待的锁的相关信息 ,sid &lockwait 与 v$lock中的sid &kaddr相对应,查看当前等待锁的类型等信息

 

       row_wait_obj#:被锁定行所在table的object_id,和dba_objects中的的object_id关联可以得到被锁定的table name

 

     row_wait_file# :被锁定行所在的datafile id 。和v$datafile中的file#关联可以得到datafile name

 

     row_wait_row# : session当前正在等待的被锁定的行

     logon time : session login time

    

 

      *说明 :

   (1)

  看到一个"会话",首先确定“会话”的类型是什么,首先要看type字段,因为program ,process ,osuser, machine ,terminal在type值不同的时候有不同意义 :

  当type值为background,这几个字段表示的是服务器端的操作系统上的意义

  当type值为user,表示的是客户端的操作系统上的意义

 
        (2)
   v$session中的process字段值为 xx:xx的解释:
  
       “内容蛮多,再接再励”
 

 

http://www.zhihu.com/question/21142020

 

http://blog.csdn.net/haiross/article/details/17718383 (v$session  && v$process)

 

分享到:
评论

相关推荐

    oracle_v$session_v$session_wait用途详解

    ### Oracle V$SESSION 和 V$SESSION_WAIT 的详细解析 #### 概述 Oracle 数据库提供了大量的动态性能视图(Dynamic Performance Views),其中 `V$SESSION` 和 `V$SESSION_WAIT` 是两个非常重要的视图,它们能够帮助...

    oracle 动态性能(V$)视图

    7. **进程和后台进程**:V$PROCESS和V$BACKGROUND_PROCESS显示了所有运行的进程状态,包括后台进程如DBWR(数据库写入器)和LGWR(日志写入器)。 8. **日志和归档**:V$LOG和V$ARCHIVE_LOG记录了重做日志和归档...

    ORACLE主要的系统表和系统视图

    4. **v$process**:提供关于当前正在运行的进程信息,包括操作系统进程ID、会话ID、等待事件等。 5. **v$session**:提供关于当前所有会话的信息,包括会话ID、用户ID、等待事件等。 6. **v$transaction**:提供关于...

    oracle_DBA_常用SQL语句[借鉴].pdf

    from v$rollname a, v$transaction b, v$session c, v$sqltext d where a.usn = b.xidusn and b.addr = c.taddr and c.sql_address = d.address and c.sql_hash_value = d.hash_value and a.usn = 1; ``` 控制文件...

    oracle_常用系统表.docx

    dest**、**v$logmnr_contents**、**v$logmnr_dictionary**、**v$logmnr_logs**、**v$tablespace**、**v$tempfile**、**v$filestat**、**v$undostat**、**v$rollname**、**v$session**、**v$transaction**、**v$...

    Oracle DBA常用SQL语句

    若要查看特定回滚段内的事务或SQL语句,可以使用`v$rollname`、`v$transaction`、`v$session`和`v$sqltext`视图。 ```sql SELECT d.sql_text, a.name FROM v$rollname a, v$transaction b, v$session c, v$...

    最全的oracle常用命令大全.txt

    SQL> select pro.spid from v$session ses,v$process pro where ses.sid=21 and ses.paddr=pro.addr; 说明:21是某个连接的sid数 然后用 kill 命令杀此进程号。 五、SQL*PLUS使用 a、近入SQL*Plus $sqlplus ...

    Oracle 常用系统表

    这些视图通常以 `v$` 开头,并且存储在 `$ORACLE_HOME/RDBMS/ADMIN/CATALOG.SQL` 文件中。通过 SQL*Plus 或其他查询工具,用户可以以 SYSTEM 身份登录后查询这些视图以获取有关数据库状态的各种信息。 ##### 1.1 ...

    Oracle10g_Views.pdf

    - **会话和进程信息**:如V$SESSION、V$PROCESS,记录当前活动会话及其相关信息。 - **内存结构**:如V$CACHE、V$BUFFER_POOL,提供关于数据库缓存池和缓冲区池的信息。 - **资源等待统计**:如V$WAITSTAT、V$WAIT,...

    oracle views 10g

    8. **V$LOGMNR_PROCESS**: 显示LogMiner进程的详细信息。 9. **V$LOGMNR_REGION**: 显示LogMiner区域的信息。 10. **V$LOGMNR_SESSION**: 显示LogMiner会话的信息。 11. **V$LOGMNR_STATS**: 显示LogMiner的统计信息...

    oracle DBA 常用SQL语句.pdf

    join v$session on v$process.addr = v$session.paddr where u_dump.name = 'user_dump_dest' and instance.name = 'instance_name' and v$session.audsid=sys_context('userenv','sessionid'); ``` - **语法...

    oracle数据字典关系图

    9. **V$TRANSACTION** - 描述:事务信息。 - 关键字段:`Addr`, `Xidusn` - 功能:跟踪正在进行的事务的状态。 10. **V$ROLLNAME 和 V$ROLLSTAT** - 描述:回滚段信息。 - 关键字段:`Usn` (V$ROLLNAME), `Usn...

    Oracle的锁表与解锁

    - **使用BEGIN TRANSACTION和COMMIT/ROLLBACK**:在事务中,通过修改数据,Oracle将自动在需要的数据行上放置TX锁。 #### 解锁操作 解锁表或数据行通常是通过事务的提交或回滚完成的。当一个事务提交或回滚后,...

    oracle巡检

    from v$rollname a, v$rollstat b, v$session c, v$sqltext d, v$transaction e where a.usn = b.usn AND b.usn = e.XIDUSN AND c.taddr = e.addr AND c.sql_address = d.ADDRESS AND c.sql_hashvalue = d.hash_...

    oracle常用sql语句

    4 join v$session on v$process.addr = v$session.paddr 5 where u_dump.name = 'user_dump_dest' 6 and instance.name = 'instance_name' 7 and v$session.audsid = sys_context('userenv', 'sessionid'); ``` ...

    DBA常用sql语句参考

    FROM v$rollname a, v$transaction b, v$session c, v$sqltext d WHERE a.usn=b.xidusn AND b.addr=c.taddr AND c.sql_address=d.address AND c.sql_hash_value=d.hash_value AND a.usn=1; ``` 这个查询用于找...

    SQL语句大全 SQL语句大全

    | NVL2(V$PROCESS.TRACEID, '_' || V$PROCESS.TRACEID, NULL ) || '.TRC' "TRACE FILE" FROM V$PARAMETER U_DUMP CROSS JOIN V$PARAMETER INSTANCE CROSS JOIN V$PROCESS JOIN V$SESSION ON V$PROCESS.ADDR = ...

Global site tag (gtag.js) - Google Analytics