Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: victim70 в Mar 10, 2012, 00:17



Титла: Дъмп на Oracle схема [решено - заобиколено]
Публикувано от: victim70 в Mar 10, 2012, 00:17
Имам следният проблем:
Опитвам се да дъмпна схемата до която имам достъп през sqlplus. Обаче дъмпа трябва да е във sql формата а не бинарният оракълски формат. Също така ми се иска в дъмпа да съществуват и функциите и процедурите които съм писал. Горе долу както го генерира за постгре pg_dump формата.
Целта е да прехвърля част от функциите и таблиците да работят локално на 2 машини, в случая когато се скапе мрежата към оракълският клъстера, за да не спира производствените логове.
Програма за синхронизиране и превключване на даните вече съм написал и тествал, обаче администратора на оракъл сървера е болен от вчера за минимум 3 седмици и немога да си сваля схемата за да я ъпдейтна на двата сървера, винаги стигам до двоичен дъмп, а той ми даваше SQL дъмп който с малко корекции на процедурите и полетата за дата се импортва лесно в локалното постгре.
Положението е напечено защото в базите не ми е силата, само ги ползвам, а мениджмънта не го разбира. За тях дали е драйвер, web апликация или база данни е все едно - нали си програмист.


Титла: Re: Дъмп на Oracle схема
Публикувано от: radoulov в Mar 10, 2012, 00:32
Пробвай с тези GUI tools (не sqlplus):

1. TOAD (commercial)
2. Oracle SQL Developer (free)





Титла: Re: Дъмп на Oracle схема
Публикувано от: victim70 в Mar 10, 2012, 08:57
Проблема е че, домеин контролера не ми позволява да инсталирам нищо. За да кача нещо - каквото и да е ми трябва администратора, а той е в болница. Имам само tora и sqlplus.
tora се троши много често а през sqlplus (оръкал клиент) стигам само до двоичен дъмп, а ми трябва дъмп в SQL формат и то само на мойта схема.
Благодаря за Oracle SQL Developer  [_]3  [_]3  [_]3 . Не знаех че има такъв тул. При първа възможност ще го кача и на служебният компютър.


Титла: Re: Дъмп на Oracle схема
Публикувано от: radoulov в Mar 10, 2012, 09:14
Разбирам.
Аз лично бих пробвал първо с TORA (трябва да има някъде export/unload в текстов формат).
Имай предвид, че Oracle SQL Developer трябва само да се копира, за да работи (не използва обичайните Windows installers).

Иначе DDL-може да бъде извлечен чрез get_ddl:

Чрез sqlplus

Код:
SET LONG 10000

SELECT dbms_metadata.get_ddl('TABLE', '<YOUR_TABLENAME>')
FROM DUAL;

SELECT dbms_metadata.get_ddl('VIEW', '<YOUR_VIEW_NAME>')
FROM DUAL;

...

Прочети това за ascii dump на данните:

http://tkyte.blogspot.com/2009/10/httpasktomoraclecomtkyteflat.html


Титла: Re: Дъмп на Oracle схема
Публикувано от: victim70 в Mar 10, 2012, 09:37
tora краши постоянно ако и дадеш заявка с голям изход. А иначе таблиците които се ползват са грубо около 40 и толкова изгледа и има около 40 записани процедури.
Процедурите са прости от по 10-30 реда но немога без тях а всяка таблица, изглед, процедура, тригер, и т.н.т да я листвам във файл е малко гадно.
Достатъчен проблем са ми сикуенсите (то те са намазани в същност персонално със моето любезно съдействие и за това искам да експортна свежо копие).
В програмата за синхронизиране бях обявил грешно променлива като int без да ползвам OCI дефинициите, която е long long


Титла: Re: Дъмп на Oracle схема
Публикувано от: bubu в Mar 13, 2012, 23:23
Тука във един друг форум пише, че може дъмп-а да го пуснеш през strings и така е възможно да го вземеш в sql формат.


Титла: Re: Дъмп на Oracle схема
Публикувано от: dilyan в Mar 14, 2012, 15:51
exp user/pass@instance full=y file=file_name log=x.log

би трябвало да свърши работа.


Титла: Re: Дъмп на Oracle схема
Публикувано от: victim70 в Mar 14, 2012, 19:58
exp user/pass@instance full=y file=file_name log=x.log

