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パッケージでは、表60-1「DBMS_DSTで使用されるビュー」に示されるビューが使用されます。詳細は、『Oracle Databaseリファレンス』を参照してください。
表60-1 DBMS_DSTで使用されるビュー
| ビュー | 説明 |
|---|---|
|
|
データベースのすべての表のうち、 |
|
|
現在のユーザーが所有している表のうち、 |
|
|
現在のユーザーがアクセス可能な表に関する情報を表示します。表には、 |
表60-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);
パラメータ
表60-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');
パラメータ
表60-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');
パラメータ
表60-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');
パラメータ
表60-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);
パラメータ
表60-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に指定して、アトミック・トランザクションでアップグレードする必要があります。