Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ODBC auf Oracle DB (https://www.delphipraxis.net/100034-odbc-auf-oracle-db.html)

Gruber_Hans_12345 21. Sep 2007 11:31

Datenbank: Oracle • Version: 8? • Zugriff über: ODBC

ODBC auf Oracle DB
 
Hallo, ich muß aus einem Programm, das eine Oracle Datenbank verwendet daten auslesene (das Programm wird ersetzt, und nun muß ich die daten in unsere Firebird DB übertragen)

nur habe ich probleme mit dem ODBC Treiber bzw. mit dem System von Oracle

das ganze ist anscheinend ein Oracle8bzw OraHome92 System

als ODBC Treiber ist da ein "ODBC Oracle in OraHome92" drauf

da wird ein TNS Service Name abgefragt, nun weiss ich nicht was ich da eingeben muß? den Server alleine kanns ja nicht sein, ich muß dem ja die Datenbank mitangeben
Bekomme dann immer Fehlermeldungen wie "Servicename konnte nicht aufgelöst werden", "Listener nicht aktiv" ...

kann mir da wer tipps geben, auf was ich da achten muß?
gibt es für oracle default benutzer? (Wie heißt der administrator name und wie ist da default password?)

habe da einige Namen gelesen (in scripts und logs und co) : Administrator, manager, oradb, SYSDBA .... sind das standardusernamen/passwort wenn ja wie gehören die zusammen.

leider bekommen wir keine Hilfe/Support von der alten firma, die das system damals dort installiert haben ...

Thomas Horstmann 21. Sep 2007 11:57

Re: ODBC auf Oracle DB
 
Hallo,
grundsätzlich greift der ODBC-Treiber nur auf den "Oracle-Client" durch (via SQL*NET). Dieser muss sauber installiert und konfiguriert sein.

In Oracle muss folgendes angegeben werden:

Host bzw. Server : IP-Adrsse oder aufgelöster Name
Port : Normalerweise 1521 oder 1526
Instanz bzw. SID : Max. vierstelliger Name der Datenbank-Instanz
(unter einer Datenbank können mehrere "Instanzen" laufen, z.B. ORCL usw.)

Das ganze bekommt einen Namen, der dann in der ODBC-Konfiguration angegeben wird.
Wird der angegebene Name in der SQL*NET Konfiguration nicht gefunden, dann kommt es zu der beschriebenen Fehlermeldung.

Der Administrator-Benutzer ist "system" mit dem Standard-Passwort "manager".

Hoffe es hilft und viele Grüsse
Thomas

GuenterS 21. Sep 2007 12:51

Re: ODBC auf Oracle DB
 
Hallo!

Wenn Du nicht unbedingt über ODBC auf Oracle Zugreifen musst, würde ich Dir eher die kostenlosen NOCI Komponenten empfehlen.

Diese würde man über folgenden Link downloaden können.

Muss es unbedingt ODBC sein? Weil den oracle Client musst D

Als kostenpflichtige Alternative bieten sich aber auch die CoreLabs Komponenten an. Wenn ich mich richtig erinnere, brauchen die dann keinen installierten und eingerichteten Oracle Client.

Gruber_Hans_12345 21. Sep 2007 13:09

Re: ODBC auf Oracle DB
 
danke mal für die infos

möchte eigentlich keine zusatz komponenten isntallieren, da mein einlese programm mit odbc umgehen kann, und dieses nur einmal für die umstellung durchgeführt werden muß, danach nie wieder.
Das ganze wird direkt am Server ausgeführt - da läuft auch der Oracle Server

bei den Scripts habe ich die SID immer wieder gelesen, aber die wurde immer mit test oder echt angegeben (und nciht einer 4 stelligen zahl)
es laufen auch zwei dienste OracleServiceTest und ORacleServiceEcht - das sind die zwei datenbanken die echt und die test datenbank.

wie kann ich mir die konfiguration des Oracle-Client anschauen/ändern - hab hier ne menge programme gefunden, aber irgendwie ... hätte probiert einen LISTENER zu installieren und konfigurieren (habe dann einen dienst dazu bekommen, der sich aber nicht starten lässt :( )

also beduetet das, das ich das was ich im ODBC Treiber in das TNS ServiceName eingebe muß zuerst im Client konfigurieren muß (und dieser ServiceName ist auch das, was ich bei den mitgeliferten SQL Programmen von Oracle eingeben muß)?

GuenterS 21. Sep 2007 13:16

Re: ODBC auf Oracle DB
 
Schau Dir dazu den Net8 - Assistent oder Net8 Configuration Wizzard an, das sollte weiterhelfen.

Gruber_Hans_12345 21. Sep 2007 15:17

Re: ODBC auf Oracle DB
 
Zitat:

Zitat von GuenterS
Schau Dir dazu den Net8 - Assistent oder Net8 Configuration Wizzard an, das sollte weiterhelfen.

nein leider nicht, habe hier einen "Net Manager" und einen "Net Configuration Assistent" gefunden, aber da kann ich nicht wirklich Client Sachen einstellen ... oder inwiefern sollte die mir weiterhelfen - was sollte man da einstellen können?


edit:
ich hab mal den "Oracle Enterprise Manager-Konsole, Standalone" aufgemacht, und dort eine neue Datenbank hinzugeügt
als Host habe ich den lokalen rechenrname angegeben, den port habe ich auf 1521 gelassen und als SID dann 1521
egal was ich dann für ein username/passowrt eingebe, bekomme immer folgende meldung

ORA-12541: TNS: Kein Listener

edit2:
habe jetzt einen zusätzlichen listener auf dem port 1522 installiert, jetzt kann ich den listener dienst starten aber bekomme noch folgende fehlermeldung "In Verbindungsdeskriptor angegebener SID konnte nich aufgelöst werden"
wo finde ich die SID's? Ich weiss nur, das die zwei DB's test und echt heissen, aber einen SID?

GuenterS 21. Sep 2007 15:48

Re: ODBC auf Oracle DB
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo, ich habe mal paar Screenshots im PDF angehängt, wie man einen Listener erstellen könnte. Am Ende ist auch ein Bild von Net8 Assistant vorhanden ... vielleicht ist das ja nur eine andere Bezeichnung für NET Manager.

[Edit]
Ich habe ein zweites PDF angehängt wo man sehen kann, wie ich das im NET8 Assistent ausgefüllt habe, vielleicht kannst Du ja Deine Schlüsse daraus ziehen.
[/Edit]

Gruber_Hans_12345 21. Sep 2007 15:59

Re: ODBC auf Oracle DB
 
danke noch mal für deine mühe ...

also den listener habe ich jetzt auch so, und der reagiert auch brav (bekomme jetzt die Fehlermeldung, das er den SID nicht findet)
Also vermute ich mal, das der Dienstname noch falsch sein wird oder?

Was ist der Dienstname den ich eingeben muß (was bei dir XE ist)

ich habe nur gesehen, das in den diensten
zwei dienste gestartet werden
1.) c:\oracle\ora92\bin\ORACLE.EXE echt
2.) c:\oracle\ora92\bin\ORACLE.EXE test

