Oracle: обмен именами таблиц - PullRequest
2 голосов
/ 09 марта 2012

Мне нужно ежедневно загружать таблицу с ~ 18M записями, и для того, чтобы минимизировать время простоя на стороне клиента, мы используем подход к загрузке temp, а затем меняем имена таблиц после.см. процесс ниже

Таблица A является исходной таблицей, Таблица TMP является временной таблицей

  1. load Таблица TMP
  2. переименовывает таблицу A в таблицу A_V1
  3. переименование таблицы TMP в таблицу A
  4. переименование таблицы A_V1 в таблицу TMP
  5. усечение таблицы TMP при подготовке к следующей загрузке

Есть ли другой способ обменаимена таблиц?или любой другой способ добиться этого?

Большое спасибо.

Ответы [ 3 ]

6 голосов
/ 09 марта 2012

Используйте синоним.

Сначала загрузите в TABLEA_YYYYMMDD, воссоздайте ограничения и т. Д.

Затем,

create or replace synonym tablea for tablea_yyyymmdd

Наконец, если вы хотите, сбросьте предыдущий tablea_yyyymmdd.

2 голосов
/ 09 марта 2012

Вместо того, чтобы фактически переименовывать таблицы, у вас может быть две таблицы A1 и A2 и два синонима A и TEMP, которые вы затем будете переключать между таблицами каждый день.

Хотя, честно говоря, я думаю, что переименование таблиц, вероятно, является таким же правильным способом, но, поскольку вы попросили другие способы, которыми это может быть сделано, я подумал, что смогу сделать это.

0 голосов
/ 09 марта 2012

Это лучший способ сделать это.Вы можете удалить и воссоздать таблицы вместо усечения, если хотите.Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...