Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

30.07.2007, 10:00
|
|
Познающий
Регистрация: 08.09.2005
Сообщений: 38
Провел на форуме: 324316
Репутация:
44
|
|
БД в Oracle 8.1.7
на работе стоит Oracle (я в нем еще не очень понимаю) и надо навоять батник который бы удалял используемую базу и заливал из дампа новую базу, просто по области есть филиалы и там тоже эта база стоит, обновлять в ручную там никто не умеет а мне ездить в командировки не очень охота вот и решил все решить по средствам дабл клика на бат фаиле.
Вот есть батник который просто ипортирует базу из дампа, нужно чтобы перед заливкой он вычищал полностью базу и уже потом заливал туда таблицы
Код:
copy create_user.sql temp.pack
echo exit; >>temp.pack
sqlplus sys/change_on_install@rtidb @temp.pack
del temp.pack
imp sys/change_on_install@rtidb FILE="db_arh.DMP" LOG="db_arh.log" FROMUSER=db_arh TOUSER=db_arh IGNORE=Y FEEDBACK=1000
заранее благодарен, плюсики гарантирую
|
|
|

30.07.2007, 11:54
|
|
Познающий
Регистрация: 08.09.2005
Сообщений: 38
Провел на форуме: 324316
Репутация:
44
|
|
P.S. вот начинка фаила create_user.sql
Код:
DROP USER db_arh;
CREATE USER db_arh IDENTIFIED BY "1"
DEFAULT TABLESPACE USERS
QUOTA UNLIMITED ON USERS QUOTA UNLIMITED ON TEMP;
GRANT CREATE ANY TABLE TO db_arh;
GRANT DELETE ANY TABLE TO db_arh;
GRANT DROP ANY TABLE TO db_arh;
GRANT INSERT ANY TABLE TO db_arh;
GRANT SELECT ANY SEQUENCE TO db_arh;
GRANT SELECT ANY TABLE TO db_arh;
GRANT UNLIMITED TABLESPACE TO db_arh;
GRANT UPDATE ANY TABLE TO db_arh;
GRANT "DBA" TO db_arh;
GRANT "CONNECT" TO db_arh;
GRANT "JAVA_ADMIN" TO db_arh;
GRANT "JAVADEBUGPRIV" TO db_arh;
GRANT "JAVA_DEPLOY" TO db_arh;
GRANT "JAVAIDPRIV" TO db_arh;
GRANT "JAVASYSPRIV" TO db_arh;
GRANT "JAVAUSERPRIV" TO db_arh;
|
|
|

30.07.2007, 12:25
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
Добавь в начало дампа:
Код:
DROP DATABASE `your_database`;
Должно сработать
|
|
|

30.07.2007, 16:22
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
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
Вот и всё... Схема готова к работе! И полностью соответствует дампу! На всё про всё, при умелых действиях эта операция не займёт больше пяти минут...
Если у вас возникнут ещё какие-либо вопросы, я с радостью отвечу.
|
|
|

30.07.2007, 21:18
|
|
Познающий
Регистрация: 08.09.2005
Сообщений: 38
Провел на форуме: 324316
Репутация:
44
|
|
большое спасибо, очень выручил.
но есть небольшие нюансы.
1)доступ к базе только с локальной сети которая в свою очередь не имеет выхода в другие сети и интернет, так что пароль не столь значим.
2)база нужна полная, только с той разницей что у нас она подлежит редактированию а в филиалах только просмотр информации, обновление базы примерно раз в месяц чтобы данные сильно не устаревали.
3)мне нужен батник именно потому что в филиалах нет программеров, они в компах то плохо соображают а не то что в базе оракл, нужен тупой дабл клик на фаиле и все готово.
P.S. как только приеду с командировки обязательно испробую вашу схему =)
Последний раз редактировалось MegaZLO; 30.07.2007 в 21:26..
|
|
|

31.07.2007, 11:42
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Ok. Ясно... Но меня всё же коробят дефолтные пассы на аккаунты... Ладно, когда приедешь стучи - набросаем батник... Просто я смотрю, действительно много ньюансов, которые ты не указал в начале... В общем если что - к твои услугам...
|
|
|

10.08.2007, 09:32
|
|
Познающий
Регистрация: 08.09.2005
Сообщений: 38
Провел на форуме: 324316
Репутация:
44
|
|
ну вот я и приехал с командировки,
вобщем взял свежую базу, батник который выкладывал в первом посте и запустил весь процес обновления базы, где то показал что обновил записи а где то ошибки сыпались,
лог тут rambler.iplot.ru/db_arh.rar
хотелось бы до боли все проще =)
ченить типо
DROP DATABASE bla_bla;
CREATE DATABASE bla_bla;
ну и дальше сам процес выставления привелегий и заливки базы =)
Последний раз редактировалось MegaZLO; 10.08.2007 в 09:36..
|
|
|

10.08.2007, 12:09
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Хм... Насколько я могу судить - импорт заткнулся на таблицах "APPLY" и "APPLY_INV", причём заткнулся в связанных с ними тригерах/процедурах... Обычно такой затык происходит в конструкциях типа SELECT INTO ... , если возвращается набор из более чем одной записи. В любом случае, не обладая дампом, я ничего конкретного сказать не смогу... А все остальные ошибки - наведённые, они возникли из-за нарушения целостности по ключам.
Что касается экспорта-импорта, я опять же - категорически против таскания всех схем из одной базы в другую при отсутствии явных на то причин, поэтому привожу скрипты, которые призваны облегчить экспорт-импорт рабочей схемы:
1) Скрипт, который пересоздаёт схему (recreate_schema.sql):
drop user DB_ARH cascade;
create user DB_ARH identified by 1;
grant connect, resource to DB_ARH;
grant unlimited tablespace to DB_ARH;
alter user DB_ARH default tablespace USERS;
exit;
2) Скрипт осуществления экспорта схемы (export.cmd):
@echo off
cls
echo.
echo ----------------------------------------------------------------------
echo Copyright (C): 2007, DaMaGeLaB, groundhog mailto:groundhog@cccp.su
echo Special realize for MegaZLO
echo ----------------------------------------------------------------------
echo.
echo Today is [%date%]
echo.
echo Ready to export schema 'DB_ARH'.
set /p temp=Press ENTER to continue or CTRL+C to exit...
echo.
echo Exporting of Oracle schema 'DB_ARH'
@exp userid=db_arh/1@rtidb compress=y file=db_arh.dmp log=db_arh_export.log
echo.
echo ----------------------------------------------------------------------
echo [!] Export done. See log file for errors and additional information.
echo ----------------------------------------------------------------------
echo.
set /p temp=Press ENTER to continue...
echo.
3) Скрипт осуществления импорта схемы (import.cmd):
@echo off
cls
echo.
echo ----------------------------------------------------------------------
echo Copyright (C): 2007, DaMaGeLaB, groundhog mailto:groundhog@cccp.su
echo Special realize for MegaZLO
echo ----------------------------------------------------------------------
echo.
echo Today is [%date%]
echo.
echo Ready to import schema 'DB_ARH'. Schema 'DB_ARH' about to be dropped...
set /p temp=Press ENTER to continue or CTRL+C to exit...
echo.
echo Recreating schema 'DB_ARH'...
@sqlplus "/ as sysdba" @recreate_schema.sql >> db_arh_import.log
echo.
echo Ready to import data to schema 'DB_ARH'...
set /p temp=Press ENTER to continue or CTRL+C to exit...
echo.
echo Importing data to schema 'DB_ARH'...
@imp userid=db_arh/1@rtidb file=db_arh.dmp fromuser=db_arh touser=db_arh log=db_arh_import.log
echo.
echo ----------------------------------------------------------------------
echo [!] Import done. See log file for errors and additional information.
echo ----------------------------------------------------------------------
echo.
set /p temp=Press ENTER to continue...
echo.
Последовательность действий очень проста:
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
|
|
|

10.08.2007, 14:39
|
|
Познающий
Регистрация: 08.09.2005
Сообщений: 38
Провел на форуме: 324316
Репутация:
44
|
|
у меня более простенький батник для бекапа =)))
Код:
EXP.EXE sys/change_on_install@rtidb OWNER = DB_arh FILE=c:\arh\DB_arh.DMP LOG=c:\arh\DB_arh.LOG
спасибо за помощь, результат смогу увидеть только в понедельник.
|
|
|

10.08.2007, 15:02
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Очень надеюсь, что поможет. Если что - к вашим услугам.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|