私はオラクルの新人なので、おそらく些細な、またはばかげた質問で申し訳ありません。このようなデータベース リンクを介して 2 つの Oracle データベース (12g と 11g) を相互接続する必要があります。
CREATE SHARED DATABASE LINK SYSEL
AUTHENTICATED BY scot IDENTIFIED BY *********
USING 'SYSEL'
私の tnsnames.ora:
or# tnsnames.ora Network Configuration File: C:\app\Administrator\product\12.1.0\dbhome_1\network\admin\tnsnames.ora
Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = Panoramix)(PORT = 1524))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1524))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Panoramix)(PORT = 1524))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
SYSEL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Panoramix)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = studuk)
)
)
しかし、クエリを実行すると (たとえばselect * from dual@sysel
)、常に次のエラーが発生します。実行されていません。*処置: 指定された宛先アドレスがリスナーによって使用されるアドレスの1つと一致することを確認してください。TNSNAMES.ORAエントリを適切なLISTENER.ORAファイル(または、接続が交換を経由する場合はTNSNAV.ORA)と比較してください。リモート マシンでリスナーを起動します。行のエラー: 1 列: 20
私の LISTENER.ORA:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\Administrator\product\12.1.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\12.1.0\dbhome_1\bin\oraclr12.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1524))
(ADDRESS = (PROTOCOL = TCP)(HOST = Panoramix)(PORT = 1524))
)
)
私は panoramix に stunnel を持っています (そしてそれは完全に機能しています。私は sql 開発者を介して studuk に接続することができ、studuk を tnsping することもできます。しかし、データベース リンクは機能しません。何らかの方法で変更する必要があると思います。 listener.ora ですが、方法がわかりません... 何が問題なのですか? Pls, help. 最高の Josef K.
リスナーはポート 1521 でリッスンしますが、select * from dual@sysel としてクエリを実行しようとすると、残念ながら次のエラーが発生します。
ORA-12514: TNS:proces listener v současnosti nezná službu požadovanou v deskriptoru připojení
12514. 00000 - "TNS:listener does not currently know of service requested in connect descriptor"
*Cause: The listener received a request to establish a connection to a
database or other service. The connect descriptor received by the listener
specified a service name for a service (usually a database service)
that either has not yet dynamically registered with the listener or has
not been statically configured for the listener. This may be a temporary
condition such as after the listener has started, but before the database
instance has registered with the listener.
*Action:
- Wait a moment and try to connect a second time.
- Check which services are currently known by the listener by executing:
lsnrctl services <listener name>
- Check that the SERVICE_NAME parameter in the connect descriptor of the
net service name used specifies a service known by the listener.
- If an easy connect naming connect identifier was used, check that
the service name specified is a service known by the listener.
- Check for an event in the listener.log file.
行のエラー: 1 列: 20
サービス sysel がリスナーに登録されるように、すでに listener.ora を変更しようとしましたが、成功しませんでした:
SID_LIST_listener=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=SYSEL)
(SID_NAME=studuk)
(ORACLE_HOME=C:\app\Administrator\product\12.1.0\dbhome_1)))
どうやら、私の Oracle インスタンスはサービス SYSEL をリスナーに登録できません。ALTER SYSTEM REGISTER も試しましたが、成功しませんでした。
スクリプト
select value from v$parameter where name='service_names'
デフォルトの「ORCL」のみを返します
サービス SYSEL をリスナーに登録するにはどうすればよいですか? ジョセフ K さん、ありがとうございます。