In Oracle Database bepalen de NLS-parameters (National Language Support) het locale-specifieke gedrag op zowel de client als de server.
Deze parameters kunnen op verschillende plaatsen worden ingesteld, zoals op databaseniveau, in een initialisatieparameterbestand, in omgevingsvariabelen, op sessieniveau en zelfs binnen sommige functies.
U kunt de waarde van de NLS-parameters controleren met de volgende weergaven.
NLS dynamische prestatieweergaven
Dynamische prestatieweergaven zijn speciale weergaven die continu worden bijgewerkt terwijl een database open en in gebruik is. Deze weergaven bevatten gegevens over een groot aantal zaken, waaronder geheugengebruik en -toewijzing, bestandsstatussen, voortgang van taken en taken, statistieken en statistieken, SQL-uitvoering, evenals systeem- en sessieparameters.
De volgende dynamische prestatieweergaven kunnen worden gebruikt om informatie over NLS-parameters te retourneren:
V$NLS_PARAMETERS
toont huidige waarden van verschillende NLS-parameters.V$NLS_VALID_VALUES
geeft de geldige waarden weer waarop verschillende NLS-parameters kunnen worden ingesteld.
Hier zijn voorbeelden van elke weergave.
De V$NLS_PARAMETERS
Bekijk
Hier is een voorbeeld van het opvragen van de V$NLS_PARAMETERS
weergave op mijn systeem:
SELECT * FROM V$NLS_PARAMETERS;
Resultaat:
PARAMETER VALUE CON_ID __________________________ _________________________________ _________ NLS_LANGUAGE ENGLISH 3 NLS_TERRITORY AUSTRALIA 3 NLS_CURRENCY $ 3 NLS_ISO_CURRENCY AUSTRALIA 3 NLS_NUMERIC_CHARACTERS ., 3 NLS_CALENDAR GREGORIAN 3 NLS_DATE_FORMAT DD/MON/RR 3 NLS_DATE_LANGUAGE ENGLISH 3 NLS_CHARACTERSET AL32UTF8 3 NLS_SORT BINARY 3 NLS_TIME_FORMAT HH12:MI:SSXFF AM 3 NLS_TIMESTAMP_FORMAT DD/MA/RR HH12:MI:SSXFF AM 3 N LS_TIME_TZ_FORMAT HH12:MI:SSXFF AM TZR 3 NLS_TIMESTAMP_TZ_FORMAT DD/MON/RR HH12:MI:SSXFF AM TZR 3 NLS_DUAL_CURRENCY $ 3 NLS_NCHAR_CHARACTERSET AL16UTF16 3 NLS_COMP BINARY_3 NLS_LENGEDe
V$NLS_VALID_VALUES
BekijkDe
V$NLS_VALID_VALUES
view geeft de geldige waarden weer waarop de volgende NLS-parameters kunnen worden ingesteld:
NLS_LANGUAGE
NLS_SORT
NLS_TERRITORY
NLS_CHARACTERSET
Om u een idee te geven van het type gegevens in deze weergave, volgt hier een zoekopdracht die de top 10 rijen retourneert:
SELECT * FROM V$NLS_VALID_VALUES
FETCH FIRST 10 ROWS ONLY;
Resultaat:
PARAMETERWAARDE ISDEPRECATED CON_ID ____________ __________________ _______________ _________ TAAL AMERIKAANS ONWAAR 0 TAAL DUITS ONWAAR 0 TAAL FRANS ONWAAR 0 TAAL CANADES FRANS ONWAAR 0 TAAL SPAANS FALSE 0 TAAL ITALIAANS FALSE ONWAAR 0
Deze waarden kunnen dus overal worden gebruikt waar een NLS-parameter een taalwaarde accepteert. We kunnen bijvoorbeeld het volgende doen:
ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN';
Wat de NLS_LANGUAGE
. instelt parameter naar AMERICAN
. Om het op een andere waarde in te stellen, kunnen we de V$NLS_VALID_VALUES
controleren bekijken om te zien welke talen worden geaccepteerd.
NLS-gegevenswoordenboekweergaven
U kunt de sessie-, instantie- en database-NLS-parameters controleren door de volgende datadictionary-weergaven op te vragen:
NLS_SESSION_PARAMETERS
toont de NLS-parameters en hun waarden voor de sessie die de weergave opvraagt. Het toont geen informatie over de tekenset.NLS_INSTANCE_PARAMETERS
toont de huidige NLS-instantieparameters die expliciet zijn ingesteld en de waarden van de NLS-instantieparameters.NLS_DATABASE_PARAMETERS
toont de waarden van de NLS-parameters voor de database. De waarden worden opgeslagen in de database.
Zoals gezegd kunnen NLS-parameters op verschillende plaatsen worden ingesteld. Elk bereik kan voor een bepaalde NLS-parameter andere waarden bevatten dan voor een ander bereik. Met de bovenstaande datadictionary-weergaven kunt u elk bereik opvragen op zijn waarde. NLS-sessieparameters overschrijven de NLS-instantieparameters. En de NLS-instantieparameters overschrijven de NLS-parameters voor de database.
Zie Methoden voor het instellen van NLS-parameters en hun prioriteiten voor een tabel met de voorrangsvolgorde die elk bereik heeft in relatie tot de andere.
Dit is wat ik krijg als ik elk van deze weergaven op mijn systeem opvraag:
SELECT * FROM NLS_SESSION_PARAMETERS;
SELECT * FROM NLS_INSTANCE_PARAMETERS;
SELECT * FROM NLS_DATABASE_PARAMETERS;
Resultaat:
PARAMETER VALUE __________________________ _________________________________ NLS_LANGUAGE ENGLISH NLS_TERRITORY AUSTRALIA NLS_CURRENCY $ NLS_ISO_CURRENCY AUSTRALIA NLS_NUMERIC_CHARACTERS ., NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD/MON/RR NLS_DATE_LANGUAGE ENGLISH NLS_SORT BINARY NLS_TIME_FORMAT HH12:MI:SSXFF AM NLS_TIMESTAMP_FORMAT DD/MON/RR HH12:MI:SSXFF AM NLS_TIME_TZ_FORMAT HH12:MI:SSXFF AM TZR NLS_TIMESTAMP_TZ_FORMAT DD/MON/RR HH12:MI:SSXFF AM TZR NLS_DUAL_CURRENCY $ NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE 17 rijen geselecteerd. PARAMETER VALUE __________________________ ___________ NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_SORT NLS_DATE_LANGUAGE NLS_DATE_FORMAT NLS_CURRENCY NLS_NUMERIC_CHARACTERS NLS_ISO_CURRENCY NLS_CALENDAR NLS_TIME_FORMAT NLS_TIMESTAMP_FORMAT NLS_TIME_TZ_FORMAT NLS_TIMESTAMP_TZ_FORMAT NLS_DUAL_CURRENCY NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE 17 rows selected. PARAMETER VALUE __________________________ _______________________________ NLS_RDBMS_VERSION 19.0.0.0.0 NLS_NCHAR_CONV_EXCP FALSE NLS_LENGTH_SEMANTICS BYTE NLS_COMP BINARY NLS_DUAL_CURRENCY $ NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_SORT BINARY NLS_DATE_LANGUAGE AMERICAN NLS_DATE_FORMAT DD-MON-RR NLS_CALENDAR GREGORIAN NLS_NUMERIC_CHARACTERS ., NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_CHAR ET AL32UTF8 NLS_ISO_CURRENCY AMERIKA NLS_CURRENCY $ NLS_TERRITORY AMERIKA NLS_LANGUAGE AMERICAN 20 rijen geselecteerd.
Neem de NLS_LANGUAGE
parameter bijvoorbeeld. Dit is ingesteld op AMERICAN
op zowel database- als instanceniveau (zoals te zien is in de NLS_DATABASE_PARAMETERS
en NLS_INSTANCWE_PARAMETERS
keer bekeken). Maar de sessieparameter (die te zien is in de NLS_SESSION_PARAMETERS
bekijken) gebruikt ENGLISH
, die de andere twee instellingen overschrijft.