Oracle相关异常处理

sql *net 没有完全安装的解决方案

问题描述:

     用sqlplus登陆正常
     而使用plsql时   同样的用户登陆同个数据库时
     就报错:
     初始化错误  
     SQL*NET没有完全安装  
     OracleHomekey:software/oracle
     OracleHomedir
解决办法:
    在PLSQL Developer选择Tools > Preferences > options > "Oracle Home" and "OCI Library",例如:

如果找不到,多找一下菜单里面,有让填写【Oracle Home】【OCI Library】的地方

    Oracle10g装在D:\oracle\

    则:Oracle Home为D:\oracle\product\10.1.0

         OCI Library为D:\oracle\product\10.1.0\Db_1\BIN\oci.dll

    配置完以后重新启动PLSQL Developer,会发现登录界面多了一栏Connect as 的内容。然后可以进行登录。

ORA-03135: 连接失去联系

实际上我们new一个连接的时候,是从数据库连接池里面拿到的连接,这些连接放在.net Provider里面。Conn.Close()并不是关闭了连接,而是把连接还给了连接池。现在的问题是Oracle Provider的问题,而不是代码的问题。程序很久没有跟数据库交互,数据库服务器端就把连接的Open状态关了,但是Provider没有及时处理,依然给了C#代码用,所以就抛出了这个异常。

解决办法:不使用连接池,每次直连数据库,虽然不会出现这个问题,但是会有性能上的损失。

在app.config的配置文件中,在DataSource=(XXXXX)这个字符串中,加入不使用连接池Pooling =false

Data Source =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = XXXXXX)(PORT = 1521)))(CONNECT_DATA =(SID=XXXXXXX)(SERVER=DEDICATED)));Pooling =false;User ID=XXXX;Password=XXXXX;

一般默认连接时长是10分钟,如果出现这个失去联系,最好不要频繁尝试,等一段时间后进行操作最好。

posted @ 2023-12-18 11:45  IT苦行僧-QF  阅读(7)  评论(0编辑  收藏  举报