SQL>> alter database set time_zone='+8:00'
*
ERROR at line 1:
ORA-30079: cannot>TIMESTAMP WITH LOCAL TIME ZONE columns
主要问题就是因为上面红色字体标注,即使用了本地时区列,为了查找这个列,查了不少资料。
--查找有问题的表
SQL> select u.name || '.' || o.name || '.' || c.name
2 TSLTZcolumn from sys.obj$ o, sys.col$ c, sys.user$ u
3 where c.type# = 231 and o.obj# = c.obj# and u.user# = o.owner#;
TSLTZCOLUMN
--------------------------------------------------------------------------------
OE.ORDERS.ORDER_DATE
就是上面这个这个表中的列采用了 timestamp with local timezone
--查看oe.orders表的属性
SQL> desc oe.orders
Name Null? Type
----------------------------------------- -------- ----------------------------
ORDER_ID NOT NULL NUMBER(12) ORDER_DATE NOT NULL TIMESTAMP(6) WITH LOCAL TIME
ZONE
ORDER_MODE VARCHAR2(8)
CUSTOMER_ID NOT NULL NUMBER(6)
ORDER_STATUS NUMBER(2)
ORDER_TOTAL NUMBER(8,2)
SALES_REP_ID NUMBER(6)
PROMOTION_ID NUMBER(6)
--删除此列
SQL>>
Table> --再次设置时区
SQL>>
Database> SQL> startup force;
ORACLE instance started.
Total System Global Area 608174080 bytes