би трябвало да свърши работа.
Така става ако имам достъп до сървера. Проблема е че скоро няма да има кой да го извърши а аз нямам и достъп до шел. Имам достъп като system обаче това не помага. А таблиците функциите и изгледите са твърде много за да щракам всяка една на ръка и се ъпдейтват постоянно. За шастие тази седмица все още няма пропадания но статистиката сочи че на 2 седмици има по 3-4 пропадания за по 10-ина минути.
Трябва нещо да правя че другата остава малко време преди да се случи статистически нещо.


Титла: Re: Дъмп на Oracle схема
Публикувано от: romeo_ninov в Mar 14, 2012, 20:43
exp user/pass@instance full=y file=file_name log=x.log

би трябвало да свърши работа.
Така става ако имам достъп до сървера. Проблема е че скоро няма да има кой да го извърши а аз нямам и достъп до шел. Имам достъп като system обаче това не помага. А таблиците функциите и изгледите са твърде много за да щракам всяка една на ръка и се ъпдейтват постоянно. За шастие тази седмица все още няма пропадания но статистиката сочи че на 2 седмици има по 3-4 пропадания за по 10-ина минути.
Трябва нещо да правя че другата остава малко време преди да се случи статистически нещо.
това става ако имаш инсталиран целия клиент
https://forums.oracle.com/forums/thread.jspa?threadID=1021678


Титла: Re: Дъмп на Oracle схема
Публикувано от: victim70 в Mar 14, 2012, 23:19
Няма го в клиента. Само в сървера го има. Имам инсталиран Oracle instant client basic и sqlplus. Без администратора немога да инсталирам нищо. При всяко такова изпълнение домейн контролера ме реже и спирам да имам достъп до услуги в мрежата, докато не върна статуса на инсталацията такава каквато е записана.
Този тъп контролер е наложен заради Вин потребителите, но обхваща и линукските компютри.

//офф
На админите трябва да се забрани да ходят на ски и други адреналинови мероприятия според мене. И специален курс на тема 'как да не съм параноик поне един ден'


Титла: Re: Дъмп на Oracle схема
Публикувано от: radoulov в Mar 14, 2012, 23:23
Може би нещо изпускам,
ама, както казах, Oracle SQL Developer
не изисква инсталация и има wizard за export
(който включва и това, което искаш).


Титла: Re: Дъмп на Oracle схема
Публикувано от: romeo_ninov в Mar 14, 2012, 23:34
Няма го в клиента. Само в сървера го има. Имам инсталиран Oracle instant client basic и sqlplus. Без администратора немога да инсталирам нищо. При всяко такова изпълнение домейн контролера ме реже и спирам да имам достъп до услуги в мрежата, докато не върна статуса на инсталацията такава каквато е записана.
Този тъп контролер е наложен заради Вин потребителите, но обхваща и линукските компютри.

//офф
На админите трябва да се забрани да ходят на ски и други адреналинови мероприятия според мене. И специален курс на тема 'как да не съм параноик поне един ден'
Пак да повторя, трябва ви целия клиент или друг софтуер, както ви предложиха sqldeveloper, който само се дезархивира. изтеглете си го със джава машината за да не се мъчите с тази с отворен код (която вероятно имате инсталирана)
А по повод параноята - сигурността трябва да помага на бизнеса, не да му пречи, това научете вашия админ и вашия шеф


Титла: Re: Дъмп на Oracle схема
Публикувано от: MairJ в Mar 15, 2012, 00:33
Здравей,

Не си споменал никъде коя версия е Оракъл и платформата.
До колкото разбрах искаш само да имаш DDL на всички обекти в определена схема.
Има два бързи варианта:
1.Да извадиш всички DDL.Мета-скрипта ще ти даде команди как да извадиш всеки един обект в желаната схемата след като го пуснеш.
set pages 10000
set head off
set lines 1000
set long 30000
set feedback off
select 'select dbms_metadata.get_ddl('''||object_type||q'!','!'||object_name||q'!','!'||owner||q'!') from dual;!'
from dba_objects
where owner='SCHEMA_OWNER'
/

2.Това което ползва Оракъл ДБА е expdp CONTENT=METADATA_ONLY  и след това impdp SQLFILE.



Титла: Re: Дъмп на Oracle схема
Публикувано от: romeo_ninov в Mar 15, 2012, 07:11
....
2.Това което ползва Оракъл ДБА е expdp CONTENT=METADATA_ONLY  и след това impdp SQLFILE.
impdp/expdp т.е. Data Pump го има в 10 и по-горни версии


Титла: Re: Дъмп на Oracle схема
Публикувано от: radoulov в Mar 15, 2012, 22:34

....
2.Това което ползва Оракъл ДБА е expdp CONTENT=METADATA_ONLY  и след това impdp SQLFILE.

DP изисква достъп до host-а ...
Освен това, с metadata_only, разбира се, няма да може да импортира данните.


Титла: Re: Дъмп на Oracle схема
Публикувано от: romeo_ninov в Mar 15, 2012, 22:55

....
2.Това което ползва Оракъл ДБА е expdp CONTENT=METADATA_ONLY  и след това impdp SQLFILE.

DP изисква достъп до host-а ...
Освен това, с metadata_only, разбира се, няма да може да импортира данните.
Не, не иска, последния sqldeveloper (бетата) го може от работна станция. И предлага доста богат избор от опции само схема, само данни, и двете, избрани обекти и т.н.


Титла: Re: Дъмп на Oracle схема
Публикувано от: radoulov в Mar 15, 2012, 23:09
Мисля, че dump file-а се създава само на database server-а ...
Знам, че DP може да се конфигурира и стартира от SQL Developer.

Може да има и нови възможности, които не познавам.


Титла: Re: Дъмп на Oracle схема
Публикувано от: victim70 в Mar 15, 2012, 23:40
impdb/expdb Го няма като част от Instantclient basic. Пробвах да кача оракъл като инсталация, обаче сменя променливи на обкръжението, и когато го имам качен и работещ не ми дава да се свържа към мрежата и активните директории или LDAP вече незнам от къде взема всички права и достъпи ме реже. В този случай мога да дъмпа но не ме допуска до услугата, не мога да се логна никъде.
sqldeveloper работи частично заради несъвместимост със java. Дразнещото е че на малки експорти на малките схеми работи, парсват се и се импортват без проблеми на постгре-то. На големият експорт запълва паметта суапа и се троши с грешки в java след 2-3 часа работа. Описанието го има и то е стара версия на Java. А като опитам да подновя java пак ми реже достъпа до фирмените услуги. Иначе за моят случай е супер тулче като да пробвам дадено нещо дали работи. Но е по-бавен от директният селект от метадатата.

Точно DDL-a ми трябва на всички записани функции и процедури, изгледи, тригери, таблици и данните в тях, броячи, линкове към други инстанции (това май не ми трябваше, но не съм сигурен).
Като ги селектна прави дъмп от 12-15 гигабайта, обаче парсера след това не харесва нещо към 60000 ред, а с vim редакторa немога да го отворя в разумно време за да видя какво не му харесва. Опитах и след 2 часа го прекъснах. Определено това е за сега един от начините, стига да разбера какво става и какво не харесва транслатора.

Утре ще пробвам да пусна нат на единят сървер, и на моят компютър да сложа оръкъл, дано се излъже домейн контролера.

Друг вариянт е ако някой знае как се лъже домейн контролер че всичко е такова каквото трябва да е. Или да крадна нет от входната оптика и да си влезна през VPN-a само тогава не се проверява компютъра и има достъп.

Цялата тази гимнастика стана за 4 часа преди 2 месеца с прост expdp или беше exp и парсване на изхода му през мигриращият скрипт.

И за 12к евро тези дето осигуряват миграцията можеха да си напънат з...... да напишат и източвачката на сорса. И без това миграциите са ограничени от оръкал само към постгре, а от другите бази имат поне по 3-5 алтернативи.


Титла: Re: Дъмп на Oracle схема
Публикувано от: radoulov в Mar 15, 2012, 23:56
Това, което се опитваш да направиш, не е банално - миграция от Oracle към PostgreSQL.
Можеш да опиташ на части:

1. Първо export само на мета-данни: ddl за PL/SQL (packages, procedures, functions ...), tables, indexes, triggers, sequences - без данни!
    Така няма да имаш проблеми с размера на export file-а.
2. Подреди по големина таблиците и започни да ги export-ваш една по една (първо най-големите, после по-малките заедно).
    Имай предвид, че ако имаш големи таблици (> 1G) , може да се наложи да използваш друг tool (ne SQL Developer).


Титла: Re: Дъмп на Oracle схема
Публикувано от: radoulov в Mar 16, 2012, 00:05
По-важният въпрос е: защо трябва да използвате различни бази данни?
Не можете ли само Oracle или само PG да използвате?


Титла: Re: Дъмп на Oracle схема
Публикувано от: victim70 в Mar 16, 2012, 00:46
Това, което се опитваш да направиш, не е банално - миграция от Oracle към PostgreSQL.
Можеш да опиташ на части:

