2012-05-06 2 views
0

У меня есть работающая база данных с только одной dba (т. Е. Кроме системного) «abc». Под этим пользователем оракула у меня есть таблицы, представления, последовательности, процедуры, функции и т. Д. Теперь мне нужно скопировать и данные и схему в другую базу данных на другой машине, на которой уже работает десяток схем (по одному под каждой отдельной dba). У меня есть следующие проблемы:Резервное копирование и восстановление текущей схемы в другой базе данных, которая уже имеет другие схемы

(1) Перед переходом на новую машину мне нужно переименовать схему на старой машине, от «abc» до «pqr».

(2) Внутри моих процедур и функций я использую AUTHID CURRENT_USER, поэтому вам нужно использовать «abc». квалификатор перед именем таблиц, представлений, последовательностей, процедур, функций. При изменении имени схемы есть и автоматический способ изменения квалификаторов.

(3) Для копирования данных я знаю только один способ, который заключается в том, чтобы сделать резервную копию базы данных только одного пользователя «abc» (т. Е. Не делать резервную копию sys, system). Затем восстановите это в новой базе данных. Может ли это в любом случае уничтожить другие схемы или их данные.

(4) В моей схеме я создаю пользователей оракула с ограниченными правами, используя процедуру. Новые имена пользователей хранятся в таблице «Пользователи». Я также создаю роли базы данных и связывая пользователей с ролями. Ролевые имена хранятся в таблице ролей. При переходе на новую машину я должен убедиться, что префикс моих пользователей и роли с чем-то уникальным, поэтому я не мешаю пользователям оракула, созданным другими схемами.

(5) Я знаю, что в новой базе данных должен быть новый пользователь dba под названием «pqr». Должен ли я также иметь привилегию sysdba. Я не несу ответственность за всю базу данных на новой машине, я отвечаю только за свою схему. Будучи sysdba, могу ли я в любом случае нанести вред другим dbas (например, сбросить их или изменить их схемы). Если у меня нет привилегии sysdba, какие ограничения я получу. Я использую OracleText, поэтому вам нужно использовать некоторые встроенные пакеты. Мне также нужно создать физический каталог в файловой системе в окнах. Я также должен создавать, изменять (сменить пароль), ронять роли и пользователей через хранимые процедуры при подключении к базе данных с помощью «pqr».

Как старые, так и новые базы данных работают на отдельных выделенных машинах. Его оконный сервер 2003 с оракулом 10gr1.

ответ

1

Самый простой вариант будет использовать Oracle export utility (классический или DataPump) принять логическую резервную копию abc схемы в первой базе данных и импортировать резервную копию с помощью Oracle import utility в новую базу данных. Если вы используете классическую версию, вы должны использовать параметры FROMUSER и TOUSER, чтобы указать, что вы хотите импортировать данные в другую схему. Если вы используете версию DataPump, вы должны использовать параметр REMAP_SCHEMA. Версия DataPump будет более эффективной, если у вас будет относительно большой объем данных.

К сожалению, не существует способа изменить явные классификаторы схемы. Вам нужно будет отредактировать код после его импорта или вывести код из исходной системы управления, отредактировать код и развернуть его в новой базе данных.

+0

Спасибо, Джастин. Включает ли логическое резервное копирование данные? Нужно ли pqr быть sysdba? – Atif

+0

@Atif - Да, экспорт включает данные по умолчанию (вы можете указать, что вам не нужны данные). Ни одна из схем не должна иметь роль «DBA». –

+0

Где запускать команду expdb? Он не работает в командной строке или sqlplus. – Atif

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