我正在对我的DB进行相当严肃的操作,我希望保持我的数据安全。
不幸的是,有些地方出了问题,你看:
SAVEPOINT before_foo_update;
CREATE TABLE AUX_FOO as
SELECT * FROM FOO;
TRUNCATE TABLE FOO;
ALTER TABLE FOO
MODIFY(BAR NUMBER(11) NOT NULL);
INSERT INTO FOO
SELECT * FROM AUX_FOO;
DROP TABLE AUX_FOO;
ROLLBACK TO SAVEPOINT before_foo_update;不幸的是,我遇到了一个错误:
ROLLBACK TO SAVEPOINT before_foo_update
Error report:
SQL Error: ORA-01086: savepoint 'BEFORE_FOO_UPDATE' never established
01086. 00000 - "savepoint '%s' never established"
*Cause: Trying to roll back to a save point that was never established现在福桌空了..。AUX_FOO也没有掉下来。你知道我做错了什么吗?
发布于 2012-10-19 20:25:33
保存点是当前事务中的一个点。DDL语句(如CREATE TABLE、TRUNCATE、ALTER TABLE或DROP TABLE )将在语句运行之前和之后发出隐式提交,从而结束当前事务。一旦当前事务结束,您就不能再回滚到在该事务中定义的保存点。
潜在地,您需要考虑使用恢复点代替。还原点是数据库的属性,而不是事务,因此您可以生成许多事务,但仍然可以将整个数据库还原回还原点。但是,恢复到还原点会影响数据库在定义还原点到恢复时间之间所做的每一项更改--您不仅会丢失会话或用户所做的所有更改,还会丢失数据库中的所有会话和用户所做的更改。
https://dba.stackexchange.com/questions/27281
复制相似问题