Toon posts:

[Oracle] Zoeken in alle velden van alle tabellen.

Pagina: 1
Acties:
  • 1.855 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben op zoek naar een programma waarmee ik een bepaalde waarde
kan zoeken in alle velden van alle tabellen van een Oracle Database.

Ik heb reeds pogingen ondernomen om een script te schrijven in php,
maar daar bots ik op problemen om een connectie op te zetten met
de database ... (maar dat is voor een andere topic in de Devschuur)

Waarom ik dit nodig heb zal je denken ...

Ik werk nu een klein jaar in een bedrijfje waar ik query's moet schrijven
op een Duitse database die helemaal NIET gedocumenteerd is, en uit
ongeveer 130 tabellen bestaat met een gemiddeld aantal velden van 20.
(en gemiddeld 10 000 records, varierend van 5 tot 9 000 000

Mijn enige redding om zaken terug te vinden zijn het programma zelf,
die op de database draait, en formulieren die afgedrukt worden. De
ontwikkelaars staan niet toe dat ik de broncode van de software krijg,
dus daar kan ik ook niet in zoeken.

Momenteel heb ik een rapport voor mij waarop gegevens staan die mijn
werkgever graag in een query wil zien ... maar ik kan natuurlijk onmogelijk
de 130 * 20 * 10 000 = 26 000 000 (en meer natuurlijk) te overlopen.

Verwijderd

Ik werk al 10 jaar met Oracle producten en ik ben nog nooit een tool tegengekomen die op zoek kan gaan naar een bepaalde waarde in alle kolommen van alle tabellen.

De betere Oracle tools kan je vinden bij Quest nl SQL Navigator en TOAD of bij http://www.allroundautomations.nl/ PL/SQL Developer. Maar of dat zelfs de laatste versies deze functionaliteit hebben, betwijfel ik sterk.


Als PHP niet werkt, waarom probeer je het niet met PL/SQL, met behulp van selects op de tabellen USER_TABLES en USER_TAB_COLUMNS kan je via Native Dynamic SQL en EXECUTE IMMEDIATE Statement de queries dynamisch gaan opbouwen

Ik heb ook de indruk dat je geen overzicht heb van je database. Waarom probeer je geen duidelijk ERD of DSD te maken van je database. Ook Oracle heeft hier een tool voor; Oracle Designer. Met behulp van de Reverse Engineer functie trek je de volledige database definitie in de tool en designer maakt een DSD. of probeer dbDesigner4 (=Open Source)

Verwijderd

Topicstarter
Verwijderd schreef op maandag 20 juni 2005 @ 12:58:
Ik werk al 10 jaar met Oracle producten en ik ben nog nooit een tool tegengekomen die op zoek kan gaan naar een bepaalde waarde in alle kolommen van alle tabellen.

De betere Oracle tools kan je vinden bij Quest nl SQL Navigator en TOAD of bij http://www.allroundautomations.nl/ PL/SQL Developer. Maar of dat zelfs de laatste versies deze functionaliteit hebben, betwijfel ik sterk.


Als PHP niet werkt, waarom probeer je het niet met PL/SQL, met behulp van selects op de tabellen USER_TABLES en USER_TAB_COLUMNS kan je via Native Dynamic SQL en EXECUTE IMMEDIATE Statement de queries dynamisch gaan opbouwen

Ik heb ook de indruk dat je geen overzicht heb van je database. Waarom probeer je geen duidelijk ERD of DSD te maken van je database. Ook Oracle heeft hier een tool voor; Oracle Designer. Met behulp van de Reverse Engineer functie trek je de volledige database definitie in de tool en designer maakt een DSD. of probeer dbDesigner4 (=Open Source)
Uhu, het kan ook via PL/SQL, maar daar heb ik sinds mijn laatste jaar hoger onderwijs een enorme hekel door docenten die ons een project lieten maken in Oracle Forms, maar er zelf niets van af wisten. Ik vond het zelf redelijk absurd als ik zag dat professionele ontwikkers er zelf nog niet in slagen het sluit-knopje bovenaan elke form te doen werken ... en wat is er lelijker dan sequentieel programmeren ... :-S Nuja, ik vrees dat ik een poging zal moeten ondernemen als ik ergens wil geraken.

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Ik pas je topictitel nog even aan; het is wel van belang om welke database het gaat; dus maak ik van 'DB' even 'Oracle' :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Verwijderd

Topicstarter
Spider.007 schreef op maandag 20 juni 2005 @ 14:33:
Ik pas je topictitel nog even aan; het is wel van belang om welke database het gaat; dus maak ik van 'DB' even 'Oracle' :)
Waarvoor dank ...

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Als eerste zou ik eens de programmacode in een hexeditor openen. Met een beetje geluk staan 75 van de 100 SQL-statements gewoon als leesbare ascii in de executable code.

