Feladat: MSSQL táblát átemelni egy struktúrájában (még mező neveiben is) 100% -ig azonos Oracle táblába. Minél kevesebb ODBC igénybevételével. DE adat nem kerülhet ki 3. állományba se dump se export se semmilyen más módon még titkosítva sem. A központi ORACLE adatbázisnak kell "kinyúlkálnia" a külső rendszerekbe,. amiből csak egy az MSSQL alapú alkalmazás. Én az ORACLE oldalon állok, a másik oldalt nem tudom semmilyen mértékben sem befolyásolni. Ők adják a hozzáférést az export táblákhoz, tárolt eljárásokhoz, én vagy át tudom venni vagy nem (az már az én bajom ha nem). Szóval erről lenne szó, remélem érthetően leírtam.
Igen a KIÍRÓK SZERINT ez a közvetlen elérés a text szócskától irtóznak sajnos. Én ugyanúgy nem értem ahogy Ti sem.
"Ha irok javaban egy programot, ami jdbc-n olvas mssql-bol, es jdbc-n ir oracle-ba, az közvetlen eleres? " Jelen pillanatban épp így csinálom (csak nem java-ban), de ez a megoldás 2 db odbc-t használ (egy mssql felé egy meg Oracle felé) ezt gondoltam lecsökkenteni egyre.
(Nagyon sok rossz tapasztalatom van az ODBCékkel. én meg tőlük irtózom. :))
Csak nagyon halkan jegyzem meg - a "közvetlen elérés" témához - szerintem a feladatot kéne megérteni, nem pedig a programozói arzenál potenciális eszközkészletét lajstromba venni.
Szép dolog a dumpolás meg a cron, sőt lehet az is, hogy túl régimódi vagyok, de én nem innen állnék neki az egész problémakörnek. Főleg, hogy tudható korábbról - az egyidejű? - GUI-s elérés is célfüggvény volt.
De ha tényleg "minden út Rómába vezet", még akár ez is odavezethet... ;)
Egyszerű, működő felállás: 1. szkript tud dump-olni MSSQL-ből (akár a dump progival, akár ODBC-n keresztül) 2. látja az Oracle-t, tud bele insertálni (akár sqlloader, akár direkt OCI)
Ha batch, akkor mehet cron jelleggel, időnként; ha manuális indítás, akkor kell egy kis szerver a windows-os gépre, ami indítja az áttöltést.
Ha faksznizni akarsz, akkor mehet mindez SSL-el titkosítva... A lényeg, hogy DUMP jelleggel mindig minden adatot áttöltesz Oracle alá.
Mi az hogy kozvetlen eleres? Ha irok javaban egy programot, ami jdbc-n olvas mssql-bol, es jdbc-n ir oracle-ba, az kozvetlen eleres? Vagy ugyanez pepitaban, mondjuk C-ben?
igen ez volna a legegyszerübb és legjobb megoldás de a kiírásban szabályozták, hogy közvetlen elérés kell hogy legyen a kmf között és ez semmi esetre sem lehet text.
1. "A PlSql Developer kifejezetten Oracle-re kitalált és hangolt utility" Igen itt ismét látszik, hogy kezdő vagyok :)
"valamelyik szabvány mentén (ODBC, JDBC) dolgozó utilityre van szükséged." tudnál esetleg erre egy két megbízhatóan működő programot mondani (leírni)? közben azért utána fogok addig én is nézni
2. "(általad ugyan nagyon óhajtott, de meglehet a legrosszabb) megközelítés." A struktúra egyszerű viszonylag, és a feladat is az. Egyszerűen a külső MSSQL export tábláiból (tárolt eljárásaiból aminek kimenete egy lekérdezés eredménye) kell átemelnem az adatokat egy ugyanolyan felépítésű táblába. "Autonomitás, szigorú vagy laza csatolás, hányrétegű architektúra" Semmi ilyesmi gond nincs. Minden más már Oracle keretein belül Mintha a_sql_tabla mezo1 varchar2(100), mezo2 varchar2(100) ---> a_ora_tabla mezo1 varchar2(100), mezo2 varchar2(100) átemelni. Ennyire azért nem egyszerű de majdnem.
szia köszönöm javaslatodat, őszintén szólva nekem kezdő szinten egy kicsit magas is, de a "nagy tömegű adat mozgatására nem jó." mondatod alapján nekem ez a megoldás nem lesz jó sajnos. Mivel heti több gigás adatmennyiségre is számítanom kell. Azért köszönöm: dz
1. ...az a helyzet hogy nekem olyan kellene, amivel pl/sql dev. -el tudjam használni (irni-olvasni) a mssql adatbázis klf tábláit. A PlSql Developer kifejezetten Oracle-re kitalált és hangolt utility (hardcore beégetetten). Azzal nem fogsz tudni MsSql-t pisztergálni. Ha heterogén adatbázisokat akarsz egyidejűleg használni, akkor valamelyik szabvány mentén (ODBC, JDBC) dolgozó utilityre van szükséged. Ilyenből annyi van mint égen a csillag külön-külön is.
2. ...de ha jól értem pl/sql dev tárolt eljárással mssql tábla adatait nem tudok pl insertálni ora táblákba? Nem néztem utána, de kizárt, hogy az MsSql-nek ne legyen JDBC drivere (BTW van linuxos ODBC is!!). Akkor pedig Oracle Java-s tárolt eljárással elvben láthatod az MsSql-t. De ez csak egy (általad ugyan nagyon óhajtott, de meglehet a legrosszabb) megközelítés. Architect szempontból azért alaposabban végig kéne gondolnod a feladatot. Autonomitás, szigorú vagy laza csatolás, hányrétegű architektúra stb., /Mielőtt üzemszerűen Oracle store procedure-ből írsz-olvasol MsSql táblákat./
PS: Közbevetőleg nem nagyon értem, hogy a DBMS_PIPE, hogy került ide. Látnivalóan nem a Linuxos Oracle eléréssel van gondja szerintem a kérdezőnek, hanem épp a Windows-os MsSql-lel.
1. doksiban nézz utána a DBMS_PIPE-nak Amúgy a lényege: OCI-ban DBMS_PIPE-al lehet csatornát nyitni, aminek másik végén PL/SQL eljárások lehetnek a kliensek - megnyitja a csatornát, belepakolja amit akar (nagyon hosszú egy küldés nem lehet), típusosan (!), majd elküldi az üzenetet (csőposta). A szerver program (nem Oracle) fogadja az üzenetet, kicsomagolja belőle a benne lévőket (DBMS_PIPE-ot használ ő is, bind-elt változókba kapja az értékeket), csinál amit akar, és esetleg válaszol, majd lezárja a csatornát.
A szervert lehet írni Java-ban, Python-ban (cx_Oracle), C-ben, C++-ban, Perl-ben... bármiben, mert ott is a DBMS_PIPE-ot használja.
Nem tudom a konkrét feladatot, de ez nagy tömegű adat mozgatására nem jó. Vezérlésre lehet használni (mi is erre használjuk: system parancsként tetszőleges más programok indítására), tehát ha jól behatárolt a feladat, akkor lehet vezérelni a szervert, ami már direkt nyúl az adatbázisba (a lényeg, hogy nem a PIPE-on kell keresztülmenni az adatoknak).
Oracle 9-től fölfelé lehet Java-ban is tárolt eljárást írni, ami PL/SQL-ből hívható. De gyalog megoldásnak egy DBMS_PIPE-on vezérelt kis progi is megteszi.
MSSQL -> Oracle 10g adatbázis migrációhoz (egyeszeri (*100) futás) én egy Python programot írtam, ami natív OCI-t használt Oracle-höz, és ODBC-t az MSSQL-hez. Persze a windowsos gépen futott...
Sziasztok, tud valaki redhat ent. alatti 10g és mssql közé MŰKÖDŐ odbc -t? Persze ha lehet legyen ingyenes de a MEGBÍZHATÓSÁG lenne a legfontosabb köszönöm: dz
Hat hogy formsban hogy kell azt nem tudom, de regen (ugy 7-8 eve) siman a dbms_lob get_chunk vagy hasonlo hivasaval plsql-bol darabonkent kiveszegettuk es irogattuk fileba.
Nem tudtok nekem abban segiteni,hogy hogyan lehet egy képet(long raw vagy blob tipusú) kiírni egy file-ban,Forms developer-ben,akkor ha a kép nagyobb mint 32767 byte.
Az undo az, ahol a muveleted futasa kozben tortent modositasokat atmenetileg tarolja, hogy a muveletedre ne legyenek hatassal, a muveleted egy konzisztens adatbazist lasson.
Ha keves, akkor vagy sok a modositas a hatterben, vagy tul sokaig fut a te lekerdezesed. (a tobbihez kepest)