C#查询ORACLE的DBLINK表报错

问题遇到的现象和发生背景

用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#链接语句咋写的 可能就没链接上去

  • 这篇博客: Oracle ora-02020 视图中dblink使用个数问题中的 Oracle ora-02020 视图中dblink使用个数问题 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 声明:本操作是在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个数。至于其他的区别,在看了英文的解释以后,还是不大明白。希望又看到了,懂得这些的兄弟姐妹能够给补充一下。