日期:2014-05-16  浏览次数:20683 次

Oracle连接错误的解决方法
Oracle连接相关错误解决方法(一步步检查下去,实践证明,任何连接相关错误都可解决)
1、  Ping
a)         网络
b)        防火墙
2、  Tnsping
a)         Tnsping正确只是告诉你至少监听是正常的。
b)        Tnsnames.ora配置问题
c)         Oracle环境变量(客户端)
d)        Sqlnet.ora
3、  Sqlplus “/as sysdba”
a)         报无权限,检查ORACLE_HOME,ORACLE_SID的设置,sqlnet.ora中的设置,用户是否在ora_dba组中。
4、  sqlplus username/password@orcl
a)         服务器是否启动
b)        监听是否启用
c)         Oracle服务器端连接
d)        查看服务器端的listener.log,sqlnet.log,确定客户端是否已经到达监听,如果没有就是完全错的,否则可能的oracle服务配置有问题。
5、  Sqlplus easy connect
a)         如果能连接就是oracle客户端环境有问题,否则按照上述方式处理
6、  ORA-12518 TNS:监听程序无法分发客户机连接
遇到过的一个情况就是客户端tnsnames.ora中的service_name在服务器端不存在,但是呢在listener.ora中呢又配置了到这个实例的侦听引起的。如下所示,服务器上不存在名为cjn的实例。


在一台服务器上安装了多个数据库实例的时候,发生这种情况的概率大很多。
数据库实例没有启动也是可能的。
7、  TNS-12519
ORA-12519: no appropriate service handler found
alter system set processes = 300 scope = spfile;
startup force
8、  ORA-12500
ORA-12500: TNS:listener failed to start a dedicated server process
客户端tnsnames.ora中的service_name在服务器端不存在,但是呢在listener.ora中呢又配置了到这个实例的侦听引起的。
9、  已使用 HOSTNAME 适配器来解析别名,TNS-12541: TNS: 无监听程序
a)         检查oracle_home是不是有多个,比如同时安装了10g和11g
10、              ORA-12152: TNS:unable to send break message
用sql*plus连接即可。也有可能服务器那边进程已经被kill干掉了。
11、              TNS-12541:TNS: 无监听程序
客户端使用sqlplus usename/password@tns连接的时候报TNS-12541:TNS: 无监听程序,而服务器上监听是开着的,应该是客户端tns配置有问题(如应该使用ip而非localhost),可以先使用easy connect测试一下
10、12560: 协议适配器错误
    一般是服务器没有起来,尝试sqlplus “/as sysdba”还是抱ora-12560。尝试设置oracle_sid,oracle_home为正确的值,再尝试连接看看。在oracle 9i&8i中遇到这个错误还有一种可能就是sga设置的问题,看报错的原因是sga太大,但实际上一定要调整到自动初始化的大小才能启动oracle。当使用sysdba连接的时候会报”共享内存已存在”,但是无法正常shutdown(包括abort),这是因为设置了Oracle通过服务自动启动,但是环境变量中的oracle_sid又没有被windows服务识别,导致sid有一块sga一直被windows认为已经在了,但是它的sid却又不知道。因此会出现该问题。解决方法为:将oracle改为手工启动,重启windows服务器,然后通过sqlplus “/as sysdba”,startup pfile=’init.ora’来启动,启动后手工调整sga,pga等参数的大小。

ORA-12638: 身份证明检索失败 的解决办法
C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\ sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES = (NTS)改为NONE即可。

ORA-01031: 权限不足
C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\ sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES = (NONE)改为NTS即可。