发布时间:2026-10-30 16: 58: 00
同事发来数据库地址、账号和密码,填进登录窗口却连不上,提示有时是找不到服务,有时又变成用户名或密码错误。几类报错对应的检查位置并不一样,反复重输密码往往没有用。日常所说的“用PL/SQL连接数据库”,通常指使用PL/SQL Developer这款工具,PL/SQL本身是Oracle的编程语言。下面围绕这款工具,说明连接设置和失败后的检查方法。
一、PL/SQL怎么连接Oracle数据库
PL/SQL Developer通过Oracle客户端建立连接。开始前应准备数据库主机地址、监听端口、服务名及账号,服务名与实例名不能直接混用。
1、核对工具与Oracle客户端位数
电脑是64位系统,不代表安装的软件全是64位。PL/SQL Developer与它加载的Oracle客户端需要位数一致,数据库服务器的位数则不必与本机工具相同。
①打开【帮助】→【关于】,查看PL/SQL Developer版本及位数,核对已安装Oracle客户端的位数。
②进入【工具】→【首选项】→【Oracle】→【连接】,检查【Oracle Home】和【OCI库】。
③需要指定客户端时,在【OCI库】中选择对应的【oci.dll】,保存设置并重新启动软件。
2、使用地址和服务名登录
①打开【登录】窗口,在【用户名】和【口令】中填写数据库账号及密码。
②在【数据库】中填写【//主机地址:端口/服务名】,将其中的占位内容替换为实际信息。
③普通账号将【连接为】设为【Normal】,点击【确定】登录。
这种方式使用Easy Connect连接标识,不需要先建立本地连接别名,但仍需要可用的Oracle客户端及相应命名支持。端口应使用实际监听端口,不能看到示例里经常填写1521,就认定所有数据库都用这个值。
3、使用已有连接别名登录
连接别名是本地配置中的名称,便于把主机、端口和服务信息集中保存。别人电脑上能用的别名,换一台电脑未必已经配置。
①打开当前客户端使用的【tnsnames.ora】,核对别名及其中的【HOST】、【PORT】和【SERVICE_NAME】。
②使用集中配置目录时,在Windows【环境变量】中核对【TNS_ADMIN】,确认它指向配置文件所在文件夹。
③重新启动PL/SQL Developer,在【登录】窗口的【数据库】中输入对应别名,填写账号后登录。
二、PL/SQL数据库连接失败怎么解决
排查前记下完整错误编号。客户端无法加载、别名无法解析和账号认证失败,发生在不同环节,不宜同时修改所有设置。
1、无法加载OCI,检查客户端与库文件
①返回【工具】→【首选项】→【Oracle】→【连接】,核对【OCI库】是否指向实际存在的【oci.dll】。
②打开【帮助】→【支持信息】,查看软件识别到的Oracle环境,与准备使用的客户端目录比较。
③重新核对软件与客户端位数,修正路径后关闭并重新启动PL/SQL Developer。
不要从另一台电脑单独复制一个同名DLL来替换。OCI还依赖客户端中的其他组件,库文件存在,并不代表这套客户端已经完整可用。电脑安装多套Oracle客户端时,也要确认当前加载的是哪一套。
2、出现ORA-12154,检查连接名称解析
使用别名连接时,这个错误通常表示连接标识没有被正确解析。此时还没有进入正常的账号认证环节,修改密码一般无助于定位问题。
①核对【登录】窗口中的【数据库】名称,与【tnsnames.ora】里的别名逐字比较。
②检查当前生效的【TNS_ADMIN】或客户端配置目录,打开对应【tnsnames.ora】,核对括号、等号和字符。
③配置了【sqlnet.ora】时,检查【NAMES.DIRECTORY_PATH】是否包含所用命名方式,别名使用【TNSNAMES】,Easy Connect使用【EZCONNECT】。
④返回【数据库】输入实际地址、端口和服务名,使用Easy Connect作对照测试。
3、出现ORA-12541或ORA-12514,分别检查监听与服务
①遇到【ORA-12541】,核对连接中的主机与端口,请数据库管理员确认对应地址上是否有监听进程。
②遇到【ORA-12514】,核对【SERVICE_NAME】;具备服务器访问权限时,执行【lsnrctl services】查看监听已识别的服务。
③将连接中的服务名与检查结果比较,确认数据库或目标可插拔数据库已启动,再重新登录。
ORA-12514表明监听收到了请求,但不认识请求中的服务。服务名填错、目标服务未启动或尚未注册,都值得检查。ORA-12541则要回查目标主机和端口的监听情况,不能把两者都归结为密码不正确。
4、出现ORA-01017或账号锁定,核对认证信息
①遇到【ORA-01017】,在【登录】窗口重新输入【用户名】与【口令】,检查大小写和复制时带入的空格。
②核对【数据库】是否指向账号所属的服务,普通账号保持【Normal】连接方式。
③遇到【ORA-28000】或【ORA-28001】,请有权限的管理员检查账号锁定或密码到期状态,处理后重新登录。
同名账号在不同数据库中可能使用不同密码。地址填到了另一套环境,也可能表现为认证失败。账号已经锁定时,应停止反复尝试,由管理员确认状态;切换为SYSDBA不能解决普通账号的认证问题。
三、PL/SQL连接成功后怎样确认环境正确
登录成功只能说明连接已经建立,还应确认当前用户和服务。尤其同时使用测试库与生产库时,这一步比能否展开对象列表更有意义。
1、查询当前用户和数据库服务
①点击【文件】→【新建】→【SQL窗口】,输入【select user,sys_context('USERENV','SERVICE_NAME'),sys_context('USERENV','DB_NAME')from dual】。
②点击【执行】,核对返回的用户名、服务名与数据库名称。
③使用连接列表管理多个环境时,为对应连接设置清楚的【显示名称】,区分用途。
连接列表中的名称可以自行填写,不能单凭“测试库”三个字认定目标正确。查询返回的信息应与实际连接资料对应,确认前不宜直接运行修改数据的脚本。
2、区分登录成功与对象访问权限
能登录数据库,不代表能够查看所有业务表。对象列表为空或查询提示对象不存在时,应检查所属模式和授权,暂时不用重新安装客户端。
①在【SQL窗口】中查询【select table_name from user_tables】,检查当前账号拥有的表。
②已知目标表属于其他模式时,使用【所属模式.表名】填写对象名称,执行经确认的只读查询。
③查询仍失败时,保留错误编号和目标对象名称,请管理员核对对象位置及当前账号权限。
总结
Oracle连接需要客户端、地址、服务和账号共同配合,错误编号能够帮助缩小检查范围。日常把连接资料和所用客户端记录清楚,换电脑或更换环境时会省去不少重复排查。连接恢复后,也应确认目标数据库和访问权限,避免把“能够登录”直接当作环境已经核对完毕。希望这些内容能帮大家理清连接问题,如有相关需求,欢迎交流咨询。
展开阅读全文
︾