社区
基础和管理
帖子详情
commit了事务,还能rollback吗?
alj317
2010-11-25 09:26:11
请教各位大侠
在Oracle中,如果对某个事务commit了,它修改前的数据是否还是在缓存中?
如果还在的话,那么commit之后,还能进行回退吗?怎么回退啊?
...全文
2430
9
打赏
收藏
commit了事务,还能rollback吗?
请教各位大侠 在Oracle中,如果对某个事务commit了,它修改前的数据是否还是在缓存中? 如果还在的话,那么commit之后,还能进行回退吗?怎么回退啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
YY_MM_DD
2010-11-25
打赏
举报
回复
[Quote=引用 2 楼 alj317 的回复:]
引用 1 楼 xiaobn_cn 的回复:
commit后就不能rollback了
那先前的数据是否还是在缓存中呢?
如果修改前有个游标是要读取旧的值,它是否会在commit之后仍然是读取旧值?
[/Quote]
可以读取旧值,下面查询当前表60分钟前的数据,你就可以根据这个记录变相的回滚到你提交之前的记录。
select * from tableName as of timestamp systimestamp - interval '60' minute
冰山客
2010-11-25
打赏
举报
回复
[Quote=引用 5 楼 alj317 的回复:]
引用 3 楼 wkc168 的回复:
引用楼主 alj317 的回复:
请教各位大侠
在Oracle中,如果对某个事务commit了,它修改前的数据是否还是在缓存中?
如果还在的话,那么commit之后,还能进行回退吗?怎么回退啊?
知道个提交时间的话 用闪回
“闪回”是什么?
[/Quote]
“闪回”是Oracle 10g提供的新特性,举个例子,在9:00你对emp表做了修改,并commit,但是你想查询8:00的数据(也就是commit之前的数据),使用闪回查询(flashback)是可以查询到的,但是这些数据不是从表中查询到,而是从回滚段中得到
冰山客
2010-11-25
打赏
举报
回复
先前的数据是否在缓存中这个不一定,这要看Oracle执行的是快速清除还是延迟清除,快速清除是你提交后会立即将这些数据清理掉,延迟清除则是等下一次要用到这些块时,先前的数据将会被覆盖,这些数据即使没有被立即清除,你用游标也是无法读到的,但是旧的数据会保存在回滚段中,可以提供闪回(10g)
alj317
2010-11-25
打赏
举报
回复
[Quote=引用 3 楼 wkc168 的回复:]
引用楼主 alj317 的回复:
请教各位大侠
在Oracle中,如果对某个事务commit了,它修改前的数据是否还是在缓存中?
如果还在的话,那么commit之后,还能进行回退吗?怎么回退啊?
知道个提交时间的话 用闪回
[/Quote]
“闪回”是什么?
suhenhappy
2010-11-25
打赏
举报
回复
不能了吧...
心中的彩虹
2010-11-25
打赏
举报
回复
[Quote=引用楼主 alj317 的回复:]
请教各位大侠
在Oracle中,如果对某个事务commit了,它修改前的数据是否还是在缓存中?
如果还在的话,那么commit之后,还能进行回退吗?怎么回退啊?
[/Quote]
知道个提交时间的话 用闪回
alj317
2010-11-25
打赏
举报
回复
[Quote=引用 1 楼 xiaobn_cn 的回复:]
commit后就不能rollback了
[/Quote]
那先前的数据是否还是在缓存中呢?
如果修改前有个游标是要读取旧的值,它是否会在commit之后仍然是读取旧值?
xiaobn_cn
2010-11-25
打赏
举报
回复
commit后就不能rollback了
oracle中,已
commit
的数据能
rollback
回滚吗?
分为几种不同情况。 1.没有提交(
commit
)的数据删除后无法
rollback
2.提交(
commit
)了的数据删除后可以使用
rollback
恢复 3.删除数据后提交(
commit
)则无法使用
rollback
恢复 就是说,你提交了的数据是永久性的,
rollback
是在这个基础上进行备份的。 ...
六、
事务
(
commit
、
rollback
)
六、Oracle中的
事务
MySQL
事务
中
rollback
和
commit
的一些笔记
rollback
在两次
事务
中分别测试,一次
事务
中输入全部正确的sql语句,另一次
事务
中包涵错误的sql语句,依次进行回滚 可以发现,不管
事务
中内容怎么样,只要回滚了,
事务
对数据库造成的影响就会消失。
commit
开启
事务
,输入两条sql语句后,不执行
commit
,直接关掉窗口 结果发现之前的sql语句并没有插入成功 再试一下,执行两条的sql语句,第二条sql错误,然后进行提交,发现结果如下...
MySQL-
commit
,
rollback
MySQL-
commit
,
rollback
Oracle中的
commit
与
rollback
SQL语言分为五大类: DDL(数据定义语言) - Create、Alter、Drop 这些语句自动提交,无需用
Commit
提交。 DQL(数据查询语言) - Select 查询语句不存在是否提交问题。 DML(数据操纵语言) - Insert、Update、Delete 这些语句需要
Commit
才能提交。 DTL(
事务
控制语言) -
Commit
、
Rollback
事务
提交与回滚语句。 DCL(数据控制语言) - Grant、Revoke 授予权限与回收权限语句。 1.
commit
在数据库
基础和管理
17,381
社区成员
95,113
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章