Sles

ORA-01017 來自 sqldeveloper,但來自 sqlplus

  • April 15, 2021

我已經通過 sqldeveloper 以 sys 身份登錄到 Oracle 19c 並創建了一個新使用者

-- USER SQL
CREATE USER data_owner IDENTIFIED BY "password!"  
DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP";

-- ROLES
GRANT CONNECT TO data_owner ;
GRANT RESOURCE TO data_owner ;
GRANT CREATE SESSION TO data_owner;

然後我 ssh 到 SUSE Linux Enterprise Server 12 伺服器並su - oracle從 sqlplus 檢查使用者,我可以使用上述密碼以 data_owner 身份正常連接。

當我使用相同的憑據時,為什麼 sqldeveloper 返回以下錯誤?

ORA-01017: invalid username/password; logon denied
01017. 00000 -  "invalid username/password; logon denied"
*Cause:    
*Action:
Codice fornitore 1017

作為仔細檢查,如果我通過 sqldeveloper 再次以 sys 身份連接,我可以登錄並且 sql

SELECT 
   username, 
   default_tablespace, 
   profile, 
   authentication_type
FROM
   dba_users
WHERE 
   account_status = 'OPEN';

給我

SYS SYSTEM  DEFAULT PASSWORD
SYSTEM  SYSTEM  DEFAULT PASSWORD
DATA_OWNER  USERS   DEFAULT PASSWORD

連接類型旁邊有一個角色的保管箱(對不起,意大利語:“Ruolo”)。

它必須設置為預定義(而不是預設值SYSDBA)。

下面的截圖

在此處輸入圖像描述

它可以解決問題:-)

請注意,如果您通過 SSH 連接到您的 SUSE Linux Enterprise Server 12 並作為普通使用者(su - oracle否則您將SYS在連接時成為普通使用者as sysdba並且密碼將被忽略)您執行 Oracle 19csqlplus然後

Enter user-name: data_owner as sysdba
Enter password:
ERROR:
ORA-01017: invalid username/password; logon denied

即使您輸入了正確的密碼。正如您從 sqldeveloper 中看到的那樣,這是as sysdba從其屬性中默默地添加 - 如果角色在那裡設置錯誤 - 但它不會在登錄/密碼彈出 gui 中顯示角色。

引用自:https://unix.stackexchange.com/questions/644863