71 DBMS_DST
DBMS_DSTパッケージは、夏時間(DST)パッチをTimestamp with Time Zoneデータ・タイプに適用するためのインタフェースを提供しています。
この章のトピックは、次のとおりです:
71.1 DBMS_DSTの概要
夏時間が有効になるとき、また夏時間が終了するときの移行期間中は、タイム・ゾーン・データのあるタイムスタンプを処理するときにデータ損失などの問題が発生する可能性があります。DBMS_DST
パッケージでは、ルール・セットのコンテキストでこうした移行に対応できます。
71.2 DBMS_DSTのセキュリティ・モデル
DBMS_DST
パッケージは実行者権限のパッケージです。
参照:
実行者権限または定義者権限の使用方法の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
このパッケージの実行権限は、EXECUTE_CATALOG_ROLE
ロールに付与されています。通常、このロールは、選択したユーザーにデータ・ディクショナリのパッケージおよびプロシージャに対するEXECUTE
権限を許可するために付与されます。
このパッケージを起動するユーザーには、次の権限が必要です。
-
CREATE
ANY
TABLE
-
ALTER
ANY
TABLE
-
DROP
ANY
TABLE
-
SELECT
ANY
TABLE
-
LOCK
ANY
TABLE
-
ALTER
ANY
INDEX
-
ALTER
ANY
TRIGGER
-
UPDATE
ANY
TABLE
-
EXECUTE
ANY
TYPE
71.3 DBMS_DSTのビュー
DBMS_DST
パッケージでは、表情報を表示するためにビューが使用されます。
これらのビューを、次の表に示します。これらの詳細は、『Oracle Databaseリファレンス』を参照してください。
表71-1 DBMS_DSTで使用されるビュー
ビュー | 説明 |
---|---|
データベースのすべての表のうち、 |
|
現在のユーザーが所有している表のうち、 |
|
現在のユーザーがアクセス可能な表に関する情報を表示します。表には、 |
71.4 DBMS_DSTサブプログラムの要約
この表は、DBMS_DST
パッケージのサブプログラムについて説明しています。
表71-2 DBMS_DSTパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
準備ウィンドウを開始します。 |
|
アップグレード・ウィンドウを開始します。 |
|
FIND_AFFECTED_TABLESプロシージャの説明に示されているスキーマを持つ表を作成します。 |
|
ログ・エラー表を作成します。 |
|
表のアップグレードを実行する前には無効になっており、アップグレード・プロセスで致命的な障害が発生したため有効化されていない、アクティブなトリガーを記録する場合に使用される表を作成します。 |
|
準備ウィンドウを終了します。 |
|
アップグレード・ウィンドウを終了します。 |
|
タイムゾーンのバージョンが新しいためTSTZデータが影響を受けたすべての表を検索します。 |
|
データベース内で、TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含むすべての表をアップグレードします。 |
|
スキーマの指定されたリスト内で、TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含む表をアップグレードします。 |
|
TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含む表の指定されたリストをアップグレードします。 |
71.4.1 BEGIN_PREPAREプロシージャ
このプロシージャは、準備ウィンドウを開始します。準備ウィンドウが正常に開始されると、データベース・プロパティDST_UPGRADE_STATE
はPREPARE
に設定され、データベース・プロパティSECONDARY_TT_VERSION
は新しいバージョンのタイムゾーンに設定されます。
準備ウィンドウによって、DBAは、アップグレードの影響を受けるデータを調査し、アップグレードを実行するのに最適な時期を判断できます。準備ウィンドウには、通常のデータベース操作をオーバーラップさせることができます。
構文
DBMS_DST.BEGIN_PREPARE ( new_version IN BINARY_INTEGER);
パラメータ
表71-3 BEGIN_PREPAREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
データベースがアップグレードされる新しいバージョンのタイムゾーン |
71.4.2 BEGIN_UPGRADEプロシージャ
このプロシージャは、アップグレード・ウィンドウを開始します。
構文
DBMS_DST.BEGIN_UPGRADE ( new_version IN BINARY_INTEGER, error_on_overlap_time IN BOOLEAN := FALSE, error_on_nonexisting_time IN BOOLEAN := FALSE);
パラメータ
表71-4 BEGIN_UPGRADEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
データベースがアップグレードされる新しいバージョンのタイムゾーン。 |
|
「オーバーラップ」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。デフォルトは |
|
「存在しない」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。 デフォルト値は |
71.4.3 CREATE_AFFECTED_TABLEプロシージャ
このプロシージャは、FIND_AFFECTED_TABLESプロシージャの説明に示されているスキーマを持つ表を作成します。
構文
DBMS_DST.CREATE_AFFECTED_TABLE ( table_name IN VARCHAR2);
パラメータ
表71-5 CREATE_AFFECTED_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
作成する表名。 |
使用上のノート
このプロシージャはスキーマ修飾なしでtable_name
を取り、現行のユーザー・スキーマ内で表を作成します。
71.4.4 CREATE_ERROR_TABLEプロシージャ
このプロシージャは、ログ・エラー表を作成します。
この表には次のスキーマが含まれます。
CREATE TABLE dst$error_table( table_owner VARCHAR2(30), table_name VARCHAR2(30), column_name VARCHAR2(4000), rid ROWID, error_number NUMBER)
構文
DBMS_DST.CREATE_ERROR_TABLE ( table_name IN VARCHAR2);
パラメータ
表71-6 CREATE_ERROR_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
作成する表名。 |
使用上のノート
-
このプロシージャはスキーマ修飾なしで
table_name
を取り、現行のユーザー・スキーマ内で表を作成します。 -
タイム・ゾーン・データでタイム・ゾーン・ファイルおよびタイムスタンプをアップグレードするとき、エラー番号が見つかります。タイム・ゾーン・データでタイム・ゾーン・ファイルおよびタイムスタンプをアップグレードするときのエラーの処理については、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。
71.4.5 CREATE_TRIGGER_TABLEプロシージャ
このプロシージャは、表のアップグレードを実行する前には無効になっており、アップグレード・プロセス中に致命的な障害が発生したため有効化されていない、アクティブなトリガーを記録する表を作成します。
次のスキーマが含まれる表。
CREATE TABLE dst_trigger_table ( trigger_owner VARCHAR2(30), trigger_name VARCHAR2(30));
構文
DBMS_DST.CREATE_TRIGGER_TABLE ( table_name IN VARCHAR2);
パラメータ
表71-7 CREATE_TRIGGER_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
作成する表の名前 |
使用上のノート
このプロシージャはスキーマ修飾なしでtable_name
を取り、現行のユーザー・スキーマ内で表を作成します。
71.4.7 END_UPGRADEプロシージャ
このプロシージャは、アップグレード・ウィンドウを終了します。アップグレード・ウィンドウは、影響を受けるすべてのユーザー表がアップグレードされると終了されます。それ以外の場合は、OUT
パラメータnum_of_failures
によって、変換されていない表の数が示されます。
構文
DBMS_DST.END_UPGRADE ( num_of_failures OUT BINARY_INTEGER);
パラメータ
表71-8 END_UPGRADEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
途中で失敗した表の数。 |
71.4.8 FIND_AFFECTED_TABLESプロシージャ
このプロシージャは、タイムゾーンのバージョンが新しいためTSTZデータが影響を受けたすべての表を検索します。
このプロシージャは、準備ウィンドウでのみ起動できます。TSTZデータが影響を受けた表は、パラメータaffected_tables
によって示される表に記録されます。セマンティック・エラーは、記録が必要な場合、パラメータlog_errors_table
によって示される表に記録されます。
構文
DBMS_DST.FIND_AFFECTED_TABLES ( affected_tables IN VARCHAR2 =: 'sys.dst$affected_tables', log_errors IN BOOLEAN := FALSE, log_errors_table IN VARCHAR2 =: 'sys.dst$error_table', parallel IN BOOLEAN := FALSE);
パラメータ
表71-9 FIND_AFFECTED_TABLESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
次のスキーマを持つ表の名前。 CREATE TABLE dst$affected_tables ( table_owner VARCHAR2(30), table_name VARCHAR2(30), column_name VARCHAR2(4000), row_count NUMBER, error_count NUMBER) この表はCREATE_AFFECTED_TABLEプロシージャを使用して作成できます。 |
|
アップグレード中にエラーを記録するかどうかを示すブール・フラグ。 デフォルトは |
|
次のスキーマを持つ表の名前。 CREATE TABLE dst$error_table ( table_owner VARCHAR2(30), table_name VARCHAR2(30), column_name VARCHAR2(4000), rid ROWID, error_number NUMBER) この表はCREATE_ERROR_TABLEプロシージャを使用して作成できます。 |
|
影響を受ける表の検出にパラレル問合せを使用するか、シリアル問合せを使用するかを示すブール・フラグ。デフォルトは |
71.4.9 UPGRADE_DATABASEプロシージャ
このプロシージャは、データベース内で、TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含むすべての表をアップグレードします。
このプロシージャは、アップグレード・ウィンドウの開始後にのみ起動できます。各表はアトミック・トランザクションでアップグレードされます。元表およびそのマテリアライズド・ビューのログ表がアトミック・トランザクションでアップグレードされることに注意してください。
構文
DBMS_DST.UPGRADE_DATABASE ( num_of_failures OUT BINARY_INTEGER, upgrade_data IN BOOLEAN := TRUE, parallel IN BOOLEAN := FALSE, continue_after_errors IN BOOLEAN := TRUE, log_errors IN BOOLEAN := FALSE, log_errors_table IN VARCHAR2 =: 'sys.dst$error_table' , error_on_overlap_time IN BOOLEAN := FALSE, error_on_nonexisting_time IN BOOLEAN := FALSE, log_triggers_table IN VARCHAR2 := 'sys.dst$trigger_table');
パラメータ
表71-10 UPGRADE_DATABASEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
途中で失敗した表の数。 |
|
新しいタイムゾーン・パッチ・ファイルを使用してTSTZデータを変換するか( |
|
PDML(パラレルDML)を使用して表を変換するか、シリアルDMLを使用して表を変換するかを示すブール・フラグ。デフォルトは |
|
現行の表でアップグレードが失敗した後に続行するかどうかを示すブール・フラグ。 デフォルトは |
|
アップグレード中にエラーを記録するかどうかを示すブール・フラグ。 デフォルトは |
|
次のスキーマを持つ表の名前。 CREATE TABLE dst$error_table ( table_owner VARCHAR2(30), table_name VARCHAR2(30), column_name VARCHAR2(4000), rid ROWID, error_number NUMBER) この表はCREATE_ERROR_TABLEプロシージャを使用して作成できます。 |
|
「オーバーラップ」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。 デフォルトは |
|
「存在しない」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。 デフォルトは |
|
アップグレード前は無効になっており、アップグレード実行時に致命的な障害のため有効化されていないトリガーを記録する表。 |
71.4.10 UPGRADE_SCHEMAプロシージャ
このプロシージャは、スキーマの指定されたリスト内で、TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含む表をアップグレードします。
このプロシージャは、アップグレード・ウィンドウの開始後にのみ起動できます。各表はアトミック・トランザクションでアップグレードされます。元表およびそのマテリアライズド・ビューのログ表がアトミック・トランザクションでアップグレードされることに注意してください。
構文
DBMS_DST.UPGRADE_SCHEMA ( num_of_failures OUT BINARY_INTEGER, schema_list IN VARCHAR2, upgrade_data IN BOOLEAN := TRUE, parallel IN BOOLEAN := FALSE, continue_after_errors IN BOOLEAN := TRUE, log_errors IN BOOLEAN := FALSE, log_errors_table IN VARCHAR2 =: 'sys.dst$error_table' , error_on_overlap_time IN BOOLEAN := FALSE, error_on_nonexisting_time IN BOOLEAN := FALSE, log_triggers_table IN VARCHAR2 := 'sys.dst$trigger_table');
パラメータ
表71-11 UPGRADE_SCHEMAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
途中で失敗した表の数。 |
|
スキーマ名のリスト(カンマで区切られた文字列)。 |
|
新しいタイムゾーン・パッチ・ファイルを使用してTSTZデータを変換するか( |
|
PDML(パラレルDML)を使用して表を変換するか、シリアルDMLを使用して表を変換するかを示すブール・フラグ。デフォルトは |
|
現行の表でアップグレードが失敗した後に続行するかどうかを示すブール・フラグ。デフォルトは |
|
アップグレード中にエラーを記録するかどうかを示すブール・フラグ。 デフォルトは |
|
次のスキーマを持つ表の名前。 CREATE TABLE dst$error_table ( table_owner VARCHAR2(30), table_name VARCHAR2(30), column_name VARCHAR2(4000), rid ROWID, error_number NUMBER) この表はCREATE_ERROR_TABLEプロシージャを使用して作成できます。 |
|
「オーバーラップ」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。 デフォルトは |
|
「存在しない」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。 デフォルトは |
|
アップグレード前は無効になっており、アップグレード実行時に致命的な障害のため有効化されていないトリガーを記録する表。 |
71.4.11 UPGRADE_TABLEプロシージャ
このプロシージャは、TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含む表の指定されたリストをアップグレードします。
構文
DBMS_DST.UPGRADE_TABLE ( num_of_failures OUT BINARY_INTEGER, table_list IN VARCHAR2, upgrade_data IN BOOLEAN := TRUE, parallel IN BOOLEAN := FALSE, continue_after_errors IN BOOLEAN := TRUE, log_errors IN BOOLEAN := FALSE, log_errors_table IN VARCHAR2 =: 'sys.dst$error_table' , error_on_overlap_time IN BOOLEAN := FALSE, error_on_nonexisting_time IN BOOLEAN := FALSE, log_triggers_table IN VARCHAR2 := 'sys.dst$trigger_table', atomic_upgrade IN BOOLEAN := FALSE);
パラメータ
表71-12 UPGRADE_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
途中で失敗した表の数。 |
|
表名のリスト(カンマで区切られた文字列)。 |
|
新しいタイムゾーン・パッチ・ファイルを使用してTSTZデータを変換するか( デフォルトは |
|
PDML(パラレルDML)を使用して表を変換するか、シリアルDMLを使用して表を変換するかを示すブール・フラグ。 デフォルトは |
|
現行の表でアップグレードが失敗した後に続行するかどうかを示すブール・フラグ。 デフォルトは |
|
アップグレード中にエラーを記録するかどうかを示すブール・フラグ。 デフォルトは |
|
次のスキーマを持つ表の名前。 CREATE TABLE dst$error_table ( table_owner VARCHAR2(30), table_name VARCHAR2(30), column_name VARCHAR2(4000), rid ROWID, error_number NUMBER) この表はCREATE_ERROR_TABLEプロシージャを使用して作成できます。 |
|
「オーバーラップ」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。 デフォルトは |
|
「存在しない」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。 デフォルトは |
|
アップグレード前は無効になっており、アップグレード実行時に致命的な障害のため有効化されていないトリガーを記録する表。 |
|
リストされた表をアトミックに(単一のトランザクションで)変換するかどうかを示すブール・フラグ。 デフォルトは |
使用上のノート
このプロシージャは、アップグレード・ウィンドウの開始後にのみ起動できます。表のリストは、次の部分的な順序付けを満たしている必要があります。
-
元表にマテリアライズド・ビューのログ表が含まれている場合、ログ表はリストの次の項目である必要があります。
-
リストにマテリアライズド・ビューのコンテナ表が表示されている場合、マテリアライズド・ビューの「アップグレードされていない」元表およびログ表は、その表のリスト内でコンテナ表の前に表示される必要があります。
元表およびそのマテリアライズド・ビュー・ログ表は、atomic_upgrade
をTRUE
に指定して、アトミック・トランザクションでアップグレードする必要があります。