Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > экспорт схемы оракла


Автор: chief39 4.3.2013, 18:18
Здравствуйте, оракулы или 
...доктор, здравствуйте, у меня такое... smile

Если кратко - надо суметь сделать экспорт схемы так, как это умеет скл девелопер (в insert'ы). Причем делать это не ручками, а из коммандлайна/мавена

Ели сложно:

Чтоб перезапускать лоад тесты надо загружать довольно сложный связный набор данных в схему оракла и запускать тесты, собственно.
На дев машинах и на лоад инжекторе oracle clienta нету. И не будет(то есть пока поставят - наступит осень). 
На серверах оракла стабильности нету. Слитые дампы могут исчезнуть. Плюс еще дополнительные грантсы можно ждать до осени.


Что делаем - первым шагом специальная тулза через интерфейсы системки генерит данные в оракле.
Потом выливаем ручками схемы в insert'ы через СКЛ девелопер, складываем в свн. И это все быренько заливается перед очередным запуском тестов.

* Хотел сделать тупо exp с инжектора(/дев машин) - но клиента нету и решение, соответственно, не портабельное.
* Хотел заюзать datapump - но надо долго выбивать гранты, следить чтоб никто ничего не почистил на серваке, за это время ишак с падишахом подохнут. И все равно прекрасным утром выяснится что кто-то что-то там поломал и надо начинать волынку с доступами заново.

Рыскал по скл девелопера в мечтах найти cmd export аналогичный его ГУИшному экспорту - но не нашел. :(


Может есть какое-то решение по автоматизации экспорта на клиент? 

ЗЫ: Я знаю что всю эту организацию надо расстрелять, не капайте соль на помидор smile










Автор: LSD 5.3.2013, 10:17
Я что-то так и не понял, получить эталонные скрипт сетапа базы (с инсертами, блекджеком и Кайтом) можно или нет?

Если есть доступ к эталонному серверу, можно взять DbUnit, http://www.dbunit.org/faq.html#extract датасет из существующей базы. А потом заливать на тестовую базу перед каждым прогоном тестов. Интеграция с Мавеном присутствует.

Автор: chief39 5.3.2013, 11:21
То-то и оно, надо бы выгребать все одной большой совковой лопатой :(

Там две схемы на самом деле, одну еще можно ручками переселектить, а вторая схема - тесно интегрированной системы, без которой не полетит.
И вот в ней полно табличек, процедур, триггеров и прочей радости.




Автор: LSD 5.3.2013, 12:57
Цитата(chief39 @  5.3.2013,  12:21 Найти цитируемый пост)
И вот в ней полно табличек, процедур, триггеров и прочей радости.

Дай угадаю, у вас нет нормальных скриптов для сетапа схемы с нуля?


И как часто меняется схема? Можно один раз экспортировать DDL в файл и прогнать его один раз?

Автор: chief39 5.3.2013, 16:42
Цитата(LSD @  5.3.2013,  12:57 Найти цитируемый пост)
Цитата(chief39 @  5.3.2013,  12:21 )
И вот в ней полно табличек, процедур, триггеров и прочей радости.

Дай угадаю, у вас нет нормальных скриптов для сетапа схемы с нуля?


И как часто меняется схема? Можно один раз экспортировать DDL в файл и прогнать его один раз? 

Дядька, видел бы ты этот п... епелац. Тут без трех литров килкене внутриутробно не подходи  smile 

Внедрю некие именования. Смотри что есть(одна сущность - один хост):

L - машина для лоад тестов, клиентская как бы.
T - собственно "наша" системка. Тонны заброшенного кода, который ваш покорный слуга уже несколько месяцев реверс инжинирит с нуля.
   У нее оракл схемка T-DB
A - системка наших друзей. Это блекбоксище, код которой еще фиг достанешь. Но все-равно реверс инжинирить ее некогда.
     Тут есть питон, си и много других полезных плюшек.
   У нее схемка A-DB.
     В схемке полно пл/скл. И процедур и триггеров.

Между собой эта дрянь связана сложными многоходовыми асинхронными сценариями через RMI и SOAP.
Внутри системок асинхронности тоже до и больше.
И все это густо замешано хитрожопой бизнес-логикой, в которой полно HEX-сов, каждая позиция в которых вполне значима.
Плюс, многое из этого написано по дрянному, кое-что молча заброшено, все без юнит тестов, не говоря уже про интеграционные.

Рушится маленький кусочек - все летит в тартарары и дебажить это очень неудобно.
Никогда не знаешь заранее - покорежил что-то в базейке или сесурити ВНЕЗАПНО рубануло какой-то портец, за которым таится одна из вспомогательных системок.

Вырвалось smile

Пытались сделать нормально, моя команда прогавкала кучу времени создавая норм тесты, подкручивая гайки и выравнивая гвозди.
Но наша цель - лоад тесты и я больше тянуть не могу. 

Что я сделал:
L через стандартные интерфейсы T генерит и вставляет данные в T-DB. Она, в свою очередь, вставляет связанные данные в A-DB через A.
Одновременно L пишет ключевую часть этих данных локально в HSQL

После этого всего я имею желание сдампить T-DB и A-DB. Они заработают строго в паре, там дублирование - не балуй. В пару к этим дампам идет HSQL с ключевыми данными.
Вот эти три снапшота можно сбросить/залить на любой преднастроеный экземпляр системы и тут же взлететь.

Один минус - T-DB и A-DB приходится вытягивать скл девелопером вручную.
T-DB - только данные. A-DB - всё-всё. 

Потом оно льется мавен скл плагином на ура(но переедем частично на ант).
Затык в экспорте.

На текущий момент поднять схему с нуля DDL-ем, базовыми DML-ями, а потом своими DML-лями не канает. Базовые ДМЛи надо тоже разбирать посимвольно.
A-DB - вообще темный преднастроенный лес.

Унтакое...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)