2015-07-21 72 views
2

爲什麼在Oracle中有邏輯不同視圖爲Ñ大號 anguage 小號 upport?會話VS實例VS數據庫中的Oracle NLS設置

我可以理解會話和數據庫之間區分的必要性 - 允許客戶自定義設置。

會話與實例有什麼關係?

我運行了一個查詢來比較它們之間的值,這裏是結果(我注意到NLS_DATABASE_SETTINGS有更多參數,其他參數的所有參數都加上了一些,因此我將它作爲我的起始點):

SELECT 
    db.parameter as parameter, 
    db.value as database_value, 
    s.value as session_value, 
    i.value as instance_value 
FROM 
    nls_database_parameters db 
LEFT JOIN 
    nls_session_parameters s 
ON s.parameter = db.parameter 
LEFT JOIN 
    nls_instance_parameters i 
ON i.parameter = db.parameter 
ORDER BY parameter 

enter image description here

我想深挖和解決我的PL/SQL開發客戶端的問題,獨自一人,不能夠顯示希伯來語字符。公司中的所有其他人都是。

更新:在希伯來語顯示字符的問題(這是不是這裏的問題)解決了,我貼here解決以下。

回答

4

有趣的問題,我不知道它們之間的區別,直到我做了一些研究。有看看這個網站National-Language-Support

NLS_DATABASE_PARAMETERS

當您創建數據庫時,你告訴它你將如何處理 或不處理數據庫的全球化。 NLS_DATABASE_PARAMETERS視圖將顯示這些設置在 數據庫創建時間。這些固定在數據庫級別,並且 不能更改。好消息是,雖然他們確實建立了一些 你的選擇下關於道路具有全球數據庫的談話 ,他們只當檢查約束在 數據庫強制執行使用。因此,您不必擔心這些設置在數據庫創建時間後會有什麼變化。

NLS_INSTANCE_PARAMETERS

如你所知,你可以通過連接init.ora文件或SPFILE更改多種參數爲實例 。 NLS_INSTANCE_PARAMETERS視圖將顯示在實例級別設置爲 的那些設置。

NLS_SESSION_PARAMETERS

此外,你必須設置每個會話的 全球化參數的能力和NLS_SESSION_PARAMETERS視圖將顯示 你當前的設置是什麼。該視圖特定於從中查詢的 會話。

+1

@PatrickHofman,因爲每個人都有自己的「工作」,如上所述,是NLS_DATABASE_PARAMETERS創建數據庫時,作爲NLS_SESSION_PARAMETERS將顯示您個人設置的設置,我的回答我覆蓋大部分。如果他閱讀完整的文章,他會理解很多東西。 – Moudiz

+0

第一件事:通過其他人的問題我自己也學到了很多:-) – Veverke

+1

Patrick,Moudiz是對的,它增加了答案。我認爲這個問題最終是關於Oracle DB中的一個實例和一個會話之間的區別。但是這肯定會增加有用的信息。 – Veverke