2011-11-17 109 views
0

即使在關閉我的oracle sql developer之後,是否可以永久地改變會話?永久地改變會話

,我想改變的聲明的一個例子:

Alter Session Set Nls_Timestamp_Tz_Format='HH24:MI TZR'; 

上面的語句只允許我以改變當前會話,而不是永久使它。

感謝

+0

題外話了這麼;屬於serverfault.com。 –

回答

1

如果您只想更改SQL Developer的默認值,則可以在SQL Developer設置中執行此操作。在SQL Developer 3.1中(雖然導航可能略有不同,但早期版本中存在相同的設置),Tools |首選項|數據庫| NLS允許您指定時間戳格式和時間戳TZ格式。然後,SQL Developer將在創建新會話時自動爲您發出適當的ALTER SESSION命令。

+0

嗨,謝謝你的回答。它非常清楚。我知道sql開發人員可以更改我們自己的設置。但是,如果我授予其他用戶的表,他們將不會有相同的配置。有沒有配置它的示例方法? – JLearner

+0

@ user976050 - 否。其他用戶將使用其他客戶端。其他客戶端將從其他地方進行NLS設置。其他用戶可能有不同的NLS偏好。如果要向其他用戶呈現字段的特定字符串表示形式,請創建一個視圖,該視圖使用指定的格式掩碼執行顯式的「TO_CHAR」,並授予用戶訪問視圖的權限。 –

+0

好吧,這就是我所做的顯示不同表中的所有不同的時區。我只是在想,如果有什麼更簡單的方法可以讓它永久保存。感謝您的澄清! – JLearner

0

您需要設置在initialization parameter file以影響整個數據庫。

+0

數據庫中的NLS設置被客戶端上的設置所否決,因此不起作用。實際使用數據庫的默認NLS設置的情況很少。 –

0

初始化參數如Nls_Timestamp_Tz_Format可以從三個來源設置:

  • 使用ALTER SESSION SET語句
  • 在客戶端的參數文件中的會話init.ora
  • 在服務器端的參數文件spfile
+0

我可以知道如何修改'init.ora'來設置它的默認值嗎? – JLearner

+0

init.ora和spfile都是服務器端參數文件。任何給定的數據庫實例都可以使用init.ora文件或使用spfile啓動,但不能同時啓動。 NLS設置由客戶端控制,並針對不同的客戶端應用程序進行不同的控制。類似於SQL * Plus的東西將從'NLS_LANG'中派生出'NLS_TIMESTAMP_TZ_FORMAT',它被設置爲一個環境變量或者在註冊表中。其他應用程序將從別處獲取值。 –

+0

因此總而言之,即使我授予他們特權,也無法編輯其他客戶端的nls設置?謝謝 – JLearner

0

要在數據庫中永久設置數據庫中的默認值: -

alter system ... scope=spfile; 

然後作爲SYS(因此您可能需要與DBA交談),並且顯然在適當的時間! -

shutdown; 
startup; 

(我知道spfile中已經提到,但都可以從sqlplus中CMDLINE做,至少在11g中。)