ヘッダーをスキップ
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
11g リリース2(11.2)
B56262-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

58 DBMS_DG

DBMS_DGパッケージを使用すると、アプリケーションでフェイルオーバーの原因となる状況が発生した場合にファスト・スタート・フェイルオーバーを開始するように、アプリケーションからOracle Data Guard Broker環境内のプライマリ・データベースに通知できます。


関連項目:

ブローカ構成でのファスト・スタート・フェイルオーバーの実行方法の詳細は、『Oracle Data Guard Broker』を参照してください。

この章では、次の項目について説明します。


DBMS_DGの使用方法

Oracle Databaseの外部で実行されているアプリケーションによって検出可能な状況には、Oracle Data Guard Brokerがファスト・スタート・フェイルオーバーを実行する原因となる可能性があるものがあります。原因となる可能性がある状況の範囲はほぼ無制限であるため、ファスト・スタート・フェイルオーバーを実行する原因となっている状況の判別は、アプリケーションによって行われます。

このような状況が発生すると、アプリケーションによってDBMS_DG.INITIATE_FS_FAILOVERプロシージャがコールされ、アプリケーションでファスト・スタート・フェイルオーバーの即時実行が必要であることがプライマリ・データベースにアラートとして通知されます。次に、プライマリ・データベースからオブザーバに通知され、オブザーバは、スタンバイ・データベースがフェイルオーバーの受入れに有効なファスト・スタート・フェイルオーバー状態(「監視」および「同期」または「遅延内」のいずれか)であるかぎり、ファスト・スタート・フェイルオーバーを即時開始します。構成が有効なファスト・スタート・フェイルオーバー状態でない場合は、INITIATE_FS_FAILOVERサブプログラムによってORAエラー・メッセージが戻され(例外は通知されません)、ファスト・スタート・フェイルオーバーを実行できないことがコール元のアプリケーションに通知されます。


セキュリティ・モデル

DBMS_DGパッケージは実行者の権限で実行され、SYSDBA権限が必要です。


DBMS_DGサブプログラムの要約

表58-1 DBMS_DGパッケージのサブプログラム

サブプログラム 説明

INITIATE_FS_FAILOVERプロシージャ


アプリケーションでフェイルオーバーの原因となる状況が発生した場合にファスト・スタート・フェイルオーバーが必要であることをアプリケーションからプライマリ・データベースに通知できます。



INITIATE_FS_FAILOVERプロシージャ

このプロシージャは、状況文字列の指定に使用します。この文字列と一致する状況がアプリケーションで発生した場合、アプリケーションでファスト・スタート・フェイルオーバーの即時実行をプライマリ・データベースにリクエストできます。

構文

DBMS_DG.INITIATE_FS_FAILOVER (
     condstr          IN VARCHAR2)
RETURN BINARY_INTEGER;

パラメータ

表58-2 INITIATE_FS_FAILOVERプロシージャのパラメータ

パラメータ 説明

condstr

ファスト・スタート・フェイルオーバーをリクエストする必要がある条件文字列を指定します。条件文字列引数を指定しなかった場合は、デフォルトの文字列「アプリケーション・フェイルオーバーがリクエストされました。」がブローカ・ログ・ファイルおよびプライマリ・データベースのデータベース・アラート・ログに記録されます。


使用上の注意

  • このプロシージャは、2進整数を戻します。

  • ファスト・スタート・フェイルオーバーが最後に実行された時間および原因を参照するには、V$FS_FAILOVER_STATSビューを問い合せます。

エラー

表58-3 INITIATE_FS_FAILOVERプロシージャのエラー

エラー 説明

ORA-00000: 正常に完了しました。

ファスト・スタート・フェイルオーバーの開始リクエストがオブザーバに転送されました。

ORA-16646: ファスト・スタート・フェイルオーバーは使用不可です

ブローカ構成が存在しないか、またはファスト・スタート・フェイルオーバーが使用可能になっていません。

ORA-16666: スタンバイ・データベースでファスト・スタート・フェイルオーバーを開始できません

DBMS_DG.INITIATE_FS_FAILOVERがスタンバイ・サイトで起動されました。

ORA-16817: ファスト・スタート・フェイルオーバーの構成が同期化されていません

構成が同期化されていない場合に、使用可能な最大のファスト・スタート・フェイルオーバー構成でDBMS_DG.INITIATE_FS_FAILOVERが起動されました。

ORA-16819: ファスト・スタート・フェイルオーバー・オブザーバが起動されていません

DBMS_DG.INITIATE_FS_FAILOVERは起動されましたが、オブザーバは起動されていません。

ORA-16820: ファスト・スタート・フェイルオーバー・オブザーバはこのデータベースを監視しなくなりました

DBMS_DG.INITIATE_FS_FAILOVERが起動されましたが、構成によって、オブザーバが実行されていない可能性があることが検出されました。

ORA-16829: ファスト・スタート・フェイルオーバー構成の遅延

構成がユーザー指定のREDO遅延制限内でない場合に、最大パフォーマンスのファスト・スタート・フェイルオーバー構成でDBMS_DG.INITIATE_FS_FAILOVERが起動されました。


この例では、ファスト・スタート・フェイルオーバーが無効のときに、プログラムがファスト・スタート・フェイルオーバーを開始しようとします。この例を使用するには、SYDDBA権限を持つSYSユーザーとして接続します。

set serveroutput on

declare
status integer;

begin
status := dbms_dg.initiate_fs_failover(''Failover Requested'');

dbms_output.put_line(''Fast-Start Failover is disabled: Expected status = ORA-16646'');
dbms_output.put_line(''                  Actual Status = ORA-'' || status);

end;
/
exit;