1. Първо export само на мета-данни: ddl за PL/SQL (packages, procedures, functions ...), tables, indexes, triggers, sequences - без данни!
    Така няма да имаш проблеми с размера на export file-а.
2. Подреди по големина таблиците и започни да ги export-ваш една по една (първо най-големите, после по-малките заедно).
    Имай предвид, че ако имаш много големи таблици (> 1G) , може да се наложи да използваш друг tool (ne SQL Developer).
Мислих го но са над 100 само таблици а времето в което мога да го извърша е събота, неделя или между 22 и 6 часа през ноща, за да няма ъпдейти по време на миграцията. Тригери и изгледи и броячи са още толкова.
Дори да хвана подчинените ми, създаването трябва да е в последователност от релациите иначе няма начин да се транслира и експортне. А релациите при много таблици трудно се проследяват нищо че има детайлна документация. В смисъл последователността на създаване и пълнене на таблиците.
Таблиците са наистина огромни. Схемата е пусната преди 12 години на оракъл 7 сега сме на 11 с клъстър. В някои от таблиците на всяка секунда влизат по 2-3 записа. Включително престоя в тоалетната се записва в една от схемите, освен кой какво, колко, къде, кога, с коя доставка, с кой компонент точно от доставката е работил и т.н.т. Освен това има ЛОБ-ове с картинки на всеки изходящ продукт.
Колкото и да е голяма на сървера се експортва за 2-4 часа схемата (тя е без лоб-ове). А ресурса на сървера ми е неизвестен с VmWare е и работят на него 30-40 виртуални машини. Размера е на трикрилен гардероб с надстройка и UPS 30 kW трифазен каквото и да значи това.

Различни бази се използват заради лиценза. Едната е само подържаща (постгре) и се ползва в моментите когато на доставчика му спре тока или се прекъсне връзката между производство и офис. Спре ли проследимостта спира производството. Тука е моят дял от сговняването, защото синхронизацията обратната и превключването между оракъл и постгре и последващата синхронизация на броячи и записи съм ги правил на C. В програмата за синхронизация всички проячи съм ги наслагал INT вместо long long при което някой е превъртял и посстгрето не е с актуални стойности и не се знае кое е синхронизирано и кое не. Зависимостите вече са строшени и най лесният вариант е да се реимпортне


Титла: Re: Дъмп на Oracle схема
Публикувано от: romeo_ninov в Mar 16, 2012, 07:25
Мисля, че dump file-а се създава само на database server-а ...
Знам, че DP може да се конфигурира и стартира от SQL Developer.

Може да има и нови възможности, които не познавам.
Прав си, явно съм спал като съм писал горното, активира се от девелопера, но се записва на диска на сървъра :)


Титла: Re: Дъмп на Oracle схема [решено - заобиколено]
Публикувано от: victim70 в Mar 18, 2012, 18:37
Стана със оракъл инсталиран + нат от един съвсем легално настроен сървер.
Експортна се за около 14 ??? часа със exp. Преди това се наложи да дублирам схемата локално със sqldeveloper. exp expdp не искаха да тръгнат за отдалечената машина.
Всичко се конвертира без грешки за около 1 час, след това се предъвка от postgre за 5-6 часа.
Всичко тръгна с две думи.
Само ми е интересно защо експорта отне повече време отколкото импорта в някаква по 'несериозна' база данни.


Титла: Re: Дъмп на Oracle схема [решено - заобиколено]
Публикувано от: romeo_ninov в Mar 18, 2012, 20:31
Стана със оракъл инсталиран + нат от един съвсем легално настроен сървер.
Експортна се за около 14 ??? часа със exp. Преди това се наложи да дублирам схемата локално със sqldeveloper. exp expdp не искаха да тръгнат за отдалечената машина.
Всичко се конвертира без грешки за около 1 час, след това се предъвка от postgre за 5-6 часа.
Всичко тръгна с две думи.
Само ми е интересно защо експорта отне повече време отколкото импорта в някаква по 'несериозна' база данни.
Констрейни, статистики, проверка за консистентност


Титла: Re: Дъмп на Oracle схема [решено - заобиколено]
Публикувано от: victim70 в Mar 18, 2012, 23:54
Няколко таблици проверих всичко е наред. Тригерите броячите и функциите са ОК. Успява да синхронизира. Процедурите и функциите са 70% проверки и 30% работа.
Доверявам се на разработчика на схемата. До момента ако нещо не е наред - нищо не тръгва.