社区
基础和管理
帖子详情
commit了事务,还能rollback吗?
alj317
2010-11-25 09:26:11
请教各位大侠
在Oracle中,如果对某个事务commit了,它修改前的数据是否还是在缓存中?
如果还在的话,那么commit之后,还能进行回退吗?怎么回退啊?
...全文
2382
9
打赏
收藏
commit了事务,还能rollback吗?
请教各位大侠 在Oracle中,如果对某个事务commit了,它修改前的数据是否还是在缓存中? 如果还在的话,那么commit之后,还能进行回退吗?怎么回退啊?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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错误,然后进行提交,发现结果如下...
Oracle中的
commit
与
rollback
SQL语言分为五大类: DDL(数据定义语言) - Create、Alter、Drop 这些语句自动提交,无需用
Commit
提交。 DQL(数据查询语言) - Select 查询语句不存在是否提交问题。 DML(数据操纵语言) - Insert、Update、Delete 这些语句需要
Commit
才能提交。 DTL(
事务
控制语言) -
Commit
、
Rollback
事务
提交与回滚语句。 DCL(数据控制语言) - Grant、Revoke 授予权限与回收权限语句。 1.
commit
在数据库
MySQL-
commit
,
rollback
MySQL-
commit
,
rollback
基础和管理
17,382
社区成员
95,118
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章