首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ORA-03150:数据库链接通信通道上的文件结束

ORA-03150:数据库链接通信通道上的文件结束
EN

Stack Overflow用户
提问于 2017-12-27 09:47:46
回答 1查看 31.1K关注 0票数 5

在Oracle数据库中,有一个大型PL/SQL过程定期执行,它通过数据库链接将数据从一个数据库复制到另一个数据库,几个小时后它失败了,出现了以下错误:

代码语言:javascript
运行
复制
ORA-03150: end-of-file on communication channel for database link 
ORA-02063: preceding line from DBPREMOTE 
ORA-06512: at "DBLOCAL.JOB_NAME", line 710 
...
ORA-06512: at line 1 

第710行是过程的第一行:

代码语言:javascript
运行
复制
 execute immediate 'set constraints all deferred';

然后这个过程会做一些插入和更新,我想这是由于PK、数据无效或其他原因而在某个时候失败的。我想,异常是指向这条线,因为它是第一条,并不是因为它实际上是失败的,但我不确定真正的例外。

我是否有可能得到真正的例外,这样我就能处理好了?

EN

回答 1

Stack Overflow用户

发布于 2017-12-27 11:25:04

一种可能的解决方法是在每次使用之后关闭DB-链接,使用PL/SQL过程如下:

代码语言:javascript
运行
复制
FOR aLink IN (SELECT * FROM V$DBLINK) LOOP
    DBMS_SESSION.CLOSE_DATABASE_LINK(aLink.DB_LINK);
END LOOP;

代码语言:javascript
运行
复制
DECLARE
    DATABASE_LINK_IS_NOT_OPEN EXCEPTION;
    PRAGMA EXCEPTION_INIT(DATABASE_LINK_IS_NOT_OPEN, -2081);
BEGIN
    DBMS_SESSION.CLOSE_DATABASE_LINK('DBPREMOTE ');
EXCEPTION 
    WHEN DATABASE_LINK_IS_NOT_OPEN THEN 
        NULL;
END;

如果连接被取消了,你应该和你的网络伙伴谈谈。也许他们通过防火墙设置取消了连接。然而,可能还有许多其他原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47989846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档