Announcement

Collapse
No announcement yet.

Frage zu Umgebungsvariablen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Frage zu Umgebungsvariablen

    Hallo zusammen,
    ich bin mir nicht sicher ob das hier rein gehört, oder ob ihr mir helfen könnt, aber ich versuchs mal.

    Ist es möglich set nls_lang=AMERICAN_AMERICA.WE8MSWIN1252 und set NLS_DATE_FORMAT dd.mm.yy

    gleichzeitig zu setzen bzw. zu verwenden?

    Problem ist das bei American das Datumsformat ja DD-MMM-YY ist, unsere Software damit aber nicht zurecht kommt, und als Datumsformat DD.MM.YY bräuchte.

    Danke schon im voraus für eure Antworten.

  • #2
    Sicher das sollte gehen kannst ja ganz einfach mal in sqlplus probieren.
    Allerdings rate ich generell dazu, Datumsausgaben mit to_char so zu formatieren wie man es braucht.
    Dann bringen auch unterschiedliche Ländereinstellungen die Anwendung nicht aus dem tritt.

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      super, danke für die schnelle Antwort.
      Ja leider wurde das nicht bedacht, und somit wären jetzt viele Änderungen nötig um to_char oder to_date überall einzubauen, daher wäre die momentan schnellere lösung für uns wenn ich es eben über NLS_Date_Format lösen kann. Ok dann werd ich des mal testen.
      Danke nochmal.

      Comment


      • #4
        Schau dir doch mal die SQL-Anweisung ALTER SYSTEM an. Mit dieser Anweisung kannst du die gewünschten NLS-Parameter setzen.

        kuemmelchen

        Comment


        • #5
          Schau dir doch mal die SQL-Anweisung ALTER SYSTEM an.
          Hast Du das mal ausprobiert?

          NLS Parameter können auf Sessionebene geändert werden oder als Umgebungsvariable auf dem Client gesetzt werden.

          Als ALTER SYSTEM Parameter tauchen sie nicht auf:
          http://download.oracle.com/docs/cd/B...htm#SQLRF00902

          Dim
          Zitat Tom Kyte:
          I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

          Comment


          • #6
            ALTER SYSTEM geht tatsächlich nicht. Sorry.

            Wie Dimitri schon erwähnte, können NLS-Parameter auf Sessionebene geändert werden oder als Umgebungsvariable auf dem Client gesetzt werden.

            Ein instanzweites Setzen der NLS-Parameter geht allerdings auch. Hierzu müssen nur die gewünschten NLS-Parameter in die SPFILE-Datei eingetragen werden. Das Eintragen geht leider nicht über ALTER SYSTEM SET ... SCOPE=SPFILE; Die SPFILE-Datei muss dazu manuell bearbeitet werden (gegebenenfalls über den Umweg PFILE).

            Diese Einstellungen werden aber von den Einstellungen des Clients überdeckt.

            Bei der Installation von Oracle wird die Umgebungsvariable NLS_LANG gesetzt und in die Registry unter HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 eingetragen (z.B.: NLS_LANG = GERMAN_GERMANY.WE8MSWIN1252).
            An dieser Stelle kann eine neue Zeichenfolge eingetragen werden.
            z.B.: NLS_DATE_FORMAT mit den Wert DD.MM.YYYY

            Es sei noch zu erwähnen, dass die Einstellungen des Clients von den Einstellungen der Session überdeckt werden.

            kuemmelchen

            Comment


            • #7
              Es gibt schon einen guten grund, warum das nicht einfach so zu ändern ist.
              Der Datensatz in dem die Datenbank speichert wird beim Erzeugen der Instance festgelegt. Wenn Du da jetzt irgendwas am Zeichnsatz rumfummelst (manuelles bearbeiten des SPFILE macht sie übrigends unbrauchbar), spielst Du ganz massiv mit deinen Daten.

              Dim
              Zitat Tom Kyte:
              I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

              Comment


              • #8
                Der Datensatz in dem die Datenbank speichert wird beim Erzeugen der Instance festgelegt.
                Ich sprach nicht vom Änden des Zeichensatzes in der Datenbank. Einen einmal festgelegten Zeichensatz kann nachträglich nicht mehr geändert werden.
                Durch Setzen der Umgebungsvariable NLS_LANG wird die Ausgabe bzw. die Eingabe der Daten beeinflußt, wie folgendes Beispiel zeigt:
                C:\Dokumente und Einstellungen\Student>set nls_lang=german_germany.us7ascii

                C:\Dokumente und Einstellungen\Student>sqlplus /nolog

                SQL*Plus: Release 9.2.0.1.0 - Production on Do Aug 7 13:57:06 2008

                Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

                SQL> conn / as sysdba
                Connect durchgefuhrt.
                SQL> insert into t_test values ('Bücher');

                1 Zeile wurde erstellt.

                SQL> select * from t_test;

                TEXT
                -----------------------------
                B☺cher

                SQL> exit
                Verbindung zu Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
                With the OLAP and Oracle Data Mining options
                JServer Release 9.2.0.1.0 - Production beendet

                C:\Dokumente und Einstellungen\Student>set nls_lang=german_germany.we8mswin1252

                C:\Dokumente und Einstellungen\Student>sqlplus /nolog

                SQL*Plus: Release 9.2.0.1.0 - Production on Do Aug 7 13:57:52 2008

                Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

                SQL> conn / as sysdba
                Connect durchgef³hrt.
                SQL> insert into t_test values ('Bücher');

                1 Zeile wurde erstellt.

                SQL> select * from t_test;

                TEXT
                -----------------------------
                B☺cher
                Bücher

                SQL>
                Das Ändern des Zeichensatzes als Umgebungsvariable beeinflußt damit stark, wie die Werte in der Datenbank gespeichert werden.

                manuelles bearbeiten des SPFILE macht sie übrigends unbrauchbar
                Die SPFILE-Datei sollte manuell nicht geändert werden. Da gebe ich dir recht. Versuche haben aber gezeigt, dass manuelle Änderungen (zumindest in der Version 9.2.0.1.0) nicht zum Zerstören der Datei führen. Die geänderten Parameter werden vom System auch akzeptiert.

                kuemmelchen

                Comment


                • #9
                  Durch Setzen der Umgebungsvariable NLS_LANG wird die Ausgabe bzw. die Eingabe der Daten beeinflußt,
                  Das hab ich auch nie bezweifelt. Aber es bringt nichts, die NLS variablen in der Datenbank selbst zu ändern.
                  1. NLS_LANG gibt es als Datenbankparameter nicht. Er ist ein reiner Clientparameter. Schreibst Du den in deine init.ora fährt die Instance nicht mehr hoch.
                  2. Die Ländereinstellungen einer Session werden, unabhängig von den Datenbankeinstellungen, durch den Client gesetzt. Du kannst den Client durch das Setzen von NLS_LANG und anderen Parametern beeinflussen. Machst Du das nicht, ließt der Client die Ländereinstellungen deines OS aus und setzt dann entsprechende Standardwerte.

                  Es bringt also nichts irgendwelche init.ora Parameter zu ändern.

                  Die
                  Zitat Tom Kyte:
                  I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

                  Comment


                  • #10
                    Ich habe mir nicht den kompletten Thread angeschaut, aber hier gibt es noch ein 2. Problem. Und zwar daß bei Windows die Zeichenkodierung bei der command box eine andere ist als bei grafischem Interface.

                    Wie sieht Dein Beispiel mit sqlplusw.exe aus?

                    Ich verwendet beim sqlplus

                    set NLS_LANG=GERMAN_GERMANY.WE8PC850

                    Suche im Metalink nach diesem setting, denn es gibt einige dokumente.

                    Ich hatte desswegen schon einen tar offen, kann ihn aber nicht erneut aufachen, da zu weit in der Vergangenheit :-( und erinnern kann ich mich noch weniger.

                    lg Dietmar

                    Comment

                    Working...
                    X