5

本社にはセットアップ データのみを含むメイン データベースがあり、別の支社には複数のデータベースがあります。各支社のサーバーにデータベース リンクを作成しました。

場合によっては、すべての有効なリンクを照会したい場合があります (一部のリンクは接続の問題などにより無効になる可能性があるため)、私の質問は、接続タイムアウトの問題に陥らずにデータベース リンクが有効かどうかを確認する方法です。オラクルのメインサーバーが有効なデータベースリンクのみをチェックして返すようにするSQLステートメントはありますか?

4

6 に答える 6

2

さまざまなカテゴリの問題が原因で、リンクに問題が発生する可能性があります。

  • 無効なリンク定義: 間違ったユーザー名、パスワード (使用されている場合)、サービス名

  • リモートアカウントがロックされました

  • リモート DB 構成 (ユーザーあたりのセッション数の超過など)

  • リモート データベースまたはホストが利用できない

  • ネットワーク接続

これらの障害モードの変化する性質を考えると、リンクの状態を説明するディクショナリ ビュー (たとえば) はありません。バックグラウンドでチェックする非同期プロセスも、時代遅れになる可能性があります。おそらく、コードでリンクを使用する必要がある前に、「select sysdate from dual@remote_db」を発行することができる最も軽量なテストです。

于 2010-10-03T14:04:21.720 に答える
2

ライブ データベース リンクをチェックするクエリを作成できるかどうかわかりません。あなたができることの1つは、バックグラウンドプロセスによって更新されたテーブルを作成し、データベースリンクのリストと、それぞれの「最後に生きている」タイムスタンプを作成することです

于 2010-10-03T12:35:41.377 に答える
1

db リンクは通常 tnsnames.ora に依存するため、tnsping を実行する OS レベルのスクリプトを作成できます。

于 2010-10-04T05:36:46.737 に答える
0

あなたがこれを成し遂げたかどうかはわかりませんが、私はこのようなことをして、どのデータベース リンクがアクティブかを確認したかったのです。別のフォーラムでこれを見つけました

Select * from v$dblink 

アクティブな dblink のみを表示します。繰り返しますが、これは にアクセスする権限がある場合にのみ機能しますv$dblink

于 2011-06-21T10:30:17.847 に答える