Добрый день!
Подскажите как создать резервную копию данных для Oracle, как из неё восстанавливаться и как вообще создать на том же сервере БД для тренировки? Т.е. чтобы пользователи и их лицензии сохранились и в тренировочной базе. Возможно ли такое?
Я сделал всё по интуиции: экспорт схемы(TS), создание новой схемы(TSTRAIN), импорт данных в новую схему(TSTRAIN). Пытаюсь войти в новую схему - получаю ошибку "ORA-00902: неверн. тип данных"
PS. SqlMonitor выдал ошибку вот в такой конструкции:
SELECT *
FROM TABLE
(CAST
("TSTRAIN"."fn_GetLoginInfo" ('SYS' )AS "TSTRAIN"."tbl_GetLoginInfo"
)
)
Нравится
Сделайте обычный дамп. При необходимости, восстановите в нужную схему.
"Евгений Либин" написал:Сделайте обычный дамп. При необходимости, восстановите в нужную схему.
Я же написал, что всё так и сделал. Сделал дамп схемы, восстановил в нужную схему. Или имеется ввиду фул дамп базы делать?
Я не остановился на достигнутом, стал копать и обнаружил что не скомпилировалась функция fn_GetLoginInfo. А не скомпилировалась она из-за того, что при восстановлении из дампа в схему почему-то не создались типы, в частности t_GetLoginInfo. Поэтому я создал типы в схеме TSTRAIN с помощью скрипта CreateTypes.sql, идущего в установочном клиенте, перекомпилировал все процедуры и функции и, о чудо, всё заработало.
Остался открытым ВОПРОС: как же всё-таки правильно создавать резервную копию? Подозреваю что полного дампа будет достаточно. Но, не будет ли потом проблем с лицензиями пользователей? Ведь если пользователи Терасофт привязываются к полю user# из таблицы sys.user$, то нет никаких гарантий что после восстановления у пользователей не изменится значение user#.
У одного из моих заказчиков TSCRM 3.0.4 под Oracle 10.2.0.4. Впринципе, в первый раз при установки пришлось попотеть, а потом раз в сутки обычный дамп схемы. При необходимости, я разварачиваю этот дамп в другой схеме как тестовую для разработак. Вроде всё нормально работает.
Может у вас это был единоразовый глюк?
Что по этому поводу в логе написано?
Да, есть такое дело....
Дело в том, что import пытается создать объект с уже существующим OID.
У меня TS 3.0.4 и там типы не использовали.
Но в вашем случае можно попытаться сделать следующее.
Создаем отдельную схему, переносим туда все типы и делаем их Public.
Должно полуиться :smile:
"Евгений Либин" написал:У одного из моих заказчиков TSCRM 3.0.4 под Oracle 10.2.0.4. Впринципе, в первый раз при установки пришлось попотеть, а потом раз в сутки обычный дамп схемы. При необходимости, я разварачиваю этот дамп в другой схеме как тестовую для разработак. Вроде всё нормально работает.
Евгений, прошу еще раз проверить как всё работает при разворачивании дампа в другую схему. Столкнулся с тем, что при таком разворачивании можно работать в тестовой схеме только под пользователем SYS. При этом в "Администрирование->Права доступа к группам таблиц" вообще нет записей. Мне даже удалось установить причину: в таблице tbl_TableGroup корневая схема, впрочем как и все остальные, остались со старой схемой, соответственно функция fn_AdminUnitTableGroupRoleList ничего не возвращала. Этот момент я подправил (толлько для корневой записи). Права доступа к группам таблиц появились, но правда от основной схемы TS. При этом другие пользователи всё равно в тренировочной системе работать не могут. В логе получаю ошибку: "Текущий пользователь не имеет достаточно прав для просмотра данных".
В связи с такими мучениями хотелось бы повторить вопрос к разработчикам: как правильно делать бэкап и создавать тренировочную схему в БД Oracle.
Здравствуйте.
Я для тестирования баз на ORACLE создвал на том же экземляре новую схему и выгружал туда нужный дамп. Проблем не возникало. Одно, на что хочу обратить внимание, это то, что начиная только с версии 3.1.0 было организовано дублирование пользователей на уровне СУБД (кроме БД).
Котенко Александр.
После переноса дампа в другую схему нужно восопользоваться процедурой tsp_ReplaceSchema. Только там есть один момент. Єта процедура удаляет старые роли, поэтому ее нужно подправить:wink:.
Должно вам помочь
"Евгений Либин" написал:После переноса дампа в другую схему нужно восопользоваться процедурой tsp_ReplaceSchema. Только там есть один момент. Єта процедура удаляет старые роли, поэтому ее нужно подправить
Спасибо большое Евгений, всё получилось, права стали нормально для тренировочной схемы. Править процедуру tsp_ReplaceSchema не пришлось, потому как разработчики предусмотрели для этого параметр вызова процедуры, и по умолчанию (без указания этого параметра) старые роли не удаляются.