2

現在、Oracle db_link が実際に正しいサーバーを指していることを検証しようとしています。db_links を照会すると、TNSNames を参照する DB_link の定義を取得します。

select * from all_db_links;

次の結果が得られます。

所有者: user1
DB_LINK: DBL_xxx.world
ユーザー名: User2
ホスト: tnsEntry1
作成: 03-MAY-12

DB_link をテストすると、すべて正常に動作します。

select * from dual@"DBL_xxx.world";

ダミー:×

ただし、サーバーにアクセスできないため、tns エントリ tnsEntry1 が正しいサーバーを指していることを確認できません。

ローカルで、次を実行できます。

select sys_context ( 'USERENV', 'DB_NAME' ) db_name,
 sys_context ( 'USERENV', 'SESSION_USER' ) user_name,
 sys_context ( 'USERENV', 'SERVER_HOST' ) db_host
 from dual;

同じコマンドをリモートで実行しようとしました:

select sys_context ( 'USERENV', 'DB_NAME' ) db_name,
 sys_context ( 'USERENV', 'SESSION_USER' ) user_name,
 sys_context ( 'USERENV', 'SERVER_HOST' ) db_host
 from dual@DBL_xxx.world;

ただし、ローカル データのみが返されます。

リモート情報を確認する方法はありますか? または、SQL クエリから tnsnames を確認しますか?

4

1 に答える 1

4

これにより、データベース リンクの反対側にあるデータベースのデータベース名が得られます。

select property_value 
from database_properties@<database_link> 
where property_name='GLOBAL_DB_NAME'
于 2012-05-08T11:52:24.117 に答える