189 DBMS_TDB
DBMS_TDB
パッケージは、RMANのCONVERT DATABASE
コマンドを使用してプラットフォーム間でデータベースを転送できるかどうかをレポートします。
このパッケージは、現在のホスト・プラットフォーム上のデータベースのエンディアン形式が転送先プラットフォームと同じであること、および現在のデータベースの状態によってデータベースの転送が妨げられないことを検証します。
参照:
CONVERT DATABASE
を使用したデータベース転送については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
189.1 DBMS_TDBの概要
多くの場合、Oracleは、同じエンディアン形式のプラットフォーム間のデータベース転送をサポートしています。ただし、エンディアン形式が同じ場合でも、データベースをプラットフォームから別のプラットフォームに移動するには変換処理が必要です。また、データベース転送のプロセスでは、転送するデータベースを読取り専用モードでオープンするなどの事前条件を満たす必要もあります。
DBMS_TDB
パッケージは、次の2つの役割を果たします。
-
指定したソース・プラットフォームから指定したターゲット・プラットフォームへのデータベース転送がサポートされていることの確認。
-
転送するデータベースが転送用に正しく準備されているかの確認。正しく準備されていない場合は、データベース転送を妨げている条件を識別します。
実際の変換は、Recovery ManagerのCONVERT DATABASE
コマンドを使用して実行されます。データベース転送の要件、プラットフォーム間の転送に必要なデータベース変換のプロセス、および変換プロセスにおけるDBMS_TDB
サブプログラムの使用例の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
189.3 DBMS_TDBの定数
DBMS_TDB
パッケージは、パラメータ値の指定に使用するいくつかの列挙定数を定義します。列挙定数にはパッケージ名を接頭辞として付加する必要があります(DBMS_TDB.SKIP_NONE
など)。
DBMS_TDB
パッケージでは、表189-1に示す定数が使用されます。
表189-1 DBMS_TDBの定数
名前 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
データベースの転送の準備ができているかどうかを確認する際に、すべてのファイルをチェックします。 |
|
|
|
データベースの転送の準備ができているかどうかを確認する際に、オフラインの表領域内のファイルをスキップします。 |
|
|
|
データベースの転送の準備ができているかどうかを確認する際に、読取り専用の表領域内のファイルをスキップします。 |
189.4 DBMS_TDBのビュー
DBMS_TDB
パッケージは、V$DB_TRANSPORTABLE_PLATFORM
ビューを使用します。
このビューについては、『Oracle Databaseリファレンス』を参照してください。
-
V$DB_TRANSPORTABLE_PLATFORM
: データベース転送をサポートするソース・プラットフォームとターゲット・プラットフォームの組合せを指定します。
189.5 DBMS_TDBの操作上のノート
DBMS_TDB
には、次のノートが適用されます。
-
このパッケージのサブプログラムは、目的のプラットフォーム間のデータベース変換が可能かどうかの確認、およびデータベースが変換可能かどうかの確認の両方で有効です。変換プロセスで使用するこれらのサブプログラムの様々な使用方法の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
-
このパッケージのサブプログラムは、単純に
TRUE
またはFALSE
を結果として戻し、データベース転送が可能かどうかを示します。転送できない原因を示すメッセージを受け取るには、SERVEROUTPUT
ON
を指定してサブプログラムを使用します。
189.6 DBMS_TDBサブプログラムの要約
この表は、DBMS_TDB
サブプログラムを示し、簡単に説明しています。
表189-2 DBMS_TDBパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
データベースをターゲット・プラットフォームに転送できるかどうかを確認します。 |
|
データベースに外部表、ディレクトリまたはBFILEが含まれているかどうかを確認します。 |
189.6.1 CHECK_DBファンクション
このファンクションは、データベースをターゲット・プラットフォームに転送できるかどうかを確認します。指定したソース・プラットフォームおよび宛先プラットフォームに対して転送が完全にサポートされているかどうか、またデータベースが現在転送に適切な状態にあるかどうかがテストされます。
データベースの読取り専用またはオフラインの部分を転送しない場合、これらをスキップするかどうかを指定できます。
このファンクションはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。
構文
DBMS_TDB.CHECK_DB ( target_platform_name IN VARCHAR2, skip_option IN NUMBER) RETURN BOOLEAN; DBMS_TDB.CHECK_DB ( target_platform_name IN VARCHAR2) RETURN BOOLEAN; DBMS_TDB.CHECK_DB RETURN BOOLEAN;
パラメータ
表189-3 CHECK_DBファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
接続先プラットフォームの名前。 |
|
データベースがトランスポート可能かどうかをチェックする際にスキップするデータベースの部分(適切な場合)を指定します。サポートされている値は表189-1を参照してください。 |
戻り値
データベースをターゲット・プラットフォームに転送できない場合、またはデータベースが転送可能な状態でない場合は、FALSE
を戻します。データベースが転送可能な状態の場合は、TRUE
を戻します。
使用上のノート
-
SERVEROUTPUT
がON
の場合、データベースが転送できない原因とその問題を修正する方法が出力に含まれます。考えられる原因と修正の詳細は、表189-4を参照してください。表189-4 CHECK_DBファンクションでFALSEが戻される原因
原因 処置 ターゲット・プラットフォーム名が認識されません。
認識可能なプラットフォーム名を
V$DB_TRANSPORTABLE_PLATFORM
内で検索します。ターゲット・プラットフォームのエンディアン形式が異なります。
変換はサポートされていません。
データベースが読取り専用でオープンしていません。
データベースを読取り専用モードでオープンし、再試行します。
データベース内にアクティブまたはインダウトなトランザクションが存在します。
データベースを読取り/書込みモードでオープンします。アクティブなトランザクションがロールバックされた後に、データベースを読取り専用モードでオープンし、操作を再試行します。
これは、ユーザーがデータベースをフラッシュバックし、読取り専用モードで開いた場合に発生します。データベースを読取り/書込みモードでオープンすると、アクティブなトランザクションはロールバックされます。
遅延トランザクション・ロールバックを実行する必要があります。
データベースを読取り/書込みモードでオープンし、必要な表領域をオンラインにします。遅延トランザクションのロールバックが完了した後に、データベースを読取り専用モードでオープンし、操作を再試行します。
データベースの互換性バージョンが10.0.0より低くなっています。
COMPATIBLE
初期化パラメータを10.0.0以上に変更し、データベースを読取り専用モードでオープンして操作を再試行します。互換性バージョンが10.0.0以上の読取り/書込みモードでオープンされていない表領域があります。
COMPATIBLE
初期化パラメータを10.0.0以上に変更し、影響を受ける表領域を読取り/書込みモードでオープンします。データベースを停止し、読取り専用モードでオープンして操作を再試行します。
例
次の例では、読取り/書込みモードでオープンしているデータベースでのCHECK_DB
の使用方法を示します。
SQL> SET SERVEROUTPUT ON SQL> DECLARE db_ready BOOLEAN; BEGIN db_ready := DBMS_TDB.CHECK_DB('Microsoft Windows IA (32-bit)'); END; / Database is not open READ ONLY. Please open database READ ONLY and retry. PL/SQL procedure successfully completed.
189.6.2 CHECK_EXTERNALファンクション
このファンクションは、データベースに外部表、ディレクトリまたはBFILEが含まれているかどうかを確認します。
構文
DBMS_TDB.CHECK_EXTERNAL RETURN BOOLEAN;
戻り値
データベースに外部表、ディレクトリまたはBFILEが含まれている場合は、TRUE
を戻します。それ以外の場合はFALSE
を戻します。
使用上のノート
-
SERVEROUTPUT
がON
の場合、データベース内の外部表、ディレクトリまたはBFILEの名前が出力されます。 -
データベースは読取り/書込みモードでオープンしている必要があります。
例
次の例では、外部表、ディレクトリまたはBFILEを含むデータベースでのCHECK_EXTERNAL
の使用方法を示します。
SQL> SET SERVEROUTPUT ON SQL> DECLARE external BOOLEAN; BEGIN external := DBMS_TDB.CHECK_EXTERNAL; END; / The following external tables exist in the database: SH.SALES_TRANSACTIONS_EXT The following directories exist in the database: SYS.MEDIA_DIR, SYS.DATA_FILE_DIR, SYS.LOG_FILE_DIR, SYS.DATA_PUMP_DIR The following BFILEs exist in the database: PM.PRINT_MEDIA PL/SQL procedure successfully completed.