und da es auch zwei dbs gibt eben eine echt und eine test db habe ich daraus geschlossen, das die so heissen

aber ob das jetzt die SID ist oder nicht?


wenn ich in dem Manager auf "Dienst testen" klicke :
Code:
Initialisierung des ersten Tests zur Verwendung der Benutzer-Id: scott, Kennwort: tiger
Versuch, die Verbindung mit folgender Benutzer-Id herzustellen: scott
Der Test war nicht erfolgreich.
ORA-12514: TNS:Listener konnte in Verbindungsdeskriptor angegebenen SERVICE_NAME nicht auflösen

Möglicherweise enthalten die Felder einen Fehler,
oder der Server ist für eine Verbindung nicht bereit.

GuenterS 21. Sep 2007 16:06

Re: ODBC auf Oracle DB
 
Standardmäßig nimmt dieses Test Ding als Benutzername Scott und als Passwort tiger, aber ich bezweifle dass Deine Datenbank diese Benutzer kennt. Kannst Du über Button "Anmeldung ändern" ändern (dort wo du das getestet hast).


Du müßtest auf deinem System eine Datei mit dem Namen "tnsnames.ora" haben, die sollte folgendermaßen aussehen.

Zitat:

# TNSNAMES.ORA Network Configuration File: C:\OraHome1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

