可以在會話中設置NLS參數值(有時在登錄觸發器中),從操作系統環境繼承,或者在實例啓動時設置,這使得跟蹤它們有點棘手。
下面的查詢顯示從數據庫中發散,如果你可以從你的兩個分叉環境中,此輸出,它可以幫助:
SELECT * FROM
(
SELECT PARAMETER,
VALUE AS SESSION_VALUE,
(SELECT VALUE FROM NLS_INSTANCE_PARAMETERS NIP
WHERE NIP.PARAMETER = NSP.PARAMETER) INSTANCE_VALUE,
(SELECT VALUE FROM NLS_DATABASE_PARAMETERS NDP
WHERE NDP.PARAMETER = NSP.PARAMETER) DATABASE_VALUE
FROM NLS_SESSION_PARAMETERS NSP
)
WHERE NVL(INSTANCE_VALUE, DATABASE_VALUE) <> DATABASE_VALUE
OR NVL(SESSION_VALUE, NVL(INSTANCE_VALUE, DATABASE_VALUE)) <> DATABASE_VALUE
當我跑了在Windows SQL * Plus中,我得到了沒有行返回,所以我的應用程序環境和數據庫默認值沒有區別。但是,當我從Unix環境運行它時:
PARAMETER SESSION_VALUE INSTANCE_VALUE DATABASE_VALUE
------------------------- ------------------------- ------------------------- -------------------------
NLS_DATE_FORMAT YYYY-MM-DD HH24:MI:SS DD-MON-RR
NLS_TIMESTAMP_TZ_FORMAT YYYY-MM-DD HH24:MI:SS.FF DD-MON-RR HH.MI.SSXFF AM
TZH:TZM TZR
亞當 - 非常感謝你。這非常有用。對不起,我不能增加「這個答案很有用」的反擊 - 我還沒有足夠的聲望。 – Jim 2010-02-16 18:51:28