CentOS 上使用 SQL*Plus 连接数据库的正确方式
一、SQL*Plus 的定位与适用范围
- SQL*Plus 是 Oracle 提供的命令行客户端,只能连接 Oracle 数据库,不能直接连接 MySQL、PostgreSQL、SQL Server 等其他数据库。若需连接非 Oracle 数据库,请使用各自的客户端工具(如 mysql、psql、sqlcmd)。
二、在 CentOS 上用 SQL*Plus 连接 Oracle 的常用方法
- 本机操作系统认证(无需监听,常用于启停库)
- 本地用户名/口令直连(需数据库实例可用)
- 命令:sqlplus username/password
- 使用 Net 服务名(需正确配置 tnsnames.ora)
- 命令:sqlplus username/password@net_service_name
- 轻松连接(Easy Connect,最常用)
- 命令:sqlplus username/password@//host:port/service_name
- 示例:sqlplus scott/tiger@//192.168.1.10:1521/orcl
- 在 SQL*Plus 会话内切换连接
- 命令:conn username/password@//host:port/service_name
- 说明
- 监听默认端口为 1521;服务名与 SID 不同,按服务端实际配置填写。
- 以 sys 用户登录通常需加 AS SYSDBA。
三、常见连接失败快速排查
- 命令未找到或环境变量异常
- 现象:“sqlplus: command not found”
- 处理:确认已安装 Oracle 客户端/Instant Client,并正确设置 ORACLE_HOME、LD_LIBRARY_PATH、PATH 等环境变量。
- 监听与网络
- 处理:在服务器侧执行 lsnrctl status 检查监听;必要时启动监听 lsnrctl start;客户端可用 tnsping net_service_name 验证解析与连通性。
- 名称解析失败
- 现象:ORA-12154: TNS:could not resolve the connect identifier specified
- 处理:检查 $ORACLE_HOME/network/admin/tnsnames.ora 中服务名、主机、端口、服务名是否正确。
- 目标主机或端口不可达
- 现象:ORA-12545: Connect failed because target host or object does not exist
- 处理:核对 hostname/IP 与 port,确认防火墙放行 1521,并确保数据库监听在该端口。
- 认证失败
- 现象:ORA-01017: invalid username/password; logon denied
- 处理:核对用户名/口令(注意大小写),必要时重置密码。
四、需要连接 MySQL、PostgreSQL、SQL Server 时的替代工具与命令
- 建议做法:在同一台 CentOS 上安装对应客户端,用各自原生工具连接。
| 数据库 |
推荐客户端工具 |
典型连接命令示例 |
| MySQL |
mysql 客户端 |
mysql -h 127.0.0.1 -P 3306 -u root -p |
| PostgreSQL |
psql 客户端 |
psql -h localhost -p 5432 -U postgres -W |
| SQL Server |
sqlcmd 工具 |
sqlcmd -S localhost,1433 -U sa -P ‘YourPassword’ |
- 安装提示(CentOS)
- MySQL 客户端:sudo yum install mysql
- PostgreSQL 客户端:sudo yum install postgresql
- SQL Server 客户端:按微软指引安装 mssql-tools 与 unixODBC-dev