DBMS_TDB
パッケージは、RMANのCONVERT DATABASE
コマンドを使用してプラットフォーム間でデータベースを転送できるかどうかをレポートします。このパッケージは、現在のホスト・プラットフォーム上のデータベースのエンディアン形式が転送先プラットフォームと同じであること、および現在のデータベースの状態によってデータベースの転送が妨げられないことを検証します。
関連項目: CONVERT DATABASEを使用したデータベース転送については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』 を参照してください。 |
この章では、次の項目について説明します。
概要
セキュリティ・モデル
定数
ビュー
使用上の注意
この項では、DBMS_TDB
の使用に関連する項目について説明します。
多くの場合、Oracleは、同じエンディアン形式のプラットフォーム間のデータベース転送をサポートしています。ただし、エンディアン形式が同じ場合でも、データベースをプラットフォームから別のプラットフォームに移動するには変換処理が必要です。また、データベース転送のプロセスでは、転送するデータベースを読取り専用モードでオープンするなどの事前条件を満たす必要もあります。
DBMS_TDB
パッケージは、次の2つの役割を果たします。
指定したソース・プラットフォームから指定したターゲット・プラットフォームへのデータベース転送がサポートされていることの確認。
転送するデータベースが転送用に正しく準備されているかの確認。正しく準備されていない場合は、データベース転送を妨げている条件を識別します。
実際の変換は、Recovery ManagerのCONVERT DATABASE
コマンドを使用して実行されます。データベース転送の要件、プラットフォーム間の転送に必要なデータベース変換のプロセス、および変換プロセスにおけるDBMS_TDB
サブプログラムの使用例の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
DBMS_TDB
パッケージは、パラメータ値の指定に使用するいくつかの列挙定数を定義します。列挙定数にはパッケージ名を接頭辞として付加する必要があります(DBMS_TDB.SKIP_NONE
など)。
DBMS_TDB
パッケージでは、表166-1に示す定数が使用されます。
表166-2 DBMS_TDBパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
データベースをターゲット・プラットフォームに転送できるかどうかを確認します。 |
|
データベースに外部表、ディレクトリまたはBFILEが含まれているかどうかを確認します。 |
このファンクションは、データベースをターゲット・プラットフォームに転送できるかどうかを確認します。指定したソース・プラットフォームおよび宛先プラットフォームに対して転送が完全にサポートされているかどうか、またデータベースが現在転送に適切な状態にあるかどうかがテストされます。
データベースの読取り専用またはオフラインの部分を転送しない場合、これらをスキップするかどうかを指定できます。
このファンクションはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。
構文
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;
パラメータ
表166-3 CHECK_DBファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
接続先プラットフォームの名前。 |
|
データベース転送が可能かどうかを確認する際に、スキップするデータベースの部分がある場合は、そのスキップする部分を指定します。このプロパティに指定できる値は、表166-1「DBMS_TDBの定数」を参照してください。 |
使用上の注意
SERVEROUTPUT
がON
の場合、データベースが転送できない原因とその問題を修正する方法が出力に含まれます。考えられる原因および修正の詳細は、表166-4「CHECK_DBファンクションでFALSEが戻される原因」を参照してください。
表166-4 CHECK_DBファンクションでFALSEが戻される原因
原因 | 処置 |
---|---|
ターゲット・プラットフォーム名が認識されません。 |
認識可能なプラットフォーム名を |
ターゲット・プラットフォームのエンディアン形式が異なります。 |
変換はサポートされていません。 |
データベースが読取り専用でオープンしていません。 |
データベースを読取り専用モードでオープンし、再試行します。 |
データベース内にアクティブまたはインダウトなトランザクションが存在します。 |
データベースを読取り/書込みモードでオープンします。アクティブなトランザクションがロールバックされた後に、データベースを読取り専用モードでオープンし、操作を再試行します。 これは、ユーザーがデータベースをフラッシュバックし、読取り専用モードで開いた場合に発生します。データベースを読取り/書込みモードでオープンすると、アクティブなトランザクションはロールバックされます。 |
遅延トランザクション・ロールバックを実行する必要があります。 |
データベースを読取り/書込みモードでオープンし、必要な表領域をオンラインにします。遅延トランザクションのロールバックが完了した後に、データベースを読取り専用モードでオープンし、操作を再試行します。 |
データベースの互換性バージョンが10.0.0より低くなっています。 |
|
互換性バージョンが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.
このファンクションは、データベースに外部表、ディレクトリまたは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.