如何修改數據庫時區


如何修改數據庫時區

轉自:http://space.itpub.net/175005/viewspace-618100

首先確認會話時區是否正確,會話時區可能和數據庫時區不一致
SQL> SELECT SESSIONTIMEZONE FROM DUAL;

SESSIONTIMEZONE
---------------------------------------------------------------------------
+08:00

會話時區是北京時區

SQL> SELECT DBTIMEZONE FROM DUAL;

DBTIME
------
+00:00

DB是世界時區

SQL> SELECT TZ_OFFSET(SESSIONTIMEZONE), TZ_OFFSET(DBTIMEZONE) FROM DUAL;

TZ_OFFS TZ_OFFS
------- -------
+08:00  +00:00


1.檢查數據庫是否有這樣的字段類型 TIMESTAMP WITH LOCAL TIME ZONE 
SQL>select c.owner || '.' || c.table_name || '(' || c.column_name || ') -'
    || c.data_type || ' ' col
  from dba_tab_cols c, dba_objects o
 where c.data_type like '%WITH LOCAL TIME ZONE'
    and c.owner=o.owner
   and c.table_name = o.object_name
   and o.object_type = 'TABLE'
order by col
/

SQL>select u.name || '.' || o.name || '.' || c.name TSLTZcolumn
  from sys.obj$ o, sys.col$ c, sys.user$ u
 where c.type# = 231
   and o.obj# = c.obj#
   and u.user# = o.owner#;

2.檢查當前數據庫時區
SQL> select * from database_properties where property_name='DBTIMEZONE';
行將被截斷


PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ -------------------------------------------------
DBTIMEZONE                     00:00

3.改變數據庫時區
SQL> ALTER DATABASE SET TIME_ZONE = '+8:00';

數據庫已更改。

SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  272629760 bytes
Fixed Size                  1248528 bytes
Variable Size              92275440 bytes
Database Buffers          171966464 bytes
Redo Buffers                7139328 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> select dbtimezone from dual;

DBTIME
------
+08:00

 

4.檢查時間
SQL> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual

SQL> SELECT SYSTIMESTAMP FROM dual;

SYSTIMESTAMP
---------------------------------------------------------------------------
23-7月 -09 11.50.25.750000 上午 +08:00


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM