Hallo,
wir führen auf unserer Oracle 8i-Datenbank einige Cron-Jobs mit Perl-Skript aus, welche eine Verbindung mit DBI->Connect() herstellen.
Nachdem wir jetzt in der Test-Umgebung die 8i-Datenbank auf die Version 10g migrierten, bekommen wir keinen Connect mehr hin.
Beim Aufruf der (selben) Skripte erhalten wir folgende Fehlermeldung:
DBI connect('','<User>',...) failed: ORA-12705: invalid or unknown NLS parameter value specified (DBD ERROR: OCISessionBegin) at ...
Nachdem ich jetzt bereits das Metalink nach NLS-Tars durchforstet habe, bin ich mir (fast) sicher, dass es nicht an irgendwelchen NLS-Parametern liegt.
(zumal sich hier absolut nix geändert hat)
Bei weiterer Recherche habe ich einen Hinweis gefunden, das DBD neu zu kompilierern, was unser OS-Admin auch getan hat. Nach dieser Aktion konnte ich mich auch erfolgreich zur 10g-Datenbank connecten.... dafür funktioniert aber nun der Connect zur 8i-Datenbank nicht mehr :-(
Hier erhalte ich dann folgende Fehlermeldung:
DBI connect('','<USER>',...) failed: ERROR OCIEnvNlsCreate (check ORACLE_HOME and NLS settings etc.) at....
Momentan bin ich etwas ratlos...
Kann ich das DBD nur für eine Oracle-Version nutzen?
Bin für jeden Hinweis dankbar!
User since
2003-08-04
7321
Artikel
ModeratorIn
[quote=Guest,31.08.2005, 11:48]Kann ich das DBD nur für eine Oracle-Version nutzen?[/quote]
genau.
wenn ihr das zeug neu kompiliert, könntet ihr ja die Namen gleich mitanpassen:
* DBD-Oracle10g
* DBD-Oracle8i
...
und dann im Script das eine oder andere benutzen.
User since
2005-08-31
3
Artikel
BenutzerIn
Hallo esskar,
vielen Dank für die schnelle Antwort!
Ich muss noch mal nachfragen, da ich auf dem Gebiet nicht so erfahren bin. (die Bereitstellung der Perl-Installation macht der OS-Admin und der ist ja... wie das immer so ist .... nicht da).
Wenn ich dich richtig verstehe, brauche ich definitiv für jede Oracle-Version ein eigenes DBD ?
Wir müssten dann eines erstellen für die 8er Datenbanken (exisitiert ja schon...also lassen, wie es ist) und ein ZUSÄTZLICHES für die 10er Datenbanken, welches dann einfach einen anderen Namen bekommt und in den Skripten entsprechend über diesen Namen referenziert wird?
User since
2003-08-04
7321
Artikel
ModeratorIn
[quote=mz,31.08.2005, 12:54]Wir müssten dann eines erstellen für die 8er Datenbanken (exisitiert ja schon...also lassen, wie es ist) und ein ZUSÄTZLICHES für die 10er Datenbanken, welches dann einfach einen anderen Namen bekommt und in den Skripten entsprechend über diesen Namen referenziert wird?[/quote]
so sieht es aus, ja!
User since
2003-08-06
2246
Artikel
ModeratorIn
Ohne den Fehler schon zu kennen - habe ich keine Probleme mit beliebiger Oracle-DBD auf beliebige Oracle-Versionen von 8i bis 9i zuzugreifen. Mit 10g hatte ich noch nichts zu tun, aber das man dafür neu kompilieren müßte, halte ich für eher unwarscheinlich.
User since
2005-08-31
3
Artikel
BenutzerIn
Sorry, für das Doppel-Posting von eben (falscher Knopf im falschen Fenster gedrückt...)
@Relais: Könntest du mir bitte mal mitteilen, ob in deiner Umgebung auf Client-Seite der NLS_LANG-Parameter gesetzt ist?
Ich habe eben einen Hinweis von Oracle bekommen, diesen wegzulassen:
Original-Antwort:
looks similar to
Bug.2035377/2316907 (80) PERL DBI MODULE RETURNS ERROR WHEN NLS_LANG IS SET...:
It suggests that unsetting NLS_LANG in the script works.
We can try this - there is no reason given why this would work??
By unsetting this a default will be forced to be used.
eos (end of section)
Ich habe das mal ausprobiert, und dann geht es auch.
Allerdings werden da Default-Werte angenommen (ich vermute mal US7ASCII, und wir brauchen WE8ISO8859P1), was mir ein bischen Bauchweh macht.
User since
2003-08-06
2246
Artikel
ModeratorIn
[quote=mz,31.08.2005, 13:56]@Relais: Könntest du mir bitte mal mitteilen, ob in deiner Umgebung auf Client-Seite der NLS_LANG-Parameter gesetzt ist?[/quote]
Ist nicht gesetzt.
User since
2005-08-31
3
Artikel
BenutzerIn
Hallo Relais,
danke für deine schnelle Antwort!
Könntest du (wenns keine Umstände macht) den Parameter vielleicht mal setzen,
(z.B.: $ENV{'NLS_LANG'} 'AMERICAN_AMERICA.WE8ISO8859P1';) und versuchen, ob du dann noch einen Connect auf ne 8er UND 9er DB hinbekommst?
Gruß
Michael
User since
2003-08-06
2246
Artikel
ModeratorIn
Ich muß im Moment passen, für die 8i müßte ich erst nochmal neue credentials organisieren. Mit viel Glück später.
User since
2003-08-04
12208
Artikel
Admin1
[quote=mz,31.08.2005, 12:54]Wenn ich dich richtig verstehe, brauche ich definitiv für jede Oracle-Version ein eigenes DBD ?
Wir müssten dann eines erstellen für die 8er Datenbanken (exisitiert ja schon...also lassen, wie es ist) und ein ZUSÄTZLICHES für die 10er Datenbanken, welches dann einfach einen anderen Namen bekommt und in den Skripten entsprechend über diesen Namen referenziert wird?[/quote]
perldoc only