本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
準備更新時區檔案
時區檔案升級有兩個不同的階段:準備和升級。雖然並非必要,但強烈建議您執行準備步驟。在此步驟中,您會了解執行 PL/SQL 程序 會影響哪些資料DBMS_DST.FIND_AFFECTED_TABLES
。如需準備視窗的詳細資訊,請參閱 Oracle 資料庫文件中的使用時區資料升級時區檔案和時間戳記
如要準備更新時區檔案
-
使用SQL用戶端連線至 Oracle 資料庫。
-
決定目前使用的時區檔案版本。
SELECT * FROM V$TIMEZONE_FILE;
-
決定您資料庫執行個體上可用的最新時區檔案版本。
SELECT DBMS_DST.GET_LATEST_TIMEZONE_VERSION FROM DUAL;
-
決定具有類型
TIMESTAMP WITH LOCAL TIME ZONE
或TIMESTAMP WITH TIME ZONE
資料欄的資料表總大小。SELECT SUM(BYTES)/1024/1024/1024 "Total_size_w_TSTZ_columns_GB" FROM DBA_SEGMENTS WHERE SEGMENT_TYPE LIKE 'TABLE%' AND (OWNER, SEGMENT_NAME) IN (SELECT OWNER, TABLE_NAME FROM DBA_TAB_COLUMNS WHERE DATA_TYPE LIKE 'TIMESTAMP%TIME ZONE');
-
決定具有類型
TIMESTAMP WITH LOCAL TIME ZONE
或TIMESTAMP WITH TIME ZONE
資料欄的區段名稱和大小。SELECT OWNER, SEGMENT_NAME, SUM(BYTES)/1024/1024/1024 "SEGMENT_SIZE_W_TSTZ_COLUMNS_GB" FROM DBA_SEGMENTS WHERE SEGMENT_TYPE LIKE 'TABLE%' AND (OWNER, SEGMENT_NAME) IN (SELECT OWNER, TABLE_NAME FROM DBA_TAB_COLUMNS WHERE DATA_TYPE LIKE 'TIMESTAMP%TIME ZONE') GROUP BY OWNER, SEGMENT_NAME;
-
執行準備步驟。
-
程序
DBMS_DST.CREATE_AFFECTED_TABLE
會建立資料表,來儲存任何受影響的資料。您將此資料表的名稱傳遞給DBMS_DST.FIND_AFFECTED_TABLES
程序。如需詳細資訊,請參閱 Oracle 資料庫文件中的 CREATE_AFFECTED_TABLE 程序。 -
此程序
CREATE_ERROR_TABLE
會建立一個資料表來記錄錯誤。如需詳細資訊,請參閱 Oracle 資料庫文件中的 CREATE_ERROR_TABLE 程序。
下列範例會建立受影響的資料和錯誤資料表,並找出所有受影響的資料表。
EXEC DBMS_DST.CREATE_ERROR_TABLE('
my_error_table
') EXEC DBMS_DST.CREATE_AFFECTED_TABLE('my_affected_table
') EXEC DBMS_DST.BEGIN_PREPARE(new_version
); EXEC DBMS_DST.FIND_AFFECTED_TABLES('my_affected_table
', TRUE, 'my_error_table
'); EXEC DBMS_DST.END_PREPARE; SELECT * FROMmy_affected_table
; SELECT * FROMmy_error_table
; -
-
查詢受影響和錯誤資料表。
SELECT * FROM
my_affected_table
; SELECT * FROMmy_error_table
;