Als tweede zou ik alle tabellen analyseren. Schrijf alle veldnamen op, inclusief keys, foreign keys, en andere constraints.

Als laatste ga je de puntjes op de i zetten: Je verandert met het programma op alle mogelijke plekken een gegeven, en je zoekt na in de database welk veld (of welke velden) die actie heeft geraakt.

Queries genereren die alle velden van een tabel bijlangs gaan is niet zo moeilijk. Het kost alleen even werk om alle tabelnamen en kolomnamen in te typen. Er is overigens een tabel ALL_TABLES, waar (onder andere) alle tabelnamen in staan. En met "DESC" in sqlplus vind je dan de kolomnamen wel.

Siditamentis astuentis pactum.


Verwijderd

Verwijderd schreef op maandag 20 juni 2005 @ 13:51:
[...]


Uhu, het kan ook via PL/SQL, maar daar heb ik sinds mijn laatste jaar hoger onderwijs een enorme hekel door docenten die ons een project lieten maken in Oracle Forms, maar er zelf niets van af wisten. Ik vond het zelf redelijk absurd als ik zag dat professionele ontwikkers er zelf nog niet in slagen het sluit-knopje bovenaan elke form te doen werken ... en wat is er lelijker dan sequentieel programmeren ... :-S Nuja, ik vrees dat ik een poging zal moeten ondernemen als ik ergens wil geraken.
Met PL/SQL bedoelde ik niet Oracle Forms, maar eerder stored procedures met DBMS_OUTPUT of eventueel UTL_FILE stream je je resultaat naar een file.

Verwijderd

Varienaja schreef op maandag 20 juni 2005 @ 15:48:
Als eerste zou ik eens de programmacode in een hexeditor openen. Met een beetje geluk staan 75 van de 100 SQL-statements gewoon als leesbare ascii in de executable code.
Als het Oracle Forms is zou je hier en daar wat code kunnen vinden, maar niet voldoende om een globaal overzicht te hebben van je applicatie.
Als tweede zou ik alle tabellen analyseren. Schrijf alle veldnamen op, inclusief keys, foreign keys, en andere constraints.
Dit zou ik als eerste doen, een ERD/DSD maken van je applicatie eventueel met behulp van een tool (zie vorige post)
Als laatste ga je de puntjes op de i zetten: Je verandert met het programma op alle mogelijke plekken een gegeven, en je zoekt na in de database welk veld (of welke velden) die actie heeft geraakt.
Is een mogelijkheid, maar dan zeker eerst het Audit Records and the Audit Trail mechanisme van Oracle aanzetten.
Queries genereren die alle velden van een tabel bijlangs gaan is niet zo moeilijk. Het kost alleen even werk om alle tabelnamen en kolomnamen in te typen. Er is overigens een tabel ALL_TABLES, waar (onder andere) alle tabelnamen in staan. En met "DESC" in sqlplus vind je dan de kolomnamen wel.
Varienaja heeft de klokken horen luiden maar weet niet waar de klepel hangt

Waarom zou je typen als alles in ALL_TABLES en ALL_TAB_COLUMNS zit? In ALL_TABLES zitten ALLEEN maar de tabellen, ieder type heeft zijn eigen view.
Met DESC geeft je aan dat je in dalende volgorde wil sorteren en ga je zeker GEEN kolomnamen vinden.

Verwijderd

Topicstarter
Ik weet dat je met SQL via ALL_TABLES er uit kan halen ... er bestaan zelf SYS-tabellen waarmee je alle kolommen van alle tabellen er uit kan halen. Maar daar ben ik op zich nog niets mee. Als ik deze resultaten echter in een scriptje kan proppen en dan per gevonden tabel, per kolom in die tabel alle velden overloop op zoek naar de waarde.
Maar dat is natuurlijk voor het programmeer werk, waarvoor ik een andere topic had.
Er bestaat dus geen reeds gemaakte toepassing voor, dus zal ik die dan maar zelf in elkaar boxen zeker... als ik eens wat veel tijd over heb. De toepassingen die jullie opsomen ken ik niet meteen?

[ Voor 7% gewijzigd door Verwijderd op 30-06-2005 10:56 ]

Pagina: 1