Oracle

Windows 8 上的 Oracle 連接突然被拒絕

  • January 26, 2020

我突然遇到了各種與 sql developer 的連接問題。它一直工作到昨天,並停止在 Windows 8 機器上工作。

我仍然可以通過命令提示符進行連接。

我專門打開了為監聽器配置的 1521 埠。

還為本地程序打開了所有埠。

添加了 TNS_ADMIN 來註冊密鑰。

但仍然沒有運氣

這是我的listener.ora

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME=orcl)
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\rani\product\11.2.0\dbhome_1)
(程序 = extproc)
(ENVS =“EXTPROC_DLLS=ONLY:C:\app\rani\product\11.2.0\dbhome_1\bin\oraclr11.dll”)
)
)

聽眾 =
(DESCRIPTION_LIST =
(描述=
(地址 =(協議 = IPC)(密鑰 = EXTPROC1521))
(地址 =(協議 = TCP)(主機 = 本地主機)(埠 = 1521))
)
)

ADR_BASE_LISTENER = C:\app\rani
  • tnsnames.ora內容:

甲骨文 =
(描述=
(地址 = (協議 = TCP)(主機 = 127.0.0.1)(埠 = 1521))
(連接數據 =
(伺服器 = 專用)
(SERVICE_NAME = orcl)
)
)

從命令提示符一切正常:


顯示參數 service_name;

名稱類型值
------------------------------------ ----------- -----------------
service_names 字元串 orcl


C:\Users\rani>lsnrctl services 監聽器

適用於 64 位 Windows 的 LSNRCTL:版本 11.2.0.1.0 - 2014 年 12 月 11 日 23:44 生產
:51

版權所有 (c) 1991、2010,甲骨文。版權所有。

連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
服務總結...
服務“CLRExtProc”有 1 個實例。
實例“CLRExtProc”,狀態 UNKNOWN,有 1 個用於此服務的處理程序...
處理程序:
“專用”建立:0 拒絕:0
本地伺服器

我想我已經盡我所能,但我仍然無法連接我的 sqlplus 開發人員。我不斷得到:Network adapter could not establish connection

sqlnet 日誌詳細資訊:


致命的 NI 連接錯誤 12505,連接到:
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=C:\app\rani\product\11.2.0\dbhome_1 \bin\emagent.exe)(HOST=PICKLE)(USER=SYSTEM))))

版本資訊:
適用於 64 位 Windows 的 TNS:版本 11.2.0.1.0 - 生產
用於 64 位 Windows 的 Windows NT TCP/IP NT 協議適配器:版本 11.2.0.1.0 - 生產
時間:2014-12-11 23:09:10
跟踪到文件:C:\app\rani\product\11.2.0\dbhome_1\NETWORK\trace\sqlnet.trc
Tns 錯誤結構:
ns 主錯誤程式碼:12564
TNS-12564:TNS:連接被拒絕
ns 二級錯誤程式碼:0
nt主要錯誤程式碼:0
nt 二級錯誤程式碼:0
nt 作業系統錯誤程式碼:0

僅供參考:我的電腦名稱是 PICKLE,應該與 localhost 相同。


監聽器詳細資訊:
C:\Users\rani>lsnrctl services 監聽器

適用於 64 位 Windows 的 LSNRCTL:版本 11.2.0.1.0 - 2014 年 12 月 12 日 00:14 生產
:15

版權所有 (c) 1991、2010,甲骨文。版權所有。

連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
服務總結...
服務“CLRExtProc”有 1 個實例。
實例“CLRExtProc”,狀態 UNKNOWN,有 1 個用於此服務的處理程序...
處理程序:
“專用”建立:0 拒絕:0
本地伺服器
命令成功完成

C:\Users\rani>lsnrctl 狀態

適用於 64 位 Windows 的 LSNRCTL:版本 11.2.0.1.0 - 2014 年 12 月 12 日 00:14 生產
:39

版權所有 (c) 1991、2010,甲骨文。版權所有。

連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
監聽器的狀態
------------------------
別名監聽器
適用於 64 位 Windows 的版本 TNSLSNR:版本 11.2.0.1.0 - 產品
行動
開始日期 2014 年 12 月 12 日 00:13:54
正常執行時間 0 天 0 小時。0分鐘。45 秒
跟踪級別關閉
安全開啟:本地作業系統驗證
SNMP 關閉
監聽器參數文件 C:\app\rani\product\11.2.0\dbhome_1\NETWORK\ADMIN\list
能源.ora
偵聽器日誌文件 c:\app\rani\diag\tnslsnr\pickle\listener\alert\log.xml

偵聽端點摘要...
(描述=(地址=(協議=ipc)(管道名稱=\\.\pipe\EXTPROC1521ipc)))
(描述=(地址=(協議=tcp)(主機=127.0.0.1)(埠=1521)))
服務總結...
服務“CLRExtProc”有 1 個實例。
實例“CLRExtProc”,狀態 UNKNOWN,有 1 個用於此服務的處理程序...
命令成功完成

任何幫助,我認為 sql 開發人員還沒有為 Windows 8 做好準備

解決了!問題LOCAL_LISTENER未設置為orcl。所以

SQL> alter system register;

SQL> alter system set LOCAL_LISTENER='(ADDRESS = (PROTOCOL=TCP)(HOST=localhost)(PORT=1521))' scope=both;

成功了!

我認為你應該有一個名為“orcl”的服務,當你做

lsnrctl status

但目前你沒有。或者反過來嘗試將您的 tnsname.ora (SERVICE_NAME = orcl) 更改為“CLRExtProc”。

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