PL/SQL Developer 窥探事务

一次登录代表一个连接

一个SQL Window 代表一个会话(session),有唯一的SID

事务(transaction) 由 insert 、update 或者 delete 开启

由 commit 或者 rollback 结束

会话中可以有事务,可以没有事务

会话之间是不可见的(事务中的CUD对于其他会话不可见)

不能看到隔壁屋,只能看到自己屋

数据存储区域是所有会话共享的(commit 会把改动持久化到数据存储区)

...........................................................................................................                                                                                     

INSERT INTO person VALUES ('1','1',1); --487

DELETE FROM person --2476

UPDATE person SET age = 12 --2676

SELECT * FROM person --1721

SELECT OBJECT_NAME AS 对象名称, S.SID, S.SERIAL#, P.SPID AS 系统进程号
  FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S, V$PROCESS P
 WHERE L.OBJECT_ID = O.OBJECT_ID
   AND L.SESSION_ID = S.SID
   AND S.PADDR = P.ADDR;

1. SID 是否唯一不变  

  • SQL Window 打开之后变有了一个session,有一个唯一SID 。
  • 执行插入,开启事务后查看;再次开启再次查看。SID 不变。
  • 关闭window 或者断开连接,session 就会关闭。

2. A会话中CUD事务其他会话是否可见 

  • 在insert window中执行插入,不提交。在select window 中执行查询 ,看不到记录
  • insert window 中 提交。select window中执行查询 可以查看到记录

3. A会话中的CUD事务是否自己可见 

  • insert window中执行插入
  • insert window中执行查询,可以看到数据
原文地址:https://www.cnblogs.com/zno2/p/4766131.html