Ich möchte mich mit Oracle (11g) unter Verwendung von unixODBC
verbinden. Im Verbindungssatz möchte ich NUR alle Datenbank-/Datenquellinformationen angeben, und die ODBC INI-Dateien (/etc/odbc.ini
und /etc/odbcinst.ini
) sollen nur allgemeine Treiberinformationen wie z.B. die Position der '.so'-Datei enthalten. D.h. ich möchte, dass sie statisch sind. Ich möchte dies tun, damit ich den Verbindungssatz extern vom Benutzer erhalten und mich mit der Datenquelle verbinden kann, ohne irgendwelche INI-Dateien oder andere Festplattenkonfigurationen ändern zu müssen.
All die Beispiele, die ich gesehen habe, zwingen mich, die Serverinformationen in /etc/odbc.ini
wie folgt zu definieren:
[myDSNname]
Driver = OracleODBC-11g
DSN = OracleODBC-11g
ServerName = //xxx.xxx.xxx.xxx:1521/SID_NAME
UserID = my_user
Password = my_pass
Nun habe ich herausgefunden, wie ich den Benutzerdienstenamen und das Passwort in den Verbindungssatz einbeziehen kann, indem ich "UID=my_user;PWD=my_pass"
zum Verbindungssatz hinzufüge, und ich habe sie aus odbc.ini
entfernt. Meine Freude verging schnell, als ich keinen Weg fand, ServerName
aus odbc.ini
und auch in den Verbindungssatz einzufügen. Also wie mache ich das? Und gibt es eine Möglichkeit, den DSN in odbc.ini
ganz loszuwerden und nur den Driver
aus odbcinst.ini
im Verbindungssatz zu haben, so wie wir es für MySQL tun?
Bearbeiten: Beim Versuch von Verbindungssätzen von www.connectionstrings.com, die keine TNS oder einen DSN zu benötigen scheinen, inklusive EZCONNECT
Varianten, erhalte ich immer:
[HY000] [unixODBC][Oracle][ODBC][Ora]ORA-12162: TNS:net-Dienstname ist falsch angegeben
(12162) (SQLDriverConnectW)