An meinem Lenny-Arbeitsplatz benutze ich sqlplus aus dem “Oracle Database 10g Express Client“, um Abfragen auf unseren Oracle-Datenbanken (9i) durchzuführen.
Bei der Einrichtung hatte ich seinerzeit viel zu basteln, deswegen freute ich mich nicht richtig auf die Aufgabe, auf einem Ubuntu-Client den Zugriff auf die Oracle-DB via UnixODBC einzurichten, um dort ein kleines Auswertungs-Tool programmieren zu können.
Aber es war garnicht so schlimm
Grundlage für die Installation war ein aktuelles Ubuntu 8.04 (Hardy Heron). Nach der Installation des o.g. Express Client von Oracle aus dem auf der dortigen Webseite angebotenen Debian-Paket, tauchte im Anwendungsmenü sofort ein Link zu SQL*Plus auf.
Nach dem Aufruf des Programms war über:
connect user/passwort@server:port/sid
die Verbindung sofort aufgebaut.
Herrlich
Jetzt zur Zitterpartie ODBC - die sich im Übrigen als nicht wirklich kompliziert herausstellte, wenn man denn fertige Ini-Dateien als Muster hat …
Als Grundlage werden eigentlich nur die Pakete unixodbc und unixodbc-bin benötigt.
Das zugehörige Tool ODBCConfig stellte sich dann jedoch quer, als es um die Anlage von Treiber und DSN ging und stellte wiederholt mit der Meldung:
ODBCConfig: ltdl.c:3104: try_dlopen: Assertion `filename && *filename’ failed.
Aborted
seinen Dienst ein.
Aber zum Glück lassen sich die Konfigurationsdateien auch händisch pflegen.
Dabei sollte die /etc/odbcinst.ini so aussehen:
[Oracle10g]
Description = Oracle 10g ODBC Driver
Driver = /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libsqora.so.10.1
Driver64 =
Setup =
Setup64 =
UsageCount = 1
CPTimeout =
CPReuse =
Auf diese Weise ist der Oracle-Treiber schon einmal verfügbar.
Jetzt zur DSN, die sich entweder als System-DSN unter /etc/odbc.ini befindet, oder unter selbigem Namen als User-DSN im eigenen Homeverzeichnis Platz findet:
[TEST]
Application Attributes = T
Attributes = W
BatchAutocommitMode = IfAllSuccessful
BindAsFLOAT = F
CloseCursor = F
DisableDPM = F
DisableMTS = T
Driver = Oracle10g
DSN = TEST
EXECSchemaOpt =
EXECSyntax = T
Failover = T
FailoverDelay = 10
FailoverRetryCount = 10
FetchBufferSize = 64000
ForceWCHAR = F
Lobs = T
Longs = T
MetadataIdDefault = F
QueryTimeout = T
ResultSets = T
ServerName = ora_tst:1529/test
SQLGetData extensions = F
Translation DLL =
Translation Option = 0
DisableRULEHint = T
UserID = testuser
StatementCache=F
CacheBufferSize=20
Und nachdem man “/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/” in seine ld.so.conf aufgenommen, und den Cache mit ldconfig erneuert hat, steht einer Oracle-Verbindung über ODBC (beispielsweise mit dem DataManagerII) nichts mehr im Wege:
Bleibt mir nun “nur” noch die Programmiererei.
11. Mai 2008 um 06:59
Als DB-Frontend, kann ich auch SquirrelSQL wärmstens empfehlen “http://www.squirrelsql.org/”. Für eine funktionierende Verbindung braucht man lediglich einen JDBC-Treiber - und den gibts fast für jede DB.
11. Mai 2008 um 11:58
@Marc:
Danke für den Hinweis, ich werde mir das Tool auf jeden Fall ansehen, Featureliste und Screenshots sehen auf jeden Fall vielversprechend aus.
12. Mai 2008 um 21:46
[...] ich die ODBC-Verbindung zu meiner Oracle-Datenbank scheinbar erfolgreich eingerichtet hatte, funktionierten die meisten DB-Funktionen mit dem danach installieren SquirreL SQL Client [...]