2016-01-21 72 views
0

有人可以請解釋清楚這些表中的值之間的差異。 (在標題中提到)nls_session_parameters vs nls_instance_parameters vs nls_database_parameters

我不明白:

nls_session_parameters:在會話級設置的值(做這些超越控制實例和數據庫級別)

nls_instance_parameters:在實例級別設定值(我們怎麼意思按實例級別)

nls_database_parameters:設置整個數據庫級別的值。

現在,如果數據庫是RAC類型,多個SID在上面的表中可以有不同的值嗎?

我目前正面臨着一個問題,在很多會話中'NLS_NUMERIC_CHARACTERS'被設置爲錯誤的值,並且我無法每次更改會話。行爲是隨機的,非常混亂

+2

只有它的會話值很重要,如果你的會話設置不同,那麼連接的客戶端會根據它們的語言環境明確或間接地設置它。你有沒有明確的'to_number()'或'to_char()'調用的代碼,你希望它的行爲一致,無論會話會話?如果是這樣,請顯示一個引起問題的示例語句。 –

回答

2

對於99.9%的已知宇宙,你只會關心會話設置。會話設置始終會覆蓋數據庫或實例設置。會話設置由客戶端上的設置決定,而不是由服務器上的任何設置決定。即使您的代碼看起來沒有客戶端運行(例如通過dbms_job提交的作業),提交作業的會話的NLS設置也將用於執行該作業。

在RAC集羣中,存在單個數據庫,但該數據庫的多個實例(每個RAC節點一個)。您可能能夠在RAC羣集的不同節點上設置不同的NLS設置(因此會導致nls_instance_parameters產生不同的結果),但從基本上可以解決0問題的角度和從在RAC羣集的不同節點上運行不同配置設置的立場是作爲DBA的痛苦,折磨和心痛的祕訣。

相關問題