Oracle DB: ORA-12638: Credential retrieval failed

 今天新增了一台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):基於作業系統驗證