Oracle

如何在 Oracle XE 18c 中使用 ipc 連接到可插拔數據庫?

  • November 20, 2020

這是我的監聽器配置:

LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 20-NOV-2020 20:01:25

Copyright (c) 1991, 2018, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=NoteBook)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 18.0.0.0.0 - Production
Start Date                20-NOV-2020 20:00:55
Uptime                    0 days 0 hr. 0 min. 29 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Default Service           XE
Listener Parameter File   /opt/oracle/product/18c/dbhomeXE/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/NoteBook/listener/alert/log.xml
Listening Endpoints Summary...
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=NoteBook)(PORT=1521)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=127.0.0.1)(PORT=5500))(Security=(my_wallet_directory=/opt/oracle/product/18c/dbhomeXE/admin/XE/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "XE" has 1 instance(s).
 Instance "XE", status READY, has 1 handler(s) for this service...
Service "XEXDB" has 1 instance(s).
 Instance "XE", status READY, has 1 handler(s) for this service...
Service "b470a0c2708d9acee0530401a8c035ac" has 1 instance(s).
 Instance "XE", status READY, has 1 handler(s) for this service...
Service "xepdb1" has 1 instance(s).
 Instance "XE", status READY, has 1 handler(s) for this service...
The command completed successfully

我可以通過 tcp using 連接到 xepdb1 sqlplus user/password@NoteBook/xepdb1,但是,如果我使用 use ipc( sqlplus user/password@xepdb1) 連接,它會失敗並出現錯誤ORA-12154: TNS:could not resolve the connect identifier specified

如何使用 ipc 連接到可插拔數據庫?

如果您通過以下方式連接

sqlplus user/password@NoteBook:1521/xepdb1

然後你使用 EZconnect,這是一個 TCP 連接,其中“NoteBook”是伺服器,“1521”是埠,“xepdb1”是服務。“1521”是埠的預設值,因此您可以省略它。但是協議是TCP。如果要使用在偵聽器中定義的 IPC 連接,則必須使用 tnsnames.ora 文件。EZconnect 無法做到這一點。

在這個 tnsnames.ora 文件中,您必須有一個類似於

xepdb1=(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))(CONNECT_DATA=(SERVICE_NAME=xepdb1)))

現在您可以連接為

sqlplus user/password@xepdb1

在 Linux 中,您可以跳過 tnsname.ora 文件並使用以下內容

sqlplus user/password@'(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))(CONNECT_DATA=(SERVICE_NAME=xepdb1)))' 

所以你必須引用字元串。在 Windows 中也有類似的方法。

您在 IPC 連接的列表文件中使用的密鑰名稱可以任意選擇,但當然您必須在連接中使用相同的密鑰。

引用自:https://dba.stackexchange.com/questions/280029