Создание тренировочной базы, копия, восстановление (Oracle)

Добрый день!

Подскажите как создать резервную копию данных для Oracle, как из неё восстанавливаться и как вообще создать на том же сервере БД для тренировки? Т.е. чтобы пользователи и их лицензии сохранились и в тренировочной базе. Возможно ли такое?
Я сделал всё по интуиции: экспорт схемы(TS), создание новой схемы(TSTRAIN), импорт данных в новую схему(TSTRAIN). Пытаюсь войти в новую схему - получаю ошибку "ORA-00902: неверн. тип данных"

PS. SqlMonitor выдал ошибку вот в такой конструкции:
SELECT *
FROM TABLE
(CAST
("TSTRAIN"."fn_GetLoginInfo" ('SYS' )AS "TSTRAIN"."tbl_GetLoginInfo"
)
)

Нравится

13 комментариев

Сделайте обычный дамп. При необходимости, восстановите в нужную схему.

"Евгений Либин" написал:Сделайте обычный дамп. При необходимости, восстановите в нужную схему.

Я же написал, что всё так и сделал. Сделал дамп схемы, восстановил в нужную схему. Или имеется ввиду фул дамп базы делать?

Я не остановился на достигнутом, стал копать и обнаружил что не скомпилировалась функция fn_GetLoginInfo. А не скомпилировалась она из-за того, что при восстановлении из дампа в схему почему-то не создались типы, в частности t_GetLoginInfo. Поэтому я создал типы в схеме TSTRAIN с помощью скрипта CreateTypes.sql, идущего в установочном клиенте, перекомпилировал все процедуры и функции и, о чудо, всё заработало.

Остался открытым ВОПРОС: как же всё-таки правильно создавать резервную копию? Подозреваю что полного дампа будет достаточно. Но, не будет ли потом проблем с лицензиями пользователей? Ведь если пользователи Терасофт привязываются к полю user# из таблицы sys.user$, то нет никаких гарантий что после восстановления у пользователей не изменится значение user#.

А какая версия TSCRM у вас установлена?

CRM 3.3.1.42, Oracle 10.2.0.3, но дело, мне кажется, не в версии CRM. По непонятным причинам из дампа не были воссозданы типы в новой схеме, в принципе, есть лог заливки дампа.

У одного из моих заказчиков 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 не пришлось, потому как разработчики предусмотрели для этого параметр вызова процедуры, и по умолчанию (без указания этого параметра) старые роли не удаляются.

Отлично.:twisted:
Мои поздравления.

Показать все комментарии