2026年7月27日 星期一

Timezone Upgrade 異常案例

資料庫執行 impdp 作業時發生 time zone 相關錯誤 :

A black screen with white text

AI-generated content may be incorrect.

這個訊息表示 export 的來源資料庫 time zone version 為 44 ,而 import 到這個資料庫的 time zone 

為 32 低於來源資料庫,檢查目前的 time zone 資訊 :

SQL> select property_name,substr(property_value,1,30) value

     from database_properties where property_name like 'DST_%';

A screen shot of a computer

AI-generated content may be incorrect.

目前 time zone 已經從 32 upgrade 到 44 ,但是 upgrade 沒有完成導致 DST_UPGRADE_STATE 

的狀態仍為 UPGRADE ,檢視 time zone upgrade 過程的錯誤訊息如下 :

SQL> set serveroutput on

SQL> var numfail number

SQL> begin

      dbms_dst.upgrade_database(:numfail,

        parallel => true,

        log_errors => true,

        log_errors_table => 'SYS.DST$ERROR_TABLE',

        log_triggers_table => 'SYS.DST$TRIGGER_TABLE',

        error_on_overlap_time => false,

        error_on_nonexisting_time => false);

      dbms_output.put_line('Failures:'||:numfail);

    end;

    /

A screenshot of a computer program

AI-generated content may be incorrect.

結果顯示在 refresh materialized view 的時候發生 ORA-00942 table 不存在的錯誤。

經查證此 MView 已經不再使用,所以會產生 table 不存在的問題,將此不使用的 MView drop 

之後再檢查 time zone upgrade 已無錯誤 :

SQL> DROP MATERIALIZED VIEW GNC.MV_MERCH_DATA;

A computer screen shot of white text

AI-generated content may be incorrect.

upgrade 已無錯誤即可 end upgrade session :

SQL> var fail number

SQL> begin

      dbms_dst.end_upgrade(:fail);

      dbms_output.put_line('Failures:'||:fail);

    end;

    /

A computer screen shot of white text

AI-generated content may be incorrect.


end upgrade session 之後 DST_UPGRADE_STATE 狀態恢復正常 :

A screen shot of a computer

AI-generated content may be incorrect.