環境:Oracle 10.2.0.1 → 11.2.0.3 跨版本 DBLink。
創建:CREATE PUBLIC DATABASE LINK dmz63 CONNECT TO xyy IDENTIFIED BY xyy USING '...';
查詢:SELECT * FROM dual@dmz63; 报错:
ORA-01017: invalid username/password; logon denied
ORA-02063: preceding line from ...
SEC_CASE_SENSITIVE_LOGON=TRUE,密碼區分大小寫。SYS.LINK$) 中。CREATE PUBLIC DATABASE LINK dmz63
CONNECT TO xyy IDENTIFIED BY "xyy" -- 雙引號保持原始大小寫
USING '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.0.1)(PORT=2261)))
(CONNECT_DATA=(SERVICE_NAME=xyy)))';
關鍵點: IDENTIFIED BY "xyy" 雙引號告訴 Oracle「按字面大小寫存儲密碼」,避免 10g 客戶端自動大寫轉換。
SELECT username, password FROM dba_users WHERE username='XYY'; (11g 顯示加密值,但可通過 ALTER USER xyy IDENTIFIED BY "xyy" 重置確認)SELECT db_link, userid, host FROM dba_db_links;sqlplus xyy/"xyy"@11g_tns 確認密碼大小寫正確。PROFILE 限制密碼複雜度,減少弱密碼風險。ALTER DATABASE LINK ... CONNECT TO ... IDENTIFIED BY ... (12c+ 支持)。SHOW PARAMETER sec_case_sensitive_logon;
-- TRUE: 區分大小寫 (11g 默認)
-- FALSE: 不區分 (兼容 10g 行為)
-- 12c+ 可顯式指定密碼版本
ALTER USER xyy IDENTIFIED BY "xyy"
PASSWORD_VERIFY_FUNCTION verify_fn
ACCOUNT UNLOCK; -- 12c+ 支持大小寫敏感密碼版本管理