Oracle 19c连接SQL Developer 21.2报错“Status : Failure -Test failed: null”求助
问题解决步骤
一、先确认目标用户是否存在
首先用管理员账号(如sys或system)登录数据库,执行查询验证用户是否创建成功:
-- 检查大写用户(Oracle默认自动转大写,除非创建时加双引号) SELECT username FROM dba_users WHERE username = 'ORACLE_USERA';
如果创建用户时用了双引号指定小写(如CREATE USER "oracle_usera" IDENTIFIED BY password;),则查询语句要带双引号:
SELECT username FROM dba_users WHERE username = '"oracle_usera"';
若查询无结果,说明用户未创建成功,重新执行创建语句:
-- 推荐:创建默认大写用户 CREATE USER ORACLE_USERA IDENTIFIED BY your_password; -- 若需小写用户,必须带双引号 CREATE USER "oracle_usera" IDENTIFIED BY your_password;
二、正确授予连接权限
确认用户存在后,用管理员账号执行授权操作:
-- 授予CONNECT角色(包含CREATE SESSION等基础连接权限) GRANT CONNECT TO ORACLE_USERA; -- 若是小写用户,需带双引号 GRANT CONNECT TO "oracle_usera";
也可单独授予CREATE SESSION权限:
GRANT CREATE SESSION TO ORACLE_USERA;
执行后可验证权限是否生效:
SELECT privilege FROM dba_sys_privs WHERE grantee = 'ORACLE_USERA';
三、排查SQL Developer连接报错Status : Failure -Test failed: null
针对这个模糊报错,逐一排查以下点:
- 用户名大小写匹配:如果是带双引号创建的小写用户,在SQL Dev新建连接时,需填写小写用户名并勾选「区分大小写」选项;默认大写用户直接填写大写即可。
- 连接参数正确性:检查主机地址、端口(默认1521)、服务名/SID是否正确。可通过管理员账号查询服务名:
SELECT value FROM v$parameter WHERE name = 'service_names'; - 数据库监听状态:在数据库服务器上执行
lsnrctl status,确认监听服务正常运行,且包含目标数据库的服务名。 - 网络/防火墙限制:验证本地能ping通数据库服务器,且1521端口未被防火墙拦截。
- 版本兼容性:尝试将SQL Developer更新至最新版本,或检查其配套的JDK版本是否符合Oracle 19c的要求(SQL Developer通常自带适配JDK,若自定义JDK需确保版本匹配)。
内容的提问来源于stack exchange,提问作者Dancun Gerald
相关产品推荐
相关产品推荐

