2016-04-29 187 views
0

我正在嘗試獲取Oracle 11g數據庫的時區。我運行以下查詢:無法識別Oracle數據庫的正確時區

select dbtimezone from dual; 

DBTIMEZONE
-------------------
+00:00

然後我嘗試下面的查詢並檢查了數據庫的屬性以查看時區:

select property_name, property_value from database_properties; 

Property_Name | PROPERTY_VALUE
------------------------------------------------ ---
DBTIMEZONE .... 00:00

現在我想改變我的數據庫的時區。爲此,我運行以下查詢:

alter database set time_zone='-06:00'; 

數據庫集TIME_ZONE =' - 06:00'已更改。

現在,當我試圖通過查詢來獲取時區:

select dbtimezone from dual; 

DBTIMEZONE
-------------
+00:00

它沒有反映出這裏的變化。

但是,當我在數據庫的屬性檢查時區,我得到了改變之一:

select property_name, property_value, description from database_properties; 

PROPERTY_NAME | Property_Value
---------------------------------------------
DBTIMEZONE .....- 06:00

那麼爲什麼Dual表不顯示改變的時區?

回答

0

請參閱the docs(搜索set_time_zone_clause):set time_zone修改僅在重新啓動數據庫後生效。

使用此子句設置或更改時區後,必須重新啓動數據庫才能使新時區生效。

演示:

SQL> select dbtimezone from dual; 

DBTIME 
------ 
+00:00 

SQL> alter database set time_zone = '+01:00' ; 

Database altered. 

SQL> select dbtimezone from dual; 

DBTIME 
------ 
+00:00 

SQL> shutdown immediate; 
Database closed. 
Database dismounted. 
ORACLE instance shut down. 
SQL> startup 
ORACLE instance started. 

Total System Global Area 1610612736 bytes 
Fixed Size     2924928 bytes 
Variable Size    754978432 bytes 
Database Buffers   838860800 bytes 
Redo Buffers    13848576 bytes 
Database mounted. 
Database opened. 
SQL> select dbtimezone from dual; 

DBTIME 
------ 
+01:00 
+0

但使用查詢「從雙重選擇DBTIMEZONE」當無法看到的變化。它始終顯示00:00 – aashii

+0

如果重新啓動,則不會顯示。 – Mat