準備更新時區檔案 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

準備更新時區檔案

時區檔案升級有兩個不同的階段:準備和升級。雖然並非必要,但強烈建議您執行準備步驟。在此步驟中,您會了解執行 PL/SQL 程序 會影響哪些資料DBMS_DST.FIND_AFFECTED_TABLES。如需準備視窗的詳細資訊,請參閱 Oracle 資料庫文件中的使用時區資料升級時區檔案和時間戳記

如要準備更新時區檔案
  1. 使用SQL用戶端連線至 Oracle 資料庫。

  2. 決定目前使用的時區檔案版本。

    SELECT * FROM V$TIMEZONE_FILE;
  3. 決定您資料庫執行個體上可用的最新時區檔案版本。

    SELECT DBMS_DST.GET_LATEST_TIMEZONE_VERSION FROM DUAL;
  4. 決定具有類型 TIMESTAMP WITH LOCAL TIME ZONETIMESTAMP 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');
  5. 決定具有類型 TIMESTAMP WITH LOCAL TIME ZONETIMESTAMP 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;
  6. 執行準備步驟。

    • 程序 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 * FROM my_affected_table; SELECT * FROM my_error_table;
  7. 查詢受影響和錯誤資料表。

    SELECT * FROM my_affected_table; SELECT * FROM my_error_table;