ClonCD
Дата: 20.11.2009 11:24:25
Простой вопрос.
Существуют ли методы переноса объектных привилегий с помощью Data Pump?
Версия Оракла 11.1.
В документации неявно сказано, что системные права переносятся, а объектные - нет.
Что-то поменялось в этом вопросе по сравнению с классическим экспортом 9-й версии? Или как и раньше скрипт надо генерить?
Скрипт не проблема, просто непонятно, почему до сих пор это штатными утилитами не реализовано.
ClonCD
Дата: 20.11.2009 15:32:11
UPD.
По-прежнему Oracle 11.1 и data pump вместо обычного exp/imp
С объектными правами разобрался.
При выгрузке нескольких схем выгружаются объектные права только на объекты пользователя, под которым выполняю экспорт. Это ж ужас! Пожалуй даже на баг тянет.
Но это пол-беды, ручками скрипт сгенерил для этих прав.
Далее настоящая беда.
Я выгружаю несколько схем. Существует ссылочность между объектами РАЗНЫХ схем. На момент import-а таблиц прав на Reference в другую схему естественно ещё нет, внешние ключи теряю.
После загрузки всех таблиц и раздачи прав надо эти внешние ключи восстановить. Но как??? При повторном import-е утилитка impdb видит, что таблица есть и не делает с ней более никаких операций! Ключ TABLE_EXISTS_ACTION=APPEND работает только для данных, ref_constraint всё равно не создаются.
Что делать-то?? Опять что ли руками скрипт для переноса внешних ключей генерить??
Есть какая-то истинная последовательность переноса метаданных или проще сделать TRANSPORT TABLESPACES?
В документации заявлено "Cross-schema references are not exported unless the referenced schema is also specified in the list of schemas to be exported" - а получается, что даже включая referenced schema в лист - я всё равно не добиваюсь Cross-schema references.
Ужас-ужас.