Oracle 11G RAC 本地時間和通過listener連線時間不相同的問題
背景
客戶生產資料庫伺服器重啟後,本地時間和通過listener連線時間不相同的問題
,比我們實際時間要慢13個小時
作業系統版本:
AIX 6.1
資料庫版本
Oracle 11.2.0.2 RAC
問題描述和診斷過程
1.使用本地直接登陸和在本地通過listener查詢時間相差13個小時,初步定位為時區問題
bash-2.05b$ sqlplus "/as sysdba"
SQL> select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS'
--------------------------------------
2012-03-27 15:17:52
bash-2.05b$ sqlplus test/testaa@spprod
SQL> select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS'
--------------------------------------
2012-03-27 02:18:50
SQL>
2.根據上面推論,檢視作業系統時區和資料庫時區,發現時區都一致,都是正8區,說明作業系統時區或者資料庫設定沒有問題,這時候推斷可能是listener有問題或者是sysdate遠端取值有問題
bash-2.05b$ echo $TZ
Asia/Shanghai
bash-2.05b$
檢視資料庫時區
SQL> select dbtimezone from dual;
DBTIMEZONE
------------
+08:00
3.根據上面推斷可能是listener有問題或者sysdate取值有問題,我們先看一下sysdate的取值的原理,根據metalink [ID 227334.1], SYSDATE 和 SYSTIMESTAMP只是簡單呼叫作業系統去取得時間,也就是說sysdate的取值來源於作業系統,oracle不會對sysdate的值進行處理,sysdate沒有問題
4. sysdate問題排除,那就是listener的問題了,繼續往下看,發現這這篇文件中也提到,作業系統時間和通過listener時間不一致的情況,出現這種情況可能是資料庫啟動時的時區和現在作業系統的時間不一致導致的,需要重啟資料庫和listener,在另一篇文件中[ID 301420.1]也說是這種情況導致的,解決方案也是重啟資料庫和listener
5.由於是RAC環境,打算一個節一個節點的重啟,於是把兩個節點的例項和CRS一個一個的進行重啟
停節點2例項
bash-2.05b$ srvctl stop instance -d spprod -i spprod2
切換到root使用者下面停CRS
bash-2.05b# /sporacle/11202/grid/bin/crsctl stop crs
上面crs啟來之後再把例項啟來,接下來我們重複上面操作,重啟第一個節點
停例項1
bash-2.05b$ srvctl stop instance -d spprod -i spprod1
切換到root使用者停CRS
bash-2.05b# /sporacle/11202/grid/bin/crsctl stop crs
6.重啟之後發現和原來一樣,說明不是這個問題,是不是和grid使用者下管理ASM的例項時區也有關係呢?兩個節點grid下面例項時區都是’+00.00’,於是查詢公司另外的11G RAC環境,發現其它環境也一樣,但是其它環境沒有這個問題,基本可以排除這個問題
7.問題還沒有解決,只能繼續查了,最後找到了下面這篇文件How To Change Timezone for 11gR2
Grid Infrastructure [ID 1209444.1],文件上面說在 oracle 11.2.0.1 grid直接讀取作業系統時區,在oracle 11.2.0.2 grid的時區放在$GRID_HOME/crs/install/s_crsconfig_
8.根據文件檢視s_crsconfig_
bash-2.05b# more s_crsconfig_spdb1_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=CST6CDT
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
RT_GRQ=ON
TNS_ADMIN=
ORACLE_BASE=
修改s_crsconfig_spdb1_env.txt的TZ=Asia/Shanghai (別忘記兩個節點都需要修改)
9.修改好之後重啟database和CRS,問題解決
10.總結
估計為安裝oracle CRS的時候作業系統時區為CST6CDT,安裝之後有人修改過作業系統時區和資料庫時區
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21605631/viewspace-720087/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RAC的時間同步問題
- oracle RAC 11G 時間同步策略Oracle
- Oracle 11g RAC通過SCAN IP連線資料庫 - JDBC連線串問題Oracle資料庫JDBC
- oracle 11g ocp各考試科目題量、時間和通過率要求Oracle
- Oracle 11G RAC ntp時間同步配置Oracle
- inux安裝oracle rac機器的時間同步問題UXOracle
- RAC中修改系統時間的問題
- linux安裝oracle rac機器的時間同步問題LinuxOracle
- ORACLE 11g RAC時鐘同步問題Oracle
- Perl中本地時間和UNIX時間戳間相互轉換時間戳
- python獲取網路時間和本地時間Python
- Oracle RAC節點時間差過大解決方法Oracle
- 本地連線時,通過localhost不能登陸到指定的埠localhost
- Oracle叢集(RAC)時間同步(ntp和CTSS)Oracle
- Oracle rac時間不同步Oracle
- Oracle RAC時間同步(NTP/CTSS)Oracle
- RAC節點之間通訊問題 兩節點 11g RAC
- 【LISTENER】Oracle通過監聽連線緩慢分析Oracle
- 轉:Oracle 臨時表空間過大問題解決Oracle
- mysql時間操作(時間差和時間戳和時間字串的互轉)MySql時間戳字串
- oracle rac中設定時間同步Oracle
- db2 前滾最小恢復時間和時間戳問題DB2時間戳
- Linked server和SSIS連線Oracle時的常見問題ServerOracle
- Java 獲取本地時間與網路時間Java
- 本地時間與UTC(世界協調時間)的轉換
- 虛擬機器安裝Oracle RAC, 時間同步問題 - time stamp is in the future虛擬機Oracle
- 內網通過ntpdate同步時間內網
- oracle 時間欄位自動更新問題Oracle
- Laravel MongoDB 時間區間查詢的問題LaravelMongoDB
- 時間管理與其他系統的連線
- 【實驗】重建臨時表空間解決臨時表空間過大問題
- 有關時間同步的問題
- 關於時間 PHP 處理包遇到的問題時間序列化差值問題PHP
- 時間型別和時間戳型別時間戳
- Unix 字串時間戳問題字串時間戳
- Oracle 11g修改AWR資料取樣時間間隔及歷史快照保留時間Oracle
- oracle 9i 臨時表空間問題Oracle
- 【RAC】部署安裝RAC時確保主節點的時間小於其他節點時間