【新炬網路名師大講堂】RAC環境下SYSDATE返回錯誤時間

shsnchyw發表於2014-12-24

某客戶反饋說,在11.2.0.3的RAC下,使用sqlplus連線時查詢sysdate返回的時間是正確的,但是使用PL/SQL等透過Listener方式連線的時候,則返回錯誤的時間。

其實造成這個問題的原因是11.2.0.2後的新特性:

11.2.0.1的時候TZ變數取決於grid和root使用者的shell環境變數TZ。

但是從11.2.0.2開始,Oracle的叢集(GI)開始擁有自己的時區和配置,即TZ引數存在$GRID_HOME/crs/install/s_crsconfig__env.txt中設定的time zone。

[grid@11gR2 install]$ cat s_crsconfig_11gr2_env.txt
### This file can be used to modify the NLS_LANG environment variable, which determines the charset to be used for messages.
### For example, a new charset can be configured by setting NLS_LANG=JAPANESE_JAPAN.UTF8
### Do not modify this file except to change NLS_LANG, or under the direction of Oracle Support Services

TZ=Asia/Shanghai
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
TNS_ADMIN=
ORACLE_BASE=

一般叢集的時區是在安裝GI時從系統獲取的。經過溝通後,客戶確實在前段時間更改過系統時區,至此造成的sysdate返回錯誤的原因就是因為當作業系統的時區發生改變時,但是GI的時區未改變。

具體修改可以參考MOS:How To Change Timezone for 11gR2 Grid Infrastructure (Doc ID 1209444.1)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29960155/viewspace-1378748/,如需轉載,請註明出處,否則將追究法律責任。

相關文章