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

這個訊息表示 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_%'; |

目前 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; / |

結果顯示在 refresh materialized view 的時候發生 ORA-00942 table 不存在的錯誤。
經查證此 MView 已經不再使用,所以會產生 table 不存在的問題,將此不使用的 MView drop
之後再檢查 time zone upgrade 已無錯誤 :
SQL> DROP MATERIALIZED VIEW GNC.MV_MERCH_DATA; |

upgrade 已無錯誤即可 end upgrade session :
SQL> var fail number SQL> begin dbms_dst.end_upgrade(:fail); dbms_output.put_line('Failures:'||:fail); end; / |

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

沒有留言:
張貼留言