在 oracle 10g 中回滚
Rollback in oracle 10g
我有一个table,我从中删除了一行
delete from patient where pid=500;
现在,我回滚上面的查询并成功完成,但是在查询时
select *from patient;
我得到:
"no rows selected"
那么,回滚是否撤消了会话中的所有操作?
但 table 结构存在,据我所知,我认为删除
只是删除了可以通过回滚检索的记录,还是因为我没有提交我的插入?
- 删除自只会删除数据,不会删除 table 结构。
- 回滚应该适用于 DELETE from 语句,它在删除之前创建一个保存点。
如果还是不行,如果table的闪回开启了,取回数据:
ALTER TABLE xxTABLENAMExx
ENABLE ROW MOVEMENT;
FLASHBACK TABLE xxTABLENAMExx
TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '20' minute);
ALTER TABLE xxTABLENAMExx
DISABLE ROW MOVEMENT;
输入您希望 table 回滚到的时间段(以分钟为单位)。
这将是会话 autocommit on
的结果,如果您使用任何类型的 java 工具或 运行 默认设置为 autocommit on
的任何其他工具您失去了回滚功能(闪回仍然是一个选项),要具有回滚功能,您需要将会话设置为 autocommit off
我有一个table,我从中删除了一行
delete from patient where pid=500;
现在,我回滚上面的查询并成功完成,但是在查询时
select *from patient;
我得到:
"no rows selected"
那么,回滚是否撤消了会话中的所有操作?
但 table 结构存在,据我所知,我认为删除 只是删除了可以通过回滚检索的记录,还是因为我没有提交我的插入?
- 删除自只会删除数据,不会删除 table 结构。
- 回滚应该适用于 DELETE from 语句,它在删除之前创建一个保存点。
如果还是不行,如果table的闪回开启了,取回数据:
ALTER TABLE xxTABLENAMExx ENABLE ROW MOVEMENT; FLASHBACK TABLE xxTABLENAMExx TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '20' minute); ALTER TABLE xxTABLENAMExx DISABLE ROW MOVEMENT;
输入您希望 table 回滚到的时间段(以分钟为单位)。
这将是会话 autocommit on
的结果,如果您使用任何类型的 java 工具或 运行 默认设置为 autocommit on
的任何其他工具您失去了回滚功能(闪回仍然是一个选项),要具有回滚功能,您需要将会话设置为 autocommit off