![]() |
БД в Oracle 8.1.7
на работе стоит Oracle (я в нем еще не очень понимаю) и надо навоять батник который бы удалял используемую базу и заливал из дампа новую базу, просто по области есть филиалы и там тоже эта база стоит, обновлять в ручную там никто не умеет а мне ездить в командировки не очень охота вот и решил все решить по средствам дабл клика на бат фаиле.
Вот есть батник который просто ипортирует базу из дампа, нужно чтобы перед заливкой он вычищал полностью базу и уже потом заливал туда таблицы Код:
copy create_user.sql temp.pack |
P.S. вот начинка фаила create_user.sql
Код:
DROP USER db_arh; |
Добавь в начало дампа:
Код:
DROP DATABASE `your_database`; |
Helios, вы великий знаток Oracle? Нефик тогда советовать чего не знаете! :)
MegaZLO, во-первых, смените дефолтный пасс на аккаунт sys... А то потом можете увидеть ваши базы у конкурентов. Во-вторых, вы не должны тасовать между филиалами всю базу oracle! Зачем вам это? Зачем тасовать системные объекты и прочую лабудень? Почему вы не ограничитесь дампом рабочей схемы или схем (если у вас их несколько)? Я бы вам советовал отказаться от автоматизации с помощью bat-файлов на первое время, иначе вы ни в чём не разберётесь, так и будете тупо тыкать по батникам и удивляться почему оно не работает... Давайте разберём всё по шагам, и делайте эти команды вручную, до тех пор, пока не поймёте их смысл: 1) Заходим в cmd и делаем экспорт рабочей схемы (должен заметить, что понятия "пользователь" и "схема" в терминах Oracle это одно и то же): Код:
exp userid=user/passwd@sid compress=y file=user.dmp log=user.logДля вашего примера команда должна иметь такой вид: Код:
exp userid=db_arh/1@rtidb compress=y file=db_arh.dmp log=db_arh.log2) Теперь перейдём к импорту схемы из файла... Опять же должен заметить - импорт данных Oracle ведёт в тот же tablespace, который имелся в экспортируемой схеме... Насколько я могу судить из ваших примеров, ваши схемы используют tablespace с именем USERS и вам не потребуется дополнительно создавать другой tablespace, но на всякий случай далее приведу команды на создание нового tablespace. Итак приступим: Перед импортом схемы необходимо удалить старую... Заходим в mysqlplus, выполнив в cmd команду: Код:
mysqlplus "/ as sysdba"Далее удаляем старую схему: Код:
DROP USER DB_ARH CASCADE;Код:
CREATE USER DB_ARH IDENTIFIED BY 1;Код:
GRANT CONNECT, RESOURCE TO DB_ARH;Код:
CREATE TABLESPACE ARH DATAFILE 'ARH.DBF' SIZE 1024M ONLINE;Код:
SELECT NAME FROM V$DATAFILE;Код:
ALTER USER DB_ARH DEFAULT TABLESPACE ARH;Код:
ALTER USER DB_ARH DEFAULT TABLESPACE USERS;Код:
imp userid=user/passwd@sid file=user.dmp fromuser=user1 touser=user2Для вашего примера команда должна иметь такой вид: Код:
imp userid=db_arh/1@rtidb file=db_arh.dmp fromuser=db_arh touser=db_arhЕсли у вас возникнут ещё какие-либо вопросы, я с радостью отвечу. |
большое спасибо, очень выручил.
но есть небольшие нюансы. 1)доступ к базе только с локальной сети которая в свою очередь не имеет выхода в другие сети и интернет, так что пароль не столь значим. 2)база нужна полная, только с той разницей что у нас она подлежит редактированию а в филиалах только просмотр информации, обновление базы примерно раз в месяц чтобы данные сильно не устаревали. 3)мне нужен батник именно потому что в филиалах нет программеров, они в компах то плохо соображают а не то что в базе оракл, нужен тупой дабл клик на фаиле и все готово. P.S. как только приеду с командировки обязательно испробую вашу схему =) |
Ok. Ясно... Но меня всё же коробят дефолтные пассы на аккаунты... Ладно, когда приедешь стучи - набросаем батник... Просто я смотрю, действительно много ньюансов, которые ты не указал в начале... В общем если что - к твои услугам...
|
ну вот я и приехал с командировки,
вобщем взял свежую базу, батник который выкладывал в первом посте и запустил весь процес обновления базы, где то показал что обновил записи а где то ошибки сыпались, лог тут rambler.iplot.ru/db_arh.rar хотелось бы до боли все проще =) ченить типо DROP DATABASE bla_bla; CREATE DATABASE bla_bla; ну и дальше сам процес выставления привелегий и заливки базы =) |
Хм... Насколько я могу судить - импорт заткнулся на таблицах "APPLY" и "APPLY_INV", причём заткнулся в связанных с ними тригерах/процедурах... Обычно такой затык происходит в конструкциях типа SELECT INTO ... , если возвращается набор из более чем одной записи. В любом случае, не обладая дампом, я ничего конкретного сказать не смогу... А все остальные ошибки - наведённые, они возникли из-за нарушения целостности по ключам.
Что касается экспорта-импорта, я опять же - категорически против таскания всех схем из одной базы в другую при отсутствии явных на то причин, поэтому привожу скрипты, которые призваны облегчить экспорт-импорт рабочей схемы: 1) Скрипт, который пересоздаёт схему (recreate_schema.sql): Цитата:
Цитата:
Цитата:
1) Запускаем export.cmd на оракловом серваке и делаем дамп рабочей схемы DB_ARH главного офиса. При этом создастся файл db_arh.dmp и db_arh_export.log. Обязательно проверьте лог на отсутствие в нём ошибок. 2) Запускаем import.cmd в необходимом филиале на оракловом серваке. В ходе выполнения этого скрипта текущая схема DB_ARH будет удалена и заново создана, после чего в неё будут залиты данные. Данные будут браться из дампа db_arh.dmp. Так же обязательно проверьте лог db_arh_import.log на отсутствие в нём ошибок. Данные скрипты в более материальной форме можно взять отсюда: http://slil.ru/24721914 |
у меня более простенький батник для бекапа =)))
Код:
EXP.EXE sys/change_on_install@rtidb OWNER = DB_arh FILE=c:\arh\DB_arh.DMP LOG=c:\arh\DB_arh.LOG |
Очень надеюсь, что поможет. Если что - к вашим услугам.
|
мда чето не сложилось,
вобщем мои ход действий таков, сделал экспорт с главного сервера, Код:
Код:
дальше воспользовался своим батником (из первого поста) для импорта базы и все стало ок =) кстати как вариант у меня сеичас идея хоть и глупая и ламерская до безобразия но она работает, сначало запускаю import.cmd он бахает все а потом запускаю батник из первого поста и вуаля все готова =) P.s. это не вариант а временное решение =) тут лежат логи http://slil.ru/24731693 |
Ну что же... Давайте разберём ситуацию... Экспорт прошёл нормально, без всяких проблем... Проблемы возникли на шаге импорта... Причём походу на стадии инициализации схемы DB_ARH, т.е. при выполнении команды (в import.cmd):
Цитата:
Цитата:
|
ага именно sys change_on_intall
спасибо седня проверю |
вот лог
Код:
Код:
@echo offкак вариант запихать в него это Код:
DROP USER db_arh; |
Давайте попробуем... Я на текущем шаге могу только одно сказать, проблемы начинаются в момент пересоздания схемы DB_ARH, о чём свидетельствует:
Цитата:
Цитата:
|
Код:
@echo offлог Код:
SQL*Plus: Release 8.1.7.0.0 - Production on Втн Авг 14 11:02:59 2007p.s. как я понял в recreate_schema.sql закралась коварная ошибка |
Блин... В восьмёрке надо пасс в кавычки заключать... :(
Цитата:
|
разгадка близка =)
Код:
Export file created by EXPORT:V08.01.07 via conventional pathp.s. может добавить это и не мучаться ? Код:
GRANT CREATE ANY TABLE TO db_arh; |
Я думаю достаточно будет добавить строчку
Цитата:
|
огроменное спасибо !!!
все работает наа ура, теперь хоть в командировки ездить не придеться =) |
| Время: 15:40 |