DBMS_DSTパッケージは、夏時間(DST)パッチをTimestamp with Time Zoneデータ・タイプに適用するためのインタフェースを提供しています。
関連項目:
|
この章では、次の項目について説明します。
概要
セキュリティ・モデル
ビュー
夏時間が有効になるとき、また夏時間が終了するときの移行期間中は、タイム・ゾーン・データのあるタイムスタンプを処理するときにデータ損失などの問題が発生する可能性があります。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
DBMS_DST
パッケージでは、表62-1「DBMS_DSTで使用されるビュー」に示されるビューが使用されます。詳細は、『Oracle Databaseリファレンス』を参照してください。
表62-1 DBMS_DSTで使用されるビュー
ビュー | 説明 |
---|---|
|
データベースのすべての表のうち、 |
|
現在のユーザーが所有している表のうち、 |
|
現在のユーザーがアクセス可能な表に関する情報を表示します。表には、 |
表62-2 DBMS_DSTパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
準備ウィンドウを開始します。 |
|
アップグレード・ウィンドウを開始します。 |
|
FIND_AFFECTED_TABLESプロシージャの説明に示されているスキーマを持つ表を作成します。 |
|
ログ・エラー表を作成します。 |
|
表のアップグレードを実行する前には無効になっており、アップグレード・プロセスで致命的な障害が発生したため有効化されていない、アクティブなトリガーを記録する場合に使用される表を作成します。 |
|
準備ウィンドウを終了します。 |
|
アップグレード・ウィンドウを終了します。 |
|
タイムゾーンのバージョンが新しいためTSTZデータが影響を受けたすべての表を検索します。 |
|
データベース内で、TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含むすべての表をアップグレードします。 |
|
スキーマの指定されたリスト内で、TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含む表をアップグレードします。 |
|
TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含む表の指定されたリストをアップグレードします。 |
このプロシージャは、準備ウィンドウを開始します。準備ウィンドウが正常に開始されると、データベース・プロパティDST_UPGRADE_STATE
はPREPARE
に設定され、データベース・プロパティSECONDARY_TT_VERSION
は新しいバージョンのタイムゾーンに設定されます。
準備ウィンドウによって、DBAは、アップグレードの影響を受けるデータを調査し、アップグレードを実行するのに最適な時期を判断できます。準備ウィンドウには、通常のデータベース操作をオーバーラップさせることができます。
このプロシージャは、アップグレード・ウィンドウを開始します。アップグレード・ウィンドウが正常に開始されると、ディクショナリ表のTSTZデータは新しいバージョンのタイムゾーンを反映するようにアップグレードされ、データベース・プロパティ'DST_UPGRADE_STATE'
は'UPGRADE'
に設定されます。BEGIN_UPGRADE
が正常に実行されたら、ユーザーはデータベースを再起動する必要があります。正常に再起動されたら、データベース・プロパティ'PRIMARY_TT_VERSION'
は新しいバージョンのタイムゾーンとなり、'SECONDARY_TT_VERSION'
は古いバージョンのタイムゾーンとなります。
このプロシージャはアトミックに動作し、ディクショナリ表およびデータベース・プロパティのすべてがアップグレードされるか、またはいずれもアップグレードされません。OPEN MIGRATE
モードのデータベースでコールされる必要があります。
構文
DBMS_DST.BEGIN_UPGRADE ( new_version IN BINARY_INTEGER, error_on_overlap_time IN BOOLEAN := FALSE, error_on_nonexisting_time IN BOOLEAN := FALSE);
パラメータ
表62-4 BEGIN_UPGRADEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
データベースがアップグレードされる新しいバージョンのタイムゾーン。 |
|
「オーバーラップ」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。デフォルトは |
|
「存在しない」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。 デフォルトは |
このプロシージャは、次のスキーマを含むログ・エラー表を作成します。
CREATE TABLE dst$error_table( table_owner VARCHAR2(30), table_name VARCHAR2(30), column_name VARCHAR2(4000), rid ROWID, error_number NUMBER)
このプロシージャは、次のスキーマを含む表を作成します。
CREATE TABLE dst_trigger_table ( trigger_owner VARCHAR2(30), trigger_name VARCHAR2(30));
この表は、表のアップグレードを実行する前には無効になっており、アップグレード・プロセスで致命的な障害が発生したため有効化されていない、アクティブなトリガーを記録する場合に使用されます。
このプロシージャは、アップグレード・ウィンドウを終了します。アップグレード・ウィンドウは、影響を受けるすべてのユーザー表がアップグレードされると終了されます。それ以外の場合は、OUT
パラメータnum_of_failures
によって、変換されていない表の数が示されます。
このプロシージャは、タイムゾーンのバージョンが新しいため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');
パラメータ
表62-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プロシージャを使用して作成できます。 |
このプロシージャは、データベース内で、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');
パラメータ
表62-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プロシージャを使用して作成できます。 |
|
「オーバーラップ」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。 デフォルトは |
|
「存在しない」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。 デフォルトは |
|
アップグレード前は無効になっており、アップグレード実行時に致命的な障害のため有効化されていないトリガーを記録する表。 |
このプロシージャは、スキーマの指定されたリスト内で、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');
パラメータ
表62-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プロシージャを使用して作成できます。 |
|
「オーバーラップ」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。 デフォルトは |
|
「存在しない」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。 デフォルトは |
|
アップグレード前は無効になっており、アップグレード実行時に致命的な障害のため有効化されていないトリガーを記録する表。 |
このプロシージャは、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);
パラメータ
表62-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
に指定して、アトミック・トランザクションでアップグレードする必要があります。