當 Oracle 使用者密碼包含 @ 符號時,使用 sqlplus user/pass@tns 格式登入會被解析錯誤:@ 後內容被視為連線識別符,導致 ORA-12154 或 ORA-12541。
-- 密碼為 123@456
sqlplus system/123@456@orcl
-- 實際解析為:user=system, password=123, host=456@orcl → 連線失敗
| 平台 | 正確語法 | 範例(密碼 oracle@1,服務名 sun) |
|---|---|---|
| Linux/Unix | 單引號包「用戶名/\"密碼\"」@服務名 | sqlplus 'wang/"oracle@1"'@sun |
| Windows | 用戶名/"""密碼"""@服務名(三組雙引號) | sqlplus wang/"""oracle@1"""@sun |
sqlplus system@orcl → 提示輸入密碼時直接鍵入 123@456,無轉義問題。/ as sysdba 登入後 ALTER USER system IDENTIFIED BY "newpass"; 修改密碼移除特殊字元。$、#、&、! 等在 Shell 中亦有特殊含義,建議同樣採用互動式輸入或單引號包裹。
記住:互動式輸入最安全、最通用,免去平台差異煩惱。