XE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = WIN2000_LOGO)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = XE)
)
)

Hast Du dir das Oracle2.pdf schon angeschaut? Hast Du ein Programm, welches so ein Fenster hat? Vielleicht dieser NET Manager?

Gruber_Hans_12345 21. Sep 2007 16:15

Re: ODBC auf Oracle DB
 
nein, vermute auch nicht, das es diesen benutzer gibt, aber die fehlermeldung sugeriert mir zumindest, das das teil gar nicht so weit kommt um den user anzumelden (habe auch schon die anderen kombinationen ausprobiert, aber kein user/passwort funkt)

ja, mein fenster sieht absolut gleich aus

meine große frage ist im moment, was gebe ich als SID bzw als ServiceName an?
Kann ich irgendwo rausfidnen, welche am aktuellen Server drauf sind? - suchen im Filesystem oder sonst wie?

GuenterS 21. Sep 2007 16:30

Re: ODBC auf Oracle DB
 
Ich würde schauen wie Deine Datenbank heißt, dies würd ich als SID verwenden, wenn das nicht klappt, versuch den Namen der Datenbank + '.' + Rechnername wo Datenbank läuft.

Ich muss da auch immer ratespielchen machen.

Gruber_Hans_12345 21. Sep 2007 16:33

Re: ODBC auf Oracle DB
 
Zitat:

Zitat von GuenterS
Ich würde schauen wie Deine Datenbank heißt, dies würd ich als SID verwenden, wenn das nicht klappt, versuch den Namen der Datenbank + '.' + Rechnername wo Datenbank läuft.

Ich muss da auch immer ratespielchen machen.

und wie/wo kann ich schauen, wie die datenbank heisst?

wie gesagt ich habe die zwei dienste gefunden, und rest sind nur vermuteungen ...

muß man sonst noch was/wo eisntellen, damit er die verbindung herstellen kann?
gibt es irgendwo noch ein einstellungsfile wo SID <-> Dateiname existiert

GuenterS 21. Sep 2007 16:37

Re: ODBC auf Oracle DB
 
Was gibt denn die "Oracle Enterprise Manager-Konsole, Standalone" an Informationen her? Sieht man dort nicht wie die Datenbank heißt?

Gruber_Hans_12345 21. Sep 2007 16:40

Re: ODBC auf Oracle DB
 
nein, die war absolut leer, ich habe da ein paar testeinträge gemacht und rumprobiert ...

aber intitalzustand auf dem server war, das in keinem tool irgendwas eingestellt war, das kein listener installiert war (zumindest war der dienst nicht installiert ...) aber der server und die programme liefen/laufen ohne probleme, kaber in dem programm kann man nichts rauslesen (und es gibt keinen support mehr von dem alten program)

Gruber_Hans_12345 24. Sep 2007 07:43

Re: ODBC auf Oracle DB
 
hat noch wer irgendwelche ideen, ich verzweifle langsam ... ich bringe diese dummen odbc treiber (und das sql plus oder sonstiges einfach nicht zum laufen)

würde mich freuen, wenn mir noch irgendwer tipps geben kann, wie ich den odbc treiber zum laufen bringen kann ...

knollix 24. Sep 2007 09:15

Re: ODBC auf Oracle DB
 
