2014-09-17 6 views
0
Database: Oracle 11g R2 

Tool: TOAD for Oracle 10.6 

Я хотел взять резервную копию стола. Таким образом, я использовал ниже запрос:Таблица резервного копирования и восстановления

CREATE TABLE table_backup AS (

SELECT * 

FROM table 

); 

Я потребуется внести некоторые изменения в таблицу и восстановить его к предыдущей версии после проверки изменений.

Для этого я бы ПОЗВОЛЯл таблицу и восстановил ее из своей резервной копии, используя вышеуказанный запрос.

Вопрос, когда я это делаю, все гранты, индексы, разделы и т. Д. Остаются в восстановленной таблице или нет?

Кроме того, есть ли лучший способ достичь моего требования.

+0

Несвязанные, но: круглые скобки вокруг выбора не нужны и бесполезны. –

ответ

1

The documentation говорит:

Удаление таблицы аннулирует зависимые объекты и удаляет объектные привилегии на столе. Если вы хотите воссоздать таблицу, то вы должны регенерировать права объекта в таблице, воссоздать индексы, ограничения целостности и триггеры для таблицы и выполнить свои параметры хранения.

Ноун грантов, индексов, разделов и т. Д. Перемещается или копируется, когда вы делаете вы. create table as ... select заявление. Между исходной и скопированной таблицами нет никакой связи. Когда вы отбрасываете исходную таблицу, все ее гранты и т. Д. Теряются. Переименование резервной таблицы в оригинале не восстанавливает их магически.

Других вариантов включают в себя:

  • экспорта исходной таблица, включая гранты. После внесения изменений откройте таблицу и повторно импортируйте ее.
  • переименуйте исходный стол, который сохранит гранты и т. Д .; затем воссоздайте таблицу с исходным именем (возможно, в качестве выбора из переименованного). Когда все будет готово, отбросьте новую таблицу и переименуйте ее обратно в исходное имя. Но будьте осторожны - не увлекайтесь и бросайте реальный стол по ошибке. Если ваша проверка требует каких-либо грантов и т. Д., Тогда вам придется применять их к новой таблице; индексы будут нуждаться в разных именах, которые могут усложнить это.
  • дублируйте таблицу в другой схеме (например, с экспортом/импортом) и протестируйте ее там, затем выбросьте ее. Опять осторожно, какая копия вы работаете/падаете. При необходимости вы можете дублировать связанные таблицы, чтобы поддерживать целостность.
  • отбросьте исходную таблицу, заново создайте ее, измените и подтвердите, затем опустите ее снова; и use flashback drop для восстановления исходной таблицы. Вы должны быть уверены, что ваш флешбэк, который он настроил для поддержки, - так что он должен быть достаточно большим, чтобы удерживать обе упавшие таблицы, например. Быстро, но импорт/экспорт могут быть более безопасными.
  • возвратите свои индивидуальные изменения один за другим, что является рискованным, если вы проверяете изменения - легко пропустить что-то.

Вам также необходимо рассмотреть любые ссылочные ограничения (PK/FK) и повлияет ли их на переименование или падение/воссоздание/экспорт/импорт.

Смежные вопросы