oracle中v$session视图详解和数据模拟变化情况
来源:网络收集 点击: 时间:2024-09-02首先查询一下,如下图,我展示了我当前用户名下的某个指定的计算机的会话情况,

如果这时我打开一个新的会话窗口(plsql打开sql窗口,写一个查询语句进行执行)。如下图所示,对比上图可发现多了一条记录(sid为277)

这时我再次关掉一个会话窗口后,可发现,又少了一个会话为 sid为274

需要注意的是如果我新打开窗口,不执行其他语句的话 是不会建立新的会话的。
下面新建个表来模拟会话视图中数据的变化,我新建表如下,并有三条数据

这时我执行如下sql

大家都知道,如果我执行了for update 证明此表已经被锁住了。那么我再新建了窗口执行对表数据的更新如下:可以看到这个语句是一直执行的。

下面再查询v$session 的视图情况

由上图可以看到 视图中的status字段的值为ACTIVE 。Status包含三种状态,其中两种分别是INACTIVE:代表当前会话没有sql执行,我将要等待sql的执行; killed:代表当前会话已经被杀死了。那么ACTIVE代表的是当前会话中sql正在执行。由于我们把表锁住了,执行update语句并不能进行表的更新,所以一直是执行状态。下面如果我取消当前用户操作如下图,

现在我再来查询视图数据的变化情况如下:状态变成了INACTIVE

上述例子中描述了oracle v$session 视图的数据变化情况,也充分展示了,会话何时建立,何时销毁,描述了会话的整个生命周期,也模拟了当发生死锁情况下会话视图中状态的变化情况,通过简单的例子来了解v$session视图再好不过了。
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.ff371.cn/art_1188454.html