Hast du überhaupt zugriff auf die Oracle Datenbank ?
Du benötigst aufjedenfall eine Client Installation, zur not auch den Oracle Instand Client,
was du noch benötigst ist der sql-developper von oracle, ist auch freeware
danach folgende informationen :
wie heisst der server, wie ist der port, wie ist der sid, wie ist der benutzername und wie ist das passwort !

wenn du das alles hast pm an mich !

hast du das alte programm mal debuggt oder mit einem sql scanner laufengelassen ?

es muss doch ne doku zu dem programm geben, datenbank stuktur und so ?

Gruß knollix

Gruber_Hans_12345 24. Sep 2007 09:37

Re: ODBC auf Oracle DB
 
Also, ich arbeite direkt auf dem Oracle Server
Auf dem Server ist auch (wie auf den Clients) das Programm installiert, das auf die Oracle Datenbank zugreift installiert.

Leider sind in keinen der Oracle Modulen (habe fast alles ausprobiert was ich im Startmenü gefunden habe) irgendetwas installiert.

Wenn die SID auch namen sind, dann würde ich schätzen das die "test" und "echt" heissen (es gibt dienste mit den namen, und ich hab den namen auch in einigen scripten gelesen mit -SID test usw.)

username und passwort habe ich ein paar vorschläge, die es sein könnten, wenn ich mal soweit bin, das er mir sagt, falsches passwort oder falscher username, dann wäre ich ja schon froh (dann könnte ich einfach mal alle varianten ausprobieren) - aber leider bekomme ich schon vorher ne fehlermeldung.

nein, für das alte programm gibt es keine doku (zumindest keine doku wie man es installiert oder konfiguriert - auch keine doku über die datenstrukur - nur eine stinknormale programmdokumentation)
debuggen kann ich da scshlecht - ist der produktiv server eines kunden

knollix 24. Sep 2007 10:24

Re: ODBC auf Oracle DB
 
Zitat:

Zitat von Gruber_Hans_12345
Also, ich arbeite direkt auf dem Oracle Server
Auf dem Server ist auch (wie auf den Clients) das Programm installiert, das auf die Oracle Datenbank zugreift installiert.

Leider sind in keinen der Oracle Modulen (habe fast alles ausprobiert was ich im Startmenü gefunden habe) irgendetwas installiert.

Wenn die SID auch namen sind, dann würde ich schätzen das die "test" und "echt" heissen (es gibt dienste mit den namen, und ich hab den namen auch in einigen scripten gelesen mit -SID test usw.)

username und passwort habe ich ein paar vorschläge, die es sein könnten, wenn ich mal soweit bin, das er mir sagt, falsches passwort oder falscher username, dann wäre ich ja schon froh (dann könnte ich einfach mal alle varianten ausprobieren) - aber leider bekomme ich schon vorher ne fehlermeldung.

nein, für das alte programm gibt es keine doku (zumindest keine doku wie man es installiert oder konfiguriert - auch keine doku über die datenstrukur - nur eine stinknormale programmdokumentation)
debuggen kann ich da scshlecht - ist der produktiv server eines kunden

Das Programm arbeitet auf dem Serverdirekt, Ich nehme mal an Windows. Wie wurde denn bisher die Datenbank ansich administriert ?

was ist den an odbc datenquellen eingerichtet ?

Also ich denke du musst erstmal auf die Datenbank, odbc hilft dir erstmal nicht weiter.
such mal bitte auf dem server nach einer "tnsnames.ora" und poste die hier ! normalerweise unter
C:\oracle\ora92\Network\Admin\tnsnames.ora

sollte auch auf jedem der clients zu finden sein.

so wie du vorgehst kommst du sicher nicht weiter....

Gruber_Hans_12345 24. Sep 2007 10:54

Re: ODBC auf Oracle DB
 
bis jetzt war kjeine ODBC Quelle eingerichtet (da sind jetzt nur meine Spielereien drinnen)

