Win10电脑黑屏毫无反应无反应

后使用快捷导航没有帐号?
查看: 1407|回复: 9
会话1多次修改一条记录的值但不提交,会话2查询时会到回滚段取值,但为何只取更新前的
论坛徽章:12
本帖最后由 gigas 于
22:51 编辑
会话1首先查询t表中当前数据:
& select *
ID
--------------------
1
2
3
4
5
6
7
8
9
80
91复制代码
紧接着在会话1中将值为80的数据更新成60,但不提交
SQL& update t set id= 60 where id=80;
已更新 1 行。复制代码
接着在会话1中将值为60的数据更新成50,但不提交
SQL& update t set id= 50 where id=60;
已更新 1 行。
复制代码
接着在会话2中查看此时t表中数据,还是之前更新前的数据
SQL& select *
ID
--------------------
1
2
3
4
5
6
7
8
9
80
91复制代码
1、此时值80和60是否都记录到了回滚段中?
2、看深入视频中提到,当会话2发现数据块中数据被其他会话修改但未提交时,会话2会去回滚段中取数据,那么会话2是根据什么条件来保证,取得的数据始终是更新前的80而不是之后修改的60?
论坛徽章:12
没有理解,忘高手指点!
论坛徽章:12
高级会员, 积分 527, 距离下一级还需 473 积分
论坛徽章:1
我理解为:
1、80记录在回滚段,60记录在databuffer的那个block里
2、根据scn获取的数据
高级会员, 积分 527, 距离下一级还需 473 积分
论坛徽章:1
第一点说的不对
buff里面放的是最后的值:50
undo段里面放的是:80、60
论坛徽章:12
论坛徽章:12
哪位大神进来说说!
金牌会员, 积分 2617, 距离下一级还需 383 积分
论坛徽章:19
个人理解 会做rollback 再显示&&没有去官方文档求证& &这个应该比较重要&&一致性读
论坛徽章:6
可以了解一下一致读的概念以及事务的隔离等级、
金牌会员, 积分 1135, 距离下一级还需 1865 积分
论坛徽章:3
看看这个帖子或许对你会有帮助
扫一扫加入本版微信群登录出现密码过期错误(ORA-28001)的处理
登录时,出现ORA-28001:the password has expired错误时,说明用户的密码已经过期,原因是11g中默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”所致,处理方式如下: (1)在CMD命令窗口中输入:
sqlplus 用户名/密码@数据库本地服务名(如:sqlplus scott/1234@oracle1) (2)查看用户的proifle是哪个,一般是default :   sql&SELECT username,PROFILE FROM dba_ (3)查看对应的概要文件(如default)的密码有效期设置:   sql&SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME'; (4)将概要文件(如default)的密码有效期由默认的180天修改成“无限制”:
sql&ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;修改之后不需要重启动数据库,会立即生效。 (5)修改后,还没有被提示ORA-28002警告的用户账号不会再碰到同样的提示;而已经被提示的用户账号必须再改一次密码,举例如下:   $sqlplus / as sysdba   sql&alter user 用户名 identified by &原来的密码& ----不用换新密码注意:oracle11g启动参数resource_limit无论设置为false还是true,密码有效期都是生效的,所以必须通过以上方式进行修改。查看:1509|回复:6
alter system kill session 'sid,serial#' immediate 这个命令杀了会话,但是总是提示session maked for kill,等了半天都杀不掉,怎么弄,没有OS权限哦&&orakill用不了,有其他办法吗
高级工程师
引用:原帖由 九命猫幺 于
09:59 发表
alter system kill session 'sid,serial#' immediate 这个命令杀了会话,但是总是提示session maked for kill,等了半天都杀不掉,怎么弄,没有OS权限哦&&orakill用不了,有其他办法吗 ... 等一会儿通常就可以了。它并不一定会被马上“杀”掉。
ORA-00031: session marked for kill
Cause: The session specified in an ALTER SYSTEM KILL SESSION command cannot be killed immediately (because it is rolling back or blocked on a network operation), but it has been marked for kill. This means it will be killed as soon as possible after its current uninterruptible operation is done.
Action: No action is required for the session to be killed, but further executions of the ALTER SYSTEM KILL SESSION command on this session may cause the session to be killed sooner.
引用:原帖由 bfc99 于
18:16 发表
等一会儿通常就可以了。它并不一定会被马上“杀”掉。
ORA-00031: session marked for kill
Cause: The session specified in an ALTER SYSTEM KILL SESSION command cannot be killed immediately (because it i ... 谢谢,是的&&等了2个小时后杀掉了
高级工程师
引用:原帖由 九命猫幺 于
10:10 发表
谢谢,是的&&等了2个小时后杀掉了 也可以尝试使用ALTER SYSTEM DISCONNECT SESSION 杀掉专用服务器(DEDICATED SERVER)或共享服务器的连接会话,它等价于从操作系统杀掉进程。它有两个选项POST_TRANSACTION和IMMEDIATE, 其中POST_TRANSACTION表示等待事务完成后断开会话,IMMEDIATE表示中断会话,立即回滚事务。
SQL& ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' POST_TRANSACTION;
SQL& ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' IMMEDIATE;
但我没用过。
引用:原帖由 bfc99 于
14:12 发表
也可以尝试使用ALTER SYSTEM DISCONNECT SESSION 杀掉专用服务器(DEDICATED SERVER)或共享服务器的连接会话,它等价于从操作系统杀掉进程。它有两个选项POST_TRANSACTION和IMMEDIATE, 其中POST_TRANSACTION表示等待事 ... 3q 我试试
先找到linux中对应的oracle进程,使用kill命令就可以干掉对应的进程
引用:原帖由 三国冷 于
22:44 发表
先找到linux中对应的oracle进程,使用kill命令就可以干掉对应的进程 没有操作系统权限,我只是个普通用户

我要回帖

更多关于 电脑开着机黑屏没反应 的文章

 

随机推荐