Oracle12c修改時區

Oacle12c支持可插入數據庫(PDB)在一個統一的數據庫(CDB)中具備不一樣的字符集、時區文件版本和數據庫時區。sql

出於性能緣由,Oracle建議將數據庫時區設置爲UTC(0:00),由於不須要轉換時區。數據庫

多租戶體系結構容許您爲每一個可插入數據庫指定一個不一樣的數據庫時區,並使用容器數據庫的時區做爲默認值。session

在容器數據庫級別設置時區與爲非cdb實例設置時區相同。CDB設置是全部可插入數據庫的默認值。oop

1. 檢查容器數據庫的當前時間性能

sqlplus / as sysdbafetch

 

 SQL> select dbtimezone from dual;spa

 

2. 查看PDB時區code

SQL> alter session set container=orclpdb;blog

SQL> SELECT dbtimezone FROM DUAL;ip

 

3. 修改PDB時區,根據實際須要設置時區

SQL> ALTER DATABASE SET TIME_ZONE='+00:00';

 

報錯處理:

ORA-30079: cannot alter database timezone when database has TIMESTAMP WITH
LOCAL TIME ZONE columns

1) 清除帶時區格式的時間字段表

--sql begin----

--刪除用戶指定表----

declare v_sql varchar(255);

cursor cur_tb is select 'drop table '|| owner || '.' || table_name || ' purge ' sqltext from dba_tables 

where table_name = 'T_BOS_DBTIMEZONEINFO'

AND OWNER <> 'SYS' AND OWNER <> 'SYSTEM';

begin 

--打開遊標cur_tb--

open cur_tb; 

fetch cur_tb into v_sql; 

loop 

--判斷遊標cur_stu所指是否有數據行--

if cur_tb%found then 

--將遊標cur_stu當前行取出存放到變量中--

begin 

execute immediate v_sql; 

exception 

when others then 

dbms_output.put_line('刪除用戶表異常:'||sqlerrm); 

end; 

fetch cur_tb into v_sql;

else

exit;

end if; 

end loop;

--關閉遊標cur_tb--

close cur_tb; 

end;

--sql end----

2) 修改PDB時區

alter database set time_zone='+00:00';

 

4. 修改好後須要重啓pdb

SQL> alter pluggable database orclpdb close;

SQL> alter pluggable database orclpdb close immediate;

SQL> alter pluggable database orclpdb open;

SQL> select dbtimezone from dual;

 

附(標紅爲國內經常使用時區):

  • UTC-12(IDL - 國際換日線)
  • UTC-11 (MIT - 中途島標準時間)
  • UTC-10(HST - 夏威夷-阿留申標準時間)
  • UTC-9:30(MSIT - 馬克薩斯羣島標準時間)
  • UTC-9(AKST - 阿拉斯加標準時間)
  • UTC-8(PST - 太平洋標準時間A)
  • UTC-7(MST - 北美山區標準時間)
  • UTC-6(CST - 北美中部標準時間)
  • UTC-5(EST - 北美東部標準時間)
  • UTC-4(AST - 大西洋標準時間)
  • UTC-3:30(NST - 紐芬蘭島標準時間)
  • UTC-3(SAT - 南美標準時間)
  • UTC-2(BRT - 巴西時間)
  • UTC-1(CVT - 佛得角標準時間)
  • UTC(WET - 歐洲西部時區,GMT - 格林威治標準時間)
  • UTC+1(CET - 歐洲中部時區)
  • UTC+2(EET - 歐洲東部時區)
  • UTC+3(MSK - 莫斯科時區)
  • UTC+3:30(IRT - 伊朗標準時間)
  • UTC+4(META - 中東時區A)
  • UTC+4:30(AFT- 阿富汗標準時間)
  • UTC+5(METB - 中東時區B)
  • UTC+5:30(IDT - 印度標準時間)
  • UTC+5:45(NPT - 尼泊爾標準時間)
  • UTC+6(BHT - 孟加拉標準時間)
  • UTC+6:30(MRT - 緬甸標準時間)
  • UTC+7(IST - 中南半島標準時間)
  • UTC+8(EAT - 東亞標準時間/中國標準時間(BJT))
  • UTC+9(FET- 遠東標準時間)
  • UTC+9:30(ACST - 澳大利亞中部標準時間)
  • UTC+10(AEST - 澳大利亞東部標準時間)
  • UTC+10:30(FAST - 澳大利亞遠東標準時間)
  • UTC+11(VTT - 瓦努阿圖標準時間)
  • UTC+11:30(NFT - 諾福克島標準時間)
  • UTC+12(PSTB - 太平洋標準時間B)
  • UTC+12:45(CIT - 查塔姆羣島標準時間)
  • UTC+13(PSTC - 太平洋標準時間C)
  • UTC+14(PSTD - 太平洋標準時間D)

詳情見https://zh.wikipedia.org/wiki/%E6%97%B6%E5%8C%BA%E5%88%97%E8%A1%A8#UTC+8%EF%BC%88EAT_-_%E6%9D%B1%E4%BA%9E%E6%A8%99%E6%BA%96%E6%99%82%E9%96%93/%E4%B8%AD%E5%9C%8B%E6%A8%99%E6%BA%96%E6%99%82%E9%96%93(BJT)%EF%BC%89

相關文章
相關標籤/搜索