es gab bis jetzt auch keine "tnsnames.ora", die datei hat es gar nicht gegeben ... erst als ich mit den NET8 Assistenten den Listener isntalliert habe und etwas rumgespielt habe, wurde die datei angelegt, und da stehen jetzt halt auch nur meine spielereien drinnen.

Das problem, ist, der Oracle Server wurde gar nicht administriert, da wurde vor jahren einmal das programm installiert, und dann nicht mehr administriert ... der kunde dort hat keinerlei infos darüber, und ich muß jetzt "nur" die daten auslesen und in die aktuelle Firebird datenbank reinspielen.

Ja, das ganze ist ganz stinknromaler Windows Server

knollix 24. Sep 2007 11:06

Re: ODBC auf Oracle DB
 
Liste der Anhänge anzeigen (Anzahl: 2)
So kannst du das Vergessen !
Wie willst du an die Daten kommen ? Ohne Passwort/User Datenbank/SID geht ja wohl nix

installier mal einen sql-monitor und schau dir den datenbankverkehr zwischen client und server an

mal nur so ne frage : läuft das alte programm noch nachdem du da auf dem server rumfuschst ?

Gruß knollix

An sonsten Viel Spass !

Gruber_Hans_12345 24. Sep 2007 11:13

Re: ODBC auf Oracle DB
 
also als SI habe ich ja schon geschrieben, das ich "test" und "echt" vermute, da ich diese in den script ausgelesen haben (Da sthet dann -SID test bzw -SID echt und auf dem server ist das programm zweimal installiert einmal eine testversion und einmal eine echtversion)
zusätzlich sehe ich in den Diensten zwei dienste die jeweils einmal Oracle mit "C:\...\oracle.exe test" und "C:\...\oracle.exe echt" starten -> daher vermute ich mal das dies auch die zwei verschiedenen SID sein werden
Als USername und passwort vermute ich einfach das dies die Defaulteinstellungen sein werden, habe in den scripts dazu "manager" gesehen, und mit hilfe von hier wird der username dann "system" oder "administrator" sein

das problem, ist, das anscheinend das programm irgendwie anders auf oracle zugrieft, wie ich das brauche (und anscheinend auch anders als das Oracle eigene SQL Plus)

jetzt muß ich irgendwie dem Rechner beibringen, das dieses SQL Plus und co (damit auch der ODBC Treiber) funktioniert

dazu habe ich schon den listener erfolgreich zum laufen gebracht, das momentane problem ist, das der listener die SID noch nicht richtig auflösen kann.

ja, das programm läuft noch, da ich ja nur die einstellungen ändere, die das progamm ja selber nicht braucht
da ja vorher diese Optionen gar nicht in verwendung waren, da das alte programm ja ganz anders (fragt mich nicht wie) auf oracle zugegriffen hat.

knollix 24. Sep 2007 11:25

Re: ODBC auf Oracle DB
 
Such mal nach einer oci.dll auf den clients, also nicht auf dem server.
es muss bei oracle immer ein client installier sein sonst funzt das ganze nicht
gruß mk

Gruber_Hans_12345 24. Sep 2007 11:27

Re: ODBC auf Oracle DB
 
hmmm ok, könnte ein guter ansatz sein, ich werde das ganze mal an einem client probieren (den Tracer, das SQL Plus, ODBC settings und co) bis jetzt habe ich es immer am server probiert ...

Gruber_Hans_12345 24. Sep 2007 12:42

Re: ODBC auf Oracle DB
 
leider nicht :(

der Tracer findet kein programm, habe das programm am server gestartet und auch einmal am client, aber der tracer findet einfach kein laufendes programm

diese dll gibt es auch nicht
es gibt nur eine "mtxoci.dll"

habe im programm noch ein paar infos gefunden :

Code:
LIB        C:\programme\netexpress\base\lib
ORACLE_HOME C:\oracle\ora92                                                                                                                               
ORACLE_SID echt
[edit]wenn ich die internen Tools von Oracle verwende (SQL Plus, Manager, Assistent), dann loggt der Tracer mit, (aber eben auch nur die Fehler, die ich im Fenster bekomme - kein TNS Listener oder
Code:
Class: Error message
Time stamp: 24/09/2007 13:49:58
SQL statement: ORA-12505: TNS: Listener konnte SID in Verbindungs-Deskriptor nicht auflösen.

Gruber_Hans_12345 24. Sep 2007 13:07

Re: ODBC auf Oracle DB
 
hah

sieht schon mal gut aus, habe jetzt noch ne weile mit dem listener rumgespielt, ein paar lustige sachen umgestellt, mit dem komischen lsnrctl rumgespielt und jetzt kome ich mit der test verbindung schon mal drauf ... gleich mal odbc testen ... aber fürs erste siehts gut aus (es ist einfach absolut nix vom "normalen" ORacle Client hier irgendwo installiert, und das alte programm greift direkt drauf zu ....)

Gruber_Hans_12345 24. Sep 2007 13:28

Re: ODBC auf Oracle DB
 
so, nächstes problem :(

ich habe den ODBC Treiber am laufen (mit system/manager)

ich bekomme auch eine Liste aller Tabellen
aber wenn ich dann ein
SQL-Code:
SELECT * FROM RELW_D
oder SELECT * FROM "RELW_D"
mache bekomme ich immer diesen Fehler (ich weiss jetzt noch nicht, was in der tabelle drinnen ist, aber habe es mal probeweise bei ca. 20 tabellen probiert, ich komme nur auf ein paar system tabellen rauf (sind die mit $) aber keine User Tabelle

vermute mal, das ich da einen anderen User brauche ... aber warum darf der System (ist ja administrator oder ?) nicht auf die tabellen rauf?

Code:
---------------------------
Dbdesktop
---------------------------
[Oracle][ODBC][Ora]ORA-00942: Tabelle oder View nicht vorhanden.
---------------------------
OK  
---------------------------

DeddyH 24. Sep 2007 13:32

Re: ODBC auf Oracle DB
 
Versuch es mal mit
SQL-Code:
SELECT * FROM [Schema].[Tabelle]

Gruber_Hans_12345 24. Sep 2007 13:39

Re: ODBC auf Oracle DB
 
Zitat:

Zitat von DeddyH
Versuch es mal mit
SQL-Code:
SELECT * FROM [Schema].[Tabelle]

was gebe ich als Schema ein?
finde ich das irgendwo raus? oder muß ich das kennen?

knollix 24. Sep 2007 13:57

Re: ODBC auf Oracle DB
 
Liste der Anhänge anzeigen (Anzahl: 1)
das schema ist der besitzer der tabellen.
bitte tuh dir doch den gefallen und installier dir den oracle sql developper, das ist ein dbms programm in java und da kannst du
dann mit deinem system/manager alles anschauen was da so da ist.
mit dem kannst du die daten auch gleich als sql statements abspeichern, die tabellenstruktur übernehmen und
das ganze dann leicht in dein fire[irgendwas] überspielen !

Gruß Knollix

knollix 24. Sep 2007 13:59

Re: ODBC auf Oracle DB
 
Kann es sein das das alte Programm ein COBOL kern hat ?

Gruber_Hans_12345 24. Sep 2007 14:05

Re: ODBC auf Oracle DB
 
Zitat:

Zitat von knollix
das schema ist der besitzer der tabellen.

danke, das wars hab mir mal mit "SELECT * from FROM all_catalog;" die tabllen samt owner ausgegeben

und jetzt komme ich drauf auf die dinger ... (mit OWNER.TabName)

knollix 25. Sep 2007 09:34

Re: ODBC auf Oracle DB
 
und, wars das ?

Gruß knollix

Gruber_Hans_12345 25. Sep 2007 11:50

Re: ODBC auf Oracle DB
 
ja, mit OWNER.TabellenName funkt nun alles, kann mit ODBC drauf zugreifen.

danke noch mal an alle


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz