select dbtimezone from dual;
DBTIME
---------
-06:00
OK,先將rac停掉,再在一段啟動數據庫,更改time_zone參數:
alter database set time_zone='+08:00';
更改參數后,將數據庫shutdown,再將Rac數據庫啟動起來;
接着分別運行以下SQL,查看時間是否校准:
select sysdate from dual;
select current_date from dual;
select current_timestamp from dual;
host date
select systimestamp from dual;
在sqlplus中發現時間一致,但是開發反應使用pl/sql查詢的時候顯示時間不一致。即
sysdate,systimestamp很current_date,
current_timestamp的時間不一致。
都知道
sysdate,systimestamp取的是系統的時間,為什么sqlplus中查詢的值是准確的值,而通過pl/sql連接查詢的值就不是准確的?
為了定位是不是數據庫的問題,在該操作系統上使用DBCA重新創建一個test DB,之后查看該test數據庫,發現問題依舊,從此處可以大概估算下應該不是數據庫的問題,是操作系統的問題。
在AIX操作系統下date看到操作系統時區為BEIST-8,由於是測試庫,將操作系統時區改為CST(Asia/shanghai)之后,重啟操作系統,使用pl/sql連接數據庫,發現問題解決,所有時間均一致,且都在東八區。