Beruflich beim Kunden wird noch Oracle 9 eingesetzt und neuerdings testweise auch ein paar Oracle 11 Instanzen. Nun benötigten wir einen Link von der 9er Instanz zur 11er Instanz. Ein DB-Link ist auch einigermaßen schnell gesetzt, analog zu den anderen schon vorhandenen:
CREATE DATABASE LINK "datenbank" CONNECT TO benutzer IDENTIFIED BY passwort USING 'datenbank.server.domain';
Allein, es funktionierte nicht. Beim Abfragen kam immer die Fehlermeldung:
ORA-01017: invalid username/password; logon denied ORA-02063: preceding line from datenbank
Lustigerweise stimmen aber User/Passwort Kombination eindeutig, denn ein manueller Connect per sqlplus klappt. Mittlerweile beschäftigen sich schon mehrere Mitarbeiter so mehrere Stunden mit dem Problem. Eine Googlesuche fördert dann den folgenden Link zutage.
Die Kurzform:
Seit Oracle 11 werden Passwörter case sensitiv gehandhabt, es spielt also eine Rolle, ob man das Passwort groß schreibt oder klein. Vorher spielte das keine Rolle. Wenn man den Link wie oben beschrieben anlegt, wird Oracle 9 das Passwort Uppercase, also in Großbuchstaben im Data Dictionary vermerken. Ergo klappt der Connect natürlich nicht. Um das zu vermeiden, muß man doppelte Hochkomma um das Passwort setzen. Der obige Link muß also heißen:
CREATE DATABASE LINK "datenbank" CONNECT TO benutzer IDENTIFIED BY "passwort" USING 'datenbank.server.domain';
Lustigerweise habe ich extra vorher noch mal in die Doku geschaut und mich an den vorhandenen Beispielen orientiert. Stand natürlich nichts von Hochkommata. Ich hatte nämlich ganz am Anfang sowas im Verdacht. Aber nach Doku war es ja erlaubt, trotzdem testete ich es auf gut Glück mit einem einfachen Hochkomma. Brach natürlich ab mit Syntax Fehler. Da glaubte ich der Doku. *Argl*



