Oracle 11g重命名.保证是原子的吗?

Tom*_*Tom 4 oracle plsql rename

我在plsql脚本中有一些(5)重命名语句

drop table new;
rename old to new;
Run Code Online (Sandbox Code Playgroud)

"旧"表格包含非常有价值的信息.

在我看来,如果重命名命令保证是原子的,那么我就解决了一个问题.

它是原子的吗?如果没有,有没有办法进行"安全"重命名?

提前致谢

APC*_*APC 7

RENAME是一个DDL命令.所以它是一个单独的离散事务,如果这就是你在这种情况下的原子意味着什么.因此,它与任何事情一样安全.我无法想象重命名会如何导致您丢失数据.但如果你感到偏执,请记住这就是大自然为我们提供备份和恢复的原因.

编辑

如果DROP成功并且RENAME失败是要部署RENAME两次,确保不丢失数据的方法:

SQL>  rename old_table to something_else;
SQL>  rename new_table to old_table;
SQL>  drop table something_else;
Run Code Online (Sandbox Code Playgroud)

这样你就可以在线获取数据了.这也最大限度地减少了停机时间.