ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

БД в Oracle 8.1.7
  #1  
Старый 30.07.2007, 10:00
Аватар для MegaZLO
MegaZLO
Познающий
Регистрация: 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
заранее благодарен, плюсики гарантирую
 
Ответить с цитированием

  #2  
Старый 30.07.2007, 11:54
Аватар для MegaZLO
MegaZLO
Познающий
Регистрация: 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;
 
Ответить с цитированием

  #3  
Старый 30.07.2007, 12:25
Аватар для Helios
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме:
1469995

Репутация: 589
Отправить сообщение для Helios с помощью ICQ
По умолчанию

Добавь в начало дампа:
Код:
DROP DATABASE `your_database`;
Должно сработать
 
Ответить с цитированием

  #4  
Старый 30.07.2007, 16:22
Аватар для groundhog
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
Вот и всё... Схема готова к работе! И полностью соответствует дампу! На всё про всё, при умелых действиях эта операция не займёт больше пяти минут...

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

  #5  
Старый 30.07.2007, 21:18
Аватар для MegaZLO
MegaZLO
Познающий
Регистрация: 08.09.2005
Сообщений: 38
Провел на форуме:
324316

Репутация: 44
По умолчанию

большое спасибо, очень выручил.
но есть небольшие нюансы.
1)доступ к базе только с локальной сети которая в свою очередь не имеет выхода в другие сети и интернет, так что пароль не столь значим.
2)база нужна полная, только с той разницей что у нас она подлежит редактированию а в филиалах только просмотр информации, обновление базы примерно раз в месяц чтобы данные сильно не устаревали.
3)мне нужен батник именно потому что в филиалах нет программеров, они в компах то плохо соображают а не то что в базе оракл, нужен тупой дабл клик на фаиле и все готово.

P.S. как только приеду с командировки обязательно испробую вашу схему =)

Последний раз редактировалось MegaZLO; 30.07.2007 в 21:26..
 
Ответить с цитированием

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

Репутация: 1318


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

Ok. Ясно... Но меня всё же коробят дефолтные пассы на аккаунты... Ладно, когда приедешь стучи - набросаем батник... Просто я смотрю, действительно много ньюансов, которые ты не указал в начале... В общем если что - к твои услугам...
 
Ответить с цитированием

  #7  
Старый 10.08.2007, 09:32
Аватар для MegaZLO
MegaZLO
Познающий
Регистрация: 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..
 
Ответить с цитированием

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

Репутация: 1318


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

Хм... Насколько я могу судить - импорт заткнулся на таблицах "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
 
Ответить с цитированием

  #9  
Старый 10.08.2007, 14:39
Аватар для MegaZLO
MegaZLO
Познающий
Регистрация: 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  
Старый 10.08.2007, 15:02
Аватар для groundhog
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


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

Очень надеюсь, что поможет. Если что - к вашим услугам.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проведение SQL инъекций в Oracle. [53x]Shadow Авторские статьи 35 18.10.2009 09:13
Обнаружение Sql инъекций в Oracle, часть первая k00p3r Чужие Статьи 1 12.07.2005 08:51
SQL инъекция и Oracle, часть 2 k00p3r Чужие Статьи 0 13.06.2005 11:24
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