在另外一个数据库建立dblink的时候,发现执行命令报错:
被连接的数据库我也上去过,用工具尝试登陆也报错:
sql
IO Error: Got minus one from a read call, connect lapse 1 ms.,
Authentication lapse 0 ms. Got minus one from a read call, connect lapse 1 ms.,
Authentication lapse 0 ms. Got minus one from a read call, connect lapse 1 ms.,
Authentication lapse 0 ms. Got minus one from a read call, connect lapse 1 ms.
Got minus one from a read call, connect lapse 1 ms.
Got minus one from a read call
Got minus one from a read call
后来去网上找了下,基本提供的方法有这么几种:
1:数据库连接满了,扩大数据库连接池
但是想了一下,别的地方访问也没出问题,应该不是连接数的事。登上服务器查看下,果然连接数没有问题。
sql
1、查看当前的数据库连接数
select count(*) from v$process ; --当前的数据库连接数
2、数据库允许的最大连接数
select value from v$parameter where name ='processes'; --数据库允许的最大连接数
3、修改数据库最大连接数
alter system set processes = 300 scope = spfile; --修改最大连接数:
4、关闭/重启数据库
shutdown immediate; --关闭数据库
startup; --重启数据库
2:所登录的机子IP不在sqlnet.ora内,加入后重启listerner即可
查看sqlnet.ora文件,发现配置了ip白名单。
sql
QLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
TCP.VALIDNODE_CHECKING=YES
TCP.INVITED_NODES=(127.0.0.1)
将ip加入白名单中,重启监听,发现可以正常访问了。
sql
重启监听
lsnrctl stop
lsnrctl start
3:数据库负载均衡时,指定了(SERVER=DEDICATED),去除这个即可