Oracle
如何在 Oracle XE 18c 中使用 ipc 連接到可插拔數據庫?
這是我的監聽器配置:
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 連接的列表文件中使用的密鑰名稱可以任意選擇,但當然您必須在連接中使用相同的密鑰。