Oracle:交换表名

时间:2012-03-09 08:49:30

标签: sql oracle

我需要每天加载一个包含~18M记录的表,并且为了最小化客户端的停机时间,我们有加载temp的方法然后交换表名。见下面的流程

表A是原始表,表TMP是临时表

  1. 加载表TMP
  2. 将表A重命名为表A_V1
  3. 将表格TMP重命名为表A
  4. 将表A_V1重命名为表TMP
  5. 截断表TMP以准备下次加载
  6. 还有其他方式交换表名吗?或任何其他方式来实现这一目标?

    非常感谢。

3 个答案:

答案 0 :(得分:6)

使用同义词。

首先加载到TABLEA_YYYYMMDD,重新创建约束等。

然后,

create or replace synonym tablea for tablea_yyyymmdd

最后,如果您愿意,请删除上一页 tablea_yyyymmdd

答案 1 :(得分:2)

您可以拥有两个表A1A2,以及两个同义词ATEMP,而不是实际重命名表,然后您可以在每天都有桌子。

老实说,我认为重命名表可能是一种有效的方法,但是既然你要求其他方法可以做到,我以为我会填补。

答案 2 :(得分:0)

这是最好的方法。如果您愿意,可以删除并重新创建表而不是截断。祝你好运!