[20180907]访问v$视图与一致性读取.txt --//前天看sql语句,发现应用存在一条访问gv$session的语句,感到很奇怪. --//v$之类的视图,要访问的一些基表实际上是x$,实际上是一些数组或者链表之类的结构,只不过以表的形式展现出来. --//这样我思考一个问题,理论讲就是一致性读取的问题,通过例子说明: 1.环境: --//打开2个回话,sesson 1以scott用户登陆,session 2以sys用户登陆: --//sesson 1: SCOTT@test01p> @ ver1 PORT_STRING VERSION BANNER CON_ID ------------------------------ -------------- -------------------------------------------------------------------------------- ---------- IBMPC/WIN_NT64-9.1.0 12.1.0.1.0 Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 0 SCOTT@test01p> @ spid SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50 ---------- ---------- ------------------------ --------- -------------------- ------- ---------- -------------------------------------------------- 152 9 5460:4376 DEDICATED 5564 22 5 alter system kill session '152,9' immediate; --//退出后再重新登陆,可以发现sid不变,至少在我的测试环境下能保证sid不变. SCOTT@test01p> @ spid SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50 ---------- ---------- ------------------------ --------- -------------------- ------- ---------- -------------------------------------------------- 152 11 2600:6116 DEDICATED 6060 22 6 alter system kill session '152,11' immediate; 2.测试: --//建立函数脚本. --//grant EXECUTE ON dbms_lock to scott; CREATE OR REPLACE FUNCTION SCOTT.sleep (seconds IN NUMBER) RETURN NUMBER AS BEGIN sys.DBMS_LOCK.sleep (seconds); RETURN seconds; END; / --//session 1退出: --//sesson 2: SYS@test01p> select count(*) from v$session where sid = 152; COUNT(*) ---------- 0 --//当前没有sid=152的会话. SYS@test01p> select scott.sleep(5),a.sid,a.serial#,module from v$session a where sid in(1,152) ; --//等. --//马上切换到session 1登陆,如果输入命令不够块,可以适当延长sleep的时间.^_^. --//sesion 1: SCOTT@test01p> @ spid SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50 ---------- ---------- ------------------------ --------- -------------------- ------- ---------- -------------------------------------------------- 152 19 2132:6040 DEDICATED 5600 22 21 alter system kill session '161,119' immediate; --//切换会session 2查看: SYS@test01p> select scott.sleep(5),a.sid,a.serial#,module from v$session a where sid in(1,152) ; SCOTT.SLEEP(5) SID SERIAL# MODULE -------------- ---------- ---------- ------------ 5 1 1 5 152 19 SQL*Plus --//我查询v$session在前,登录会话在后,可以发现显示sid=152哪行信息.也就是一些动态视图不支持一致性读取的.
[20180907]访问v$视图与一致性读取.txt
来源:这里教程网
时间:2026-03-03 11:58:04
作者:
编辑推荐:
- [20180907]insert+with+select.txt03-03
- [20180907]访问v$视图与一致性读取.txt03-03
- word2010中如何插入复选框 图解教程03-03
- 利用Word2010制作书法字帖实例教程03-03
- OCP认证052考试最新题库及答案整理-2303-03
- 在Word 2010文档中精确设置图片的位置03-03
- Oracle 11g R2 备份与恢复03-03
- OCP认证052考试最新题库及答案整理-2403-03
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 12C 探路 第一个 ORA 28040
12C 探路 第一个 ORA 28040
26-03-03 - rman 差异增量 和累计增量
rman 差异增量 和累计增量
26-03-03 - oracle之 安装oracle指定jdk 或者如何解决提示框显示不全
oracle之 安装oracle指定jdk 或者如何解决提示框显示不全
26-03-03 - 沃趣微讲堂 | Oracle集群技术(一)
沃趣微讲堂 | Oracle集群技术(一)
26-03-03 - Word2010中视图模式的使用介绍
Word2010中视图模式的使用介绍
26-03-03 - 为什么归档日志的大小比在线日志的大小小很多
为什么归档日志的大小比在线日志的大小小很多
26-03-03 - 实现在Word2010文档中快速删除段落标记等特殊字符
实现在Word2010文档中快速删除段落标记等特殊字符
26-03-03 - Oracle如何确定终端用户在数据库中只有一个会话?
Oracle如何确定终端用户在数据库中只有一个会话?
26-03-03 - Oracle 12C Data Gurad RAC TO RAC
Oracle 12C Data Gurad RAC TO RAC
26-03-03 - 从 Oracle 转型 MySQL 分布式事务数据库的实战旅途
从 Oracle 转型 MySQL 分布式事务数据库的实战旅途
26-03-03
