环境
Oracle 11.2.0.4 + SQL*Plus + PL/SQL
IP地址:192.168.1.97
监听信息:
SYS、SYSTEM密码:123456
客户端tnsnames.ora文件:
tnsnames.ora为客户端通过网络方式进行访问数据库的配置文件。
库的状态:
前言
在日常工作中连接数据库会遇到连接不上,各种报错。这里对此进行了汇总,方便找出问题所在。
一般我们都是通过本机的Oracle客户端连接服务器上的Oracle数据库,需要的条件是:网络连通、用户密码正确、IP正确、端口号正确、服务名正确即可。只要这些配置正确,那么也就可以正常接连到数据库了。
下面就对这些条件在错误的情况下进行演示。
1、正常连接的情况
--验证网络是否正常
--tnsping检查监听是否正常
--使用PL/SQL连接
输入
用户名:sys
口令(密码):123456
数据库(也就是我们在tnsnames.ora文件中配置的名字):ORCL
连接为(因为是SYS用户,所以需要选择角色):sysdba
--连接成功并进行查询验证
2、网络不通
--网络不通时会出现 ORA-12170:TNS:连接超时 错误
3、IP错误
--与网络不通情况类似
4、端口号错误
--将客户端上tnsname.ora文件中的端口号改为错误的 1522 后保存。
--这里tnsping可以通是因为数据库本身使用的是1521端口号,然后tnsping默认也是使用的1521端口号。
--当端口号填写错误时,会出现 ORA-12541:TNS:无监听程序 错误。
5、服务名不正确
--将端口号修改为正确的 1521,并将服务名SERVICE_NAME改为错误的 orcl1。
--tnsping默认不会对服务名进行验证
--当服务名填写错误时,会出现 ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务 错误
6、数据库未开启
--将数据库关闭
shutdown immediate
--因为tnsping只是验证监听是否正常,所以哪怕数据库关闭的情况下也是验证正常的。
--当数据库关闭的情况下,会出现 ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务 错误
7、监听未开启
--关闭监听程序,服务器本地是可登陆数据库的。
--因为监听被关闭,所以tnsping也就会出错 TNS-12541: TNS:无监听程序
--当监听器未启动时,会出现 ORA-12541:TNS:无监听程序 错误
8、用户名或密码错误
--正确的system密码为:123456
--此处输入用户名:system及错误的密码:1
--当用户名或密码错误时,会出现 ORA-01017:invalid username/password; logon denied 错误
9、数据库连接数满了
如果以上都配置正确,还是可能会出现连接不成功,那就是数据库的连接满了。
--查看数据库最大进程数
--当数据库连接满了后,会出现 ORA-12516:TNS:监听程序找不到服务协议堆栈要求的可用处理程序 错误
--在客户端使用SQL*Plus连接也PL/SQL报错一致
--在服务器本地进行连接,会出现 ORA-00020: maximum number of processes (40) exceeded 错误
扩展
数据库连接还可以使用Easy Connect方式连接,这样可以免去tnsnames.ora的配置。
--客户端使用SQL*Plus进行连接
--客户端使用PL/SQL进行连接