Показать сообщение отдельно

  #4  
Старый 30.07.2007, 16:22
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Helios, вы великий знаток Oracle? Нефик тогда советовать чего не знаете!

MegaZLO, во-первых, смените дефолтный пасс на аккаунт sys... А то потом можете увидеть ваши базы у конкурентов. Во-вторых, вы не должны тасовать между филиалами всю базу oracle! Зачем вам это? Зачем тасовать системные объекты и прочую лабудень? Почему вы не ограничитесь дампом рабочей схемы или схем (если у вас их несколько)? Я бы вам советовал отказаться от автоматизации с помощью bat-файлов на первое время, иначе вы ни в чём не разберётесь, так и будете тупо тыкать по батникам и удивляться почему оно не работает... Давайте разберём всё по шагам, и делайте эти команды вручную, до тех пор, пока не поймёте их смысл:

1) Заходим в cmd и делаем экспорт рабочей схемы (должен заметить, что понятия "пользователь" и "схема" в терминах Oracle это одно и то же):
Код:
exp userid=user/passwd@sid compress=y file=user.dmp log=user.log
Здесь: userid - имя схемы/пользователя которого вы будете дампить, passwd - пароль данной схемы, sid - SID вашей базы данных, параметр compress - определяет сжатие данных дампа, параметр file - файл, куда будут слиты данные, параметр log - файл журнала куда будет сыпаться вывод команды.

Для вашего примера команда должна иметь такой вид:
Код:
exp userid=db_arh/1@rtidb compress=y file=db_arh.dmp log=db_arh.log
Разумеется, что вместо 1 вам нужно поставить настоящий пароль этой схемы (причём посерьёзнее).

2) Теперь перейдём к импорту схемы из файла... Опять же должен заметить - импорт данных Oracle ведёт в тот же tablespace, который имелся в экспортируемой схеме... Насколько я могу судить из ваших примеров, ваши схемы используют tablespace с именем USERS и вам не потребуется дополнительно создавать другой tablespace, но на всякий случай далее приведу команды на создание нового tablespace. Итак приступим:

Перед импортом схемы необходимо удалить старую... Заходим в mysqlplus, выполнив в cmd команду:
Код:
mysqlplus "/ as sysdba"
Заметьте, эту команду нужно выполнять из админской учётной записи, из которой oracle был установлен.

Далее удаляем старую схему:
Код:
DROP USER DB_ARH CASCADE;
Создаём новую схему, пароль будет "1":
Код:
CREATE USER DB_ARH IDENTIFIED BY 1;
Назначаем права для этой схемы:
Код:
GRANT CONNECT, RESOURCE TO DB_ARH;
В случае, если экспортированная схема не использовала какой-то свой tablespace, следующие три строчки нужно пропустить, я их приведу просто для примера, в вашем же случае использовался tablespace USERS. Итак, создаём tablespace:
Код:
CREATE TABLESPACE ARH DATAFILE 'ARH.DBF' SIZE 1024M ONLINE;
Посмотреть уже имеющиеся tablespace можно с помощью запроса:
Код:
SELECT NAME FROM V$DATAFILE;
Связываем созданный tablespace c нешей схемой:
Код:
ALTER USER DB_ARH DEFAULT TABLESPACE ARH;
Все вышеприведённые команды были написаны для того, чтобы понять как создавать и назначать tablespace, если при импорте Oracle ругается, на то, что некоторые объекты из схемы пытаются использовать несуществующий tablespace. Если же, схема использовала стандартный tablespace USERS, после создания юзера/схемы мы просто даём команду:
Код:
ALTER USER DB_ARH DEFAULT TABLESPACE USERS;
Итак, схема создана, права назначены... Приступим к импорту данных в созданную схему. Для этого всё из того же cmd выполняем команду:
Код:
imp userid=user/passwd@sid file=user.dmp fromuser=user1 touser=user2
Здесь: userid - имя схемы/пользователя которого куда вы будете импортировать, passwd - пароль данной схемы, sid - SID базы данных, параметр fromuser - схема, из которой был сделан экспорт, параметр touser - схема в которую будет сделан импорт.

Для вашего примера команда должна иметь такой вид:
Код:
imp userid=db_arh/1@rtidb file=db_arh.dmp fromuser=db_arh touser=db_arh
Вот и всё... Схема готова к работе! И полностью соответствует дампу! На всё про всё, при умелых действиях эта операция не займёт больше пяти минут...

Если у вас возникнут ещё какие-либо вопросы, я с радостью отвечу.
 
Ответить с цитированием