今天新增了一台Windows平台的Oracle DB 19c,本機連線Oracle DB是沒有問題,DB也確認一切都正常運行。
在以我的Win 10筆電以SQL*Plus要連上這台DB時,出現了下列的錯誤:
ORA-12638: Credential retrieval failed
以指令tnsping測試DB是ok的:
其原因在於我的筆電中sqlnet.ora的一個設定值:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
將其值改為如下,就可以成功連線DB了:
SQLNET.AUTHENTICATION_SERVICES= (NONE)
對於Windows平台,SQLNET.AUTHENTICATION_SERVICES = (NTS)會開啟作業系統認證登入,而不是用Oracle DB的帳號認證
在Windows中,是通過sqlnet.ora來實現驗證機制,而且其默認的預設值是NTS
下列是幾種情況:
1、sqlnet.ora是空的,或是用#注解 : 基於Oracle密碼文件驗證
2、SQLNET.AUTHENTICATION_SERVICES = (NTS) : 基於作業系統驗證
3、SQLNET.AUTHENTICATION_SERVICES = (NONE):基於Oracle密碼文件驗證
4、SQLNET.AUTHENTICATION_SERVICES = (NONE,NTS):基於作業系統驗證