连接Oracle数据库服务器并不复杂:只要拿到主机IP、端口、服务名和账号密码,通过sqlplus命令、PL/SQL Developer或JDBC连接串中的任意一种方式,就能在几分钟内建立会话。
下面按“客户端准备连接串格式图形工具实操命令行实操排错”的顺序展开,每一步都给出可直接复制使用的命令或配置。
本地oracle连接远程数据库服务器:先理清客户端、监听、服务名
Oracle数据库服务器上运行着一个名叫监听器的进程,它默认监听1521端口,客户端并不是直接连到数据文件,而是先向监听器发出连接请求,监听器再根据请求中的服务名或SID把会话转交给对应的数据库实例,理解这一点,后面很多配置就能看懂了。
连接远程Oracle数据库服务器,本质上只需要五个要素:
- 主机地址:数据库服务器所在机器的IP或主机名,
168.1.100或db01.example.com - 端口:默认
1521,生产环境可能修改为其他端口 - 服务名/SID:Oracle 12c以后多数使用PDB服务名,
orclpdb1;旧库常用SID,orcl - 用户名:具有
CREATE SESSION权限的账号,如scott - 密码:对应用户的登录密码
| 要素 | 示例 | 容易忽略的点 |
|---|---|---|
| 主机地址 | 168.1.100 |
服务器防火墙必须放行端口 |
| 端口 | 1521 |
修改过默认端口时不能省略 |
| 服务名 | orclpdb1 |
区分服务名和SID,填错会报ORA-12514 |
| 账号密码 | scott/tiger |
密码大小写敏感,账户可能被锁 |
业内专家指出,多数连接失败并非数据库自身问题,而是客户端到服务器的网络路径或监听配置没有打通,所以排查时要按“网络层监听层应用层”的顺序来,而不是一上来就怀疑SQL语句。
oracle数据库连接字符串格式:EZConnect、TNS、JDBC三种写法
不同工具和程序连接Oracle使用的连接串格式不完全相同,熟悉这三种写法后,本地oracle连接远程数据库服务器基本就不会被格式卡住。
EZConnect格式:最简单的一行连接串
EZConnect把主机、端口、服务名直接拼在用户名密码后面,适合临时连接或测试。
-- 语法:用户名/密码@主机:端口/服务名 sqlplus scott/tiger@192.168.1.100:1521/orclpdb1
如果服务器使用的是SID而不是服务名,旧版客户端可能需要写成:
sqlplus scott/tiger@192.168.1.100:1521:orcl
服务名写法用斜杠 ,SID写法在旧语法中用冒号 ,这个差别容易让新手困惑。
TNS别名格式:配置一次,反复使用
TNS别名需要在本地的 tnsnames.ora 文件中预先定义连接描述,然后连接时只写别名。
先在 tnsnames.ora 中写入:
ORCL_LOCAL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb1)
)
)
然后用别名连接:
sqlplus scott/tiger@ORCL_LOCAL
好处是主机变更时只需修改一处配置文件,应用代码里的连接串不用改。
JDBC Thin格式:Java程序最常用
Java程序通过JDBC驱动连接Oracle时,使用thin驱动格式:
jdbc:oracle:thin:@192.168.1.100:1521/orclpdb1
如果连接的是SID,写法则为:
jdbc:oracle:thin:@192.168.1.100:1521:orcl
Java程序只要引入 ojdbc8.jar 或 ojdbc11.jar 驱动包,不需要安装Oracle客户端,这也是JDBC方案在企业应用里被广泛使用的原因。
不用安装完整客户端,Oracle Instant Client也能连上远程服务器
很多人问连接oracle数据库需要安装客户端吗,答案要分场景看:
- 使用 Java程序:不需要客户端,只要驱动jar包
- 使用 sqlplus命令行:需要客户端或轻量的Instant Client
- 使用 PL/SQL Developer:需要客户端或Instant Client,它本身不带网络通信组件
Oracle Instant Client 是官方提供的轻量客户端,压缩包只有几十MB,解压后无需安装,配置好环境变量就能用,相比完整Oracle Client动辄几个GB的体积,Instant Client更适合开发人员和运维人员在个人电脑上快速搭建连接环境,它同样包含 sqlplus、tnsping 等实用命令。
plsql developer连接oracle数据库步骤:配置连接并测试成功
PL/SQL Developer是Windows下使用频率很高的Oracle图形工具,但它本身不负责连接数据库,需要借助Oracle客户端或Instant Client提供的OCI接口,以下是完整可操作的步骤:
- 下载Instant Client:从Oracle官网下载Windows版 Instant Client,
instantclient-basic-windows.x64-21.3.0.0.0.zip - 解压到固定目录:
D:oracleinstantclient_21_3 - 配置环境变量:在系统环境变量中新增或修改:
PATH添加D:oracleinstantclient_21_3- 新建
TNS_ADMIN,值指向存放tnsnames.ora的目录,如D:oraclenetworkadmin
- 创建tnsnames.ora:在
TNS_ADMIN目录下新建该文件,写入连接描述,内容参考上文TNS示例 - 测试监听解析
:打开命令提示符,执行
tnsping ORCL_LOCAL,看到返回OK表示监听可连通 - 打开PL/SQL Developer:登录窗口中的Database下拉框选择
ORCL_LOCAL,填写用户名和密码,点击Connect - 确认连接成功:连接后能展开
Tables、Views等对象目录,说明已连上远程数据库服务器
# tnsnames.ora 示例ORCL_LOCAL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orclpdb1) ) )
如果PL/SQL Developer登录时下拉框里没有出现配置的别名,检查 TNS_ADMIN 是否指向正确目录,以及PL/SQL Developer是否以当前用户身份读取到了该环境变量,多数情况下重新打开一次工具即可生效。
Windows和Linux下连接Oracle服务器命令实操
Windows下配置oracle客户端连接:环境变量与tnsnames.ora
Windows系统配置客户端时,核心工作就三件事:设置 ORACLE_HOME、设置 TNS_ADMIN、编写 tnsnames.ora,命令行中可以这样操作:
set ORACLE_HOME=D:oracleinstantclient_21_3 set TNS_ADMIN=D:oraclenetworkadmin set PATH=%PATH%;%ORACLE_HOME% tnsping ORCL_LOCAL
tnsping 返回包含 OK 的结果时,说明客户端已经能通过监听器找到远程数据库服务,接下来无论是 sqlplus 还是PL/SQL Developer,都可以正常使用这个别名。
如果不想配置 tnsnames.ora,Windows下也可以直接用EZConnect格式:
sqlplus scott/tiger@192.168.1.100:1521/orclpdb1
Linux连接oracle数据库命令:sqlplus一行搞定
Linux服务器上通常没有图形界面,直接使用 sqlplus 命令连接远程Oracle服务器是最常见做法,前提是已经安装了Oracle客户端或Instant Client,sqlplus 命令可用。
一行连接命令:
sqlplus scott/tiger@192.168.1.100:1521/orclpdb1
也可以在脚本中使用静默方式执行SQL,避免交互式输入:
sqlplus -S scott/tiger@192.168.1.100:1521/orclpdb1 <<EOF SELECT SYSDATE FROM dual; EXIT; EOF
参数说明:
-S:静默模式,不输出命令提示信息-L:只尝试登录一次,连接失败不重复提示输入账号密码,适合自动化脚本
Linux下还可以把连接描述直接写在命令行参数中,不依赖 tnsnames.ora:
sqlplus scott/tiger@'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orclpdb1)))'
这种写法适合只有一两个临时连接任务的场景,省去配置文件的维护成本。
oracle数据库连接不上常见原因:从网络到权限排查
连接失败时不要急着改代码,先按下面顺序排查,往往能很快找到问题。
网络层:主机不可达或端口不通
ping 192.168.1.100确认主机网络可达telnet 192.168.1.100 1521确认1521端口是否开放- 服务器防火墙需要放行1521端口,Windows和Linux的iptables/firewalld都要检查
监听层:监听未启动或服务名错误
- 在数据库服务器上执行
lsnrctl status,确认监听器正在运行 - 如果监听未启动,执行
lsnrctl start - 客户端执行
tnsping ORCL_LOCAL,如果报TNS-03505或解析失败,说明服务名在监听中没有注册
应用层:账号密码或实例问题
- 账号密码错误报
ORA-01017 - 账户被锁报
ORA-28000,需要管理员执行ALTER USER scott ACCOUNT UNLOCK; - 服务名不存在报
ORA-12514,需核对是服务名还是SID
| 错误码 | 含义 | 常见处理 |
|---|---|---|
| ORA-12170 | 连接超时 | 检查防火墙、端口、网络路由 |
| ORA-12541 | 无监听器 | 启动监听或核对端口 |
| ORA-12514 | 服务名未注册 | 核对 SERVICE_NAME 与监听注册信息 |
| ORA-01017 | 用户名/密码无效 | 重置密码或确认大小写 |
| ORA-28000 | 账户被锁 | 管理员执行解锁操作 |
行业共识认为,先确认网络层可达、再检查监听、最后核对服务名,能解决相当一部分连接故障,排查时保持这个顺序,可以少走很多弯路。
关于oracle数据库怎么连接数据库服务器的常见问答
Q1:本地oracle连接远程数据库服务器必须安装完整客户端吗?
答:不必,Java应用使用JDBC驱动即可,不需要Oracle客户端,使用 sqlplus 命令或PL/SQL Developer时,可以只安装Oracle Instant Client轻量客户端,解压后配置好 PATH 和 TNS_ADMIN 环境变量即可连接远程数据库。
Q2:plsql developer连接oracle数据库步骤中,哪一步最容易导致连接失败?
答:多数情况是 tnsnames.ora 文件里的服务名与实际数据库服务名不一致,或者 TNS_ADMIN 指向了错误目录,可以先在命令提示符下执行 tnsping 别名,返回 OK 后再打开PL/SQL Developer连接。
Q3:oracle数据库连接不上常见原因怎么快速排查?
答:按顺序执行四个动作:ping 服务器IP 确认网络通;telnet 服务器IP 1521 确认端口开放;tnsping 服务名 确认监听能解析;最后检查用户名密码是否有效,按此顺序能定位大部分问题。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/674357.html





