首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 密碼避坑指南:為何不能包含 @ 符號及解決辦法

     編輯:Oracle 資料庫基礎

根本原因

Oracle 連線字串語法:CONNECT username/password@alias,@ 後視為 TNS 別名。密碼含 @ 時,解析器誤將 @ 後內容當作別名,導致 ORA-12154: TNS:could not resolve the connect identifier specified。

錯誤示範

SQL> CREATE USER testuser2 IDENTIFIED BY "H@t";
User created.
SQL> CONNECT testuser2/h@t
ERROR: ORA-12154: TNS:could not resolve the connect identifier specified

解決方案

  1. 雙引號包裹密碼(推薦,相容所有版本)
    SQL> CONNECT testuser2/"H@t"
    Connected.
    
  2. 11g 及以上:新密碼演算法支援真正大小寫與特殊字元,但 @ 仍需引號。
  3. 密碼驗證函數:在 PROFILE 中實作 PASSWORD_VERIFY_FUNCTION,攔截含 @ 的密碼,拒絕設定。

最佳實踐

  • 制定密碼策略時明確禁止 @、/、# 等連線字串保留字元。
  • 使用密碼管理工具自動生成並儲存複雜密碼,避免手工輸入錯誤。
  • 升級至 19c/21c 享受更強的密碼雜湊(PBKDF2/SHA-512)與長度支援。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved