用C# oledbadapter查询ORACLE的DBLINK表(连接到DB2):
select C1 from dblink.table1 where rownum=1
不成功,报出如下错误:
ORA-01002: 提取违反顺序
ORA-02063: 紧接着 line (起自 ORA01_DBLINKAS400)
但是直接用PLSQL运行SQL就可以查出结果
oracle 11g
不知道如何解决
C#可以正常查询出结果
c#链接语句咋写的 可能就没链接上去
声明:本操作是在linux环境下进行的
有个视图,里面已经有4个dblink了,但是由于业务需要,还需要再加几个,在加到第五个的时候,系统忽然抛出一个错误:ora-02020:过多的数据库连接在使用中。通过查阅资料,得出的结论是在oracle的系统参数中,OPEN_LINKS和open_links_per_instanse两个参数设置问题,系统默认为4,并没有对这个参数修改
操作如下:
1)切换到oracle用户
su - oracle
2) 登录用户(注:如果用sys或者sysdba登录下面的查询语句会报错)
conn sys/as sysdba
3)show parameter spfile;
看到下面有文件,说明oracle用的的是spfile。
4)备份SPFILE,放置设置有问题需要倒回
create pfile=’/opt/oracle/spfile2011***.ora’ from spfile;
5)show parameter open
NAME TYPE VALUE
open_cursors integer 300
open_links integer 4
open_links_per_instance integer 4
read_only_open_delayed boolean FALSE
session_max_open_files integer 10
6)修改两个参数:open_links,open_links_per_instance
alter system set open_links=10 scope=spfile;
alter system set open_links_per_instance=10 scope=spfile;
6)重启数据库,设置完成。
6.1)shutdown immediate (如果卡死就用下面语句,如果没有卡死直接执行6.2)
6.1.1)shutdown abort
6.1.2)exit
6.1.3)su - root
6.1.4)ps -ef|grep tns
6.1.5)kill -9 杀死tns进程
6.2)重新登录oracle用户,启动数据库
open_links oracle的官方解释是每个session最多允许的dblink数量,open_links_per_instance这个参数是指每个实例最多允许的dblink个数。至于其他的区别,在看了英文的解释以后,还是不大明白。希望又看到了,懂得这些的兄弟姐妹能够给补充一下。