2012-03-09 44 views
2

我需要每天加载一个带有〜18M记录的表,并且为了最大限度地减少客户端的停机时间,我们有加载temp的方法,然后交换表名。见下文Oracle:交换表名

表的方法是原表,表TMP是临时表

  1. 负载表TMP
  2. 重命名表A至表A_V1
  3. 重命名表TMP于表A
  4. 将表A_V1重命名为表TMP
  5. 截断表TMP准备下次加载

是否有任何其他方式交换表名称?或以任何其他方式来实现这一目标?

非常感谢。

回答

6

使用同义词。

,如果你想,放下以前tablea_yyyymmdd首先装入TABLEA_YYYYMMDD,重建的制约等

然后,

create or replace synonym tablea for tablea_yyyymmdd 

最后。

+1

作为替代使用相同的概念,你可以用类似的方式创建一个视图。 – 2012-03-09 14:00:51

+0

感谢所有的答案。^_ ^ – Ianthe 2012-03-12 07:18:03

0

这是最好的办法。如果你喜欢,你可以删除并重新创建表格,而不是截断。祝你好运!

2

而不是实际重命名表,您可以有两个表,A1A2,以及两个同义词ATEMP,然后您每天在表之间切换。

老实说,虽然,我想重命名表可能只是为有效长的路要走,但既然你问其他方式这是可以做到的,我想我会在凑钱。