In Oracle Database, i parametri NLS (National Language Support) determinano il comportamento specifico della locale sia sul client che sul server.
Questi parametri possono essere impostati in vari punti, ad esempio a livello di database, in un file di parametri di inizializzazione, in variabili di ambiente, a livello di sessione e persino all'interno di alcune funzioni.
Puoi controllare il valore dei parametri NLS con le seguenti viste.
Viste delle prestazioni dinamiche NLS
Le viste prestazioni dinamiche sono viste speciali che vengono continuamente aggiornate mentre un database è aperto e in uso. Queste viste contengono dati su un gran numero di cose, tra cui l'utilizzo e l'allocazione della memoria, lo stato dei file, lo stato di avanzamento dei lavori e delle attività, le statistiche e le metriche, l'esecuzione SQL, nonché i parametri di sistema e di sessione.
Le seguenti visualizzazioni dinamiche delle prestazioni possono essere utilizzate per restituire informazioni sui parametri NLS:
V$NLS_PARAMETERS
mostra i valori correnti di vari parametri NLS.V$NLS_VALID_VALUES
elenca i valori validi su cui è possibile impostare vari parametri NLS.
Ecco alcuni esempi di ciascuna vista.
Il V$NLS_PARAMETERS
Visualizza
Ecco un esempio di query su V$NLS_PARAMETERS
visualizza sul mio sistema:
SELECT * FROM V$NLS_PARAMETERS;
Risultato:
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 GG/LUN/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_LENGTH_SEMANTICS BYTE 3 NLS_NCHAR_CONV_EXCP>EIl
V$NLS_VALID_VALUES
VisualizzaIl
V$NLS_VALID_VALUES
view elenca i valori validi su cui è possibile impostare i seguenti parametri NLS:
NLS_LANGUAGE
NLS_SORT
NLS_TERRITORY
NLS_CHARACTERSET
Per darti un'idea del tipo di dati contenuti in questa vista, ecco una query che restituisce le prime 10 righe:
SELECT * FROM V$NLS_VALID_VALUES
FETCH FIRST 10 ROWS ONLY;
Risultato:
PARAMETRO VALORE ISDEPRECATED CON_ID ____________ __________________ _______________ _________ LINGUA AMERICANO FALSO 0 LINGUA TEDESCO FALSO 0 LINGUA FRANCESE FALSO 0 LINGUA FRANCESE CANADESE FALSO 0 LINGUA SPAGNOLO FALSO 0 LINGUA ITALIANO FALSO 0 LINGUA OLANDESE FALSO 0 LINGUA SVEDESE FALSO 0 LINGUA DANESE LINGUA NORWEGIAN FALSO 0
Pertanto, questi valori possono essere utilizzati ovunque un parametro NLS accetti un valore di lingua. Ad esempio, potremmo fare quanto segue:
ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN';
Che imposta il NLS_LANGUAGE
parametro a AMERICAN
. Per impostarlo su un valore diverso, possiamo controllare il V$NLS_VALID_VALUES
visualizza per vedere quali lingue sono accettate.
Viste del dizionario dei dati NLS
Puoi controllare i parametri NLS di sessione, istanza e database eseguendo query sulle seguenti viste del dizionario di dati:
NLS_SESSION_PARAMETERS
mostra i parametri NLS e i relativi valori per la sessione che sta interrogando la vista. Non mostra informazioni sul set di caratteri.NLS_INSTANCE_PARAMETERS
mostra i parametri dell'istanza NLS correnti che sono stati impostati in modo esplicito e i valori dei parametri dell'istanza NLS.NLS_DATABASE_PARAMETERS
mostra i valori dei parametri NLS per il database. I valori sono memorizzati nel database.
Come accennato, i parametri NLS possono essere impostati in vari punti. Ciascun ambito può contenere valori diversi per un determinato parametro NLS rispetto a un altro ambito. Le viste del dizionario dei dati precedenti consentono di interrogare ogni ambito per il relativo valore. I parametri della sessione NLS sovrascrivono i parametri dell'istanza NLS. E i parametri dell'istanza NLS sostituiscono i parametri NLS per il database.
Vedere Metodi per impostare i parametri NLS e le relative priorità per una tabella che delinea l'ordine di precedenza di ciascun ambito rispetto agli altri.
Ecco cosa ottengo quando interrogo ciascuna di queste viste sul mio sistema:
SELECT * FROM NLS_SESSION_PARAMETERS;
SELECT * FROM NLS_INSTANCE_PARAMETERS;
SELECT * FROM NLS_DATABASE_PARAMETERS;
Risultato:
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 GG/LUN/RR HH12:MI:SSXFF AM TZR NLS_DUAL_CURRENCY $ NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE 17 righe selezionate. 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_CHARACTERS ET AL32UTF8 NLS_ISO_CURRENCY AMERICA NLS_CURRENCY $ NLS_TERRITORY AMERICA NLS_LANGUAGE AMERICAN 20 righe selezionate.
Prendi il NLS_LANGUAGE
parametro per esempio. Questo è impostato su AMERICAN
sia a livello di database che di istanza (come si può vedere da NLS_DATABASE_PARAMETERS
e NLS_INSTANCWE_PARAMETERS
visualizzazioni). Ma il parametro di sessione (che può essere visto in NLS_SESSION_PARAMETERS
view) utilizza ENGLISH
, che sovrascrive le altre due impostazioni.