Frage

Ich arbeite an einer Rails-Website, die zu einer Oracle-Datenbank verbindet, und obwohl ich nicht auf die Website von Grund auf neu bauen habe, ich tue Wartungsarbeiten. Die Website verwendet den delayed_jobs Plugin einige Hintergrund-Tasks und ich möchte in der Lage sein rake jobs:work auf dem Entwicklungsserver ausführen, um in regelmäßigen Abständen alle Aufträge in der Warteschlange zu verarbeiten (aufgrund der Konfiguration des Servers, eine daemonisierte Version des Skripts auf dem Entwicklungsserver ausgeführt wird, ist keine Option). Jedes Mal, wenn ich den Befehl versuche ausgeführt wird, erhalte ich die folgenden klassischen Oracle-Fehler:

error while trying to retrieve text for error ora-12154

Normalerweise würde ich denke, das ist ein Authentifizierungsproblem wäre (zum Beispiel falsche Anmeldeinformationen in database.yml), aber die Website ist und läuft fein (und viele Datenbank Sachen tun). Ich habe versucht, indem RAILS_ENV=production als Parameter rake es zu zwingen, in der Produktionsumgebung laufen in, bekam aber den gleichen Fehler (es gibt zwei separate Schienen Anlagen für die Produktion und Entwicklung Versionen der Website, und ich habe das Set „Entwicklung“ und „Produktion“ Berechtigungsnachweise in db-Konfigurationsdatei der Entwicklung identisch sein).

Ich bin mir nicht sicher, was diesen Fehler verursachen könnte, und ich weiß nicht eine Tonne Erfahrung mit Oracle mit Schienen haben. Irgendwelche Vorschläge?

Vielen Dank!

Justin

EDIT (10/26/09): Noch kann nicht herausfinden, was das Problem hier verursacht. Die App läuft weiter (und in die Datenbank zu sprechen), ohne ein Problem, aber Rake hält werfen DB Fehler. Das Gleiche gilt für Skript / Konsole, die eine Eingabeaufforderung zeigt aber erste beschwert sich mit der gleichen Oracle-Fehlermeldung. Ich werde schauen, um zu halten, aber ich bin mit der Ratlosigkeit ...

EDIT (10/26/09, später): Im Anschluss an die Beratung von diesem Link , habe ich sowohl ORACLE_HOME und TNS_ADMIN in das Verzeichnis verweist, in dem tnsnames.ora lebt. Nur Einstellung ORACLE_HOME hatte keine offensichtliche Wirkung, aber jetzt, dass TNS_ADMIN Punkte an der richtigen Stelle, ich habe begonnen, Fehler immer Segmentierung, wenn ich versuche, die Konsole oder Lauf Rake zu öffnen:

/usr/local/lib/ruby/site_ruby/1.8/oci8.rb:184: [BUG] Segmentation Fault

und unsanft zurück auf die Eingabeaufforderung gestartet bekommen. Darüber hinausgehende Ideen?

War es hilfreich?

Lösung

Schließlich hätte es ... stellt sich heraus, dass ORACLE_HOME nicht korrekt als Umgebungsvariable für mein Benutzerkonto festgelegt werden. Jetzt Rechen, Skript / Konsole, etc. brummt glücklich.

Andere Tipps

Das Orakel Fehler sagt der folgende:

  

ORA-12154 wird von der Oracle-Netzwerkschicht erzeugt. TNS Fehlermeldung wird während des Anmeldevorgangs auf eine Datenbank geworfen. Dieser Fehler zeigt an, dass die Kommunikationssoftware in Oracle (SQL * Net oder Net8) hat den Host / Service-Namen in dem Verbindungsparameter angegeben nicht erkennen. Dieser Fehler fast immer deutet auf eine fehlerhafte Konfiguration des Orakels tns Einträge.

Können Sie Ihre Oracle-Instanz mit sqlplus oder einem anderen db-Tool verbinden?

Es ist seltsam, dass der App läuft jedoch in Ordnung.

Gibt es einen $ ORACLE_SID irgendwo Verlegung, die zu einem db gerichtet sein könnte, die gar nicht existieren?

in SQL Server würde ich laufen woanders vermutlich profuiler zu sehen, was tatsächlich umge gesendet wird, was ich denke, ich habe einrichten. Ich bin sicher, dass Oracle hängt auch irgendeine Art von Profilierungs Dienstprogramm hat. Ich würde versuchen, dass und sehen, Sie finden es nicht ist, um die Anmeldeinformationen Sie tink es ist.

Nun, wie Mike erwähnt, ora-12145 bedeutet TNS nicht die Datenbank-Kennung lösen könnte (TNS ist Oracle Name-zu-Datenbank-Mapping, sorta-irgendwie wie DNS). Wenn Sie Ihre Datei tnsnames.ora finden können, können Sie sehen, welche Datenbanken konfiguriert sind dort und vergleichen Sie das mit der database.yml Datei. Die Tatsache, dass es als verzögertes Job funktioniert, aber nicht von der Kommandozeile ist ein wenig seltsam, aber, und lässt mich denken, dass vielleicht gibt es einige Umgebungsvariablen sind in einem Kontext gesetzt werden, die nicht in der anderen sind.

Wenn keiner dieses pan out, gibt es eine lange Liste von Lösungsvorschlägen unter < a href = "http://ora-12154.ora-code.com" rel = "nofollow noreferrer"> http://ora-12154.ora-code.com , die zu diesem Fehlercode spezifisch sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top