You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过SQL*Plus登录Oracle XE PDB,请求排查问题原因

ORA-01017 错误的排查与解决

以下是几种可能导致SQL*Plus连接失败但SQL Developer正常的原因及对应解决方法:

  • 密码的命令行解析问题
    SQL Developer会自动处理密码中的特殊字符或格式,但命令行环境(Windows CMD/Linux Shell)可能会对部分字符进行转义或解析。尝试将完整的连接字符串用引号包裹:

    # Windows 环境用双引号
    sqlplus "script_tester/Tester_8976@xepdb1"
    # Linux 环境用单引号
    sqlplus 'script_tester/Tester_8976@xepdb1'
    
  • 网络服务名配置不一致
    SQL Developer通常支持JDBC直连(手动输入主机、端口、服务名),而SQL*Plus默认依赖tnsnames.ora文件中的xepdb1配置。检查tnsnames.ora的位置(Linux:$ORACLE_HOME/network/admin/;Windows:%ORACLE_HOME%\network\admin\),确保其中的xepdb1条目服务名、主机、端口与SQL Developer使用的一致。示例正确配置:

    XEPDB1 =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = XEPDB1)
        )
      )
    

    若不想修改配置,可直接使用EZConnect字符串替代网络服务名:

    sqlplus script_tester/Tester_8976@//localhost:1521/xepdb1
    
  • 用户容器归属错误
    确认script_tester用户是创建在PDBxepdb1中而非CDB根容器。以SYSDBA身份登录数据库后执行:

    SELECT username, con_id FROM dba_users WHERE username = 'SCRIPT_TESTER';
    

    若返回的con_id不是xepdb1对应的ID(通常为2),需切换到xepdb1容器重新创建用户:

    ALTER SESSION SET CONTAINER = xepdb1;
    CREATE USER script_tester IDENTIFIED BY Tester_8976;
    GRANT CREATE SESSION TO script_tester;
    
  • SQL*Plus环境变量冲突
    检查当前环境的ORACLE_SID是否设置为CDB的SID(如XE),尽管指定了@xepdb1,但部分环境下仍可能出现冲突。可临时修改环境变量后重试:

    # Windows CMD
    set ORACLE_SID=xepdb1
    # Linux Shell
    export ORACLE_SID=xepdb1
    

内容的提问来源于stack exchange,提问作者GMan1973

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 05:36:02