首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ORA-02070:数据库在此上下文中不支持通过DB链接。

ORA-02070:数据库在此上下文中不支持通过DB链接。
EN

Stack Overflow用户
提问于 2015-12-24 07:24:11
回答 1查看 3K关注 0票数 2

我有一个视图,并希望插入这个通过DB链接。但这是错误的"ORA-02070:数据库不支持在这种情况下“。如何解决这个错误?

代码语言:javascript
运行
复制
CREATE OR REPLACE FORCE VIEW V_TEST
(
   OBJECT_ID,
   SEQUENCE,
   SCHEMA_NAME,
   OBJECT_NAME,
   OBJECT_TYPE_NAME,
   LINE,
   POSITION,
   ERROR_MESSAGE,
   CREATE_DATE
)
AS
     SELECT dbaObjects.OBJECT_ID,
            dbaErrors.SEQUENCE,
            dbaErrors.OWNER AS SCHEMA_NAME,
            dbaErrors.NAME AS OBJECT_NAME,
            dbaErrors.TYPE AS OBJECT_TYPE_NAME,
            dbaErrors.LINE,
            dbaErrors.POSITION,
            dbaErrors.TEXT AS ERROR_MESSAGE,
            SYSDATE AS CREATE_DATE
       FROM SYS.DBA_OBJECTS dbaObjects, SYS.DBA_ERRORS dbaErrors
      WHERE     dbaObjects.OWNER = dbaErrors.OWNER
            AND dbaObjects.OBJECT_NAME = dbaErrors.NAME
            AND dbaObjects.OBJECT_TYPE = dbaErrors.TYPE
            AND dbaObjects.OWNER != 'SYS'
            AND dbaObjects.OWNER = 'HELLO'
            AND dbaObjects.STATUS = 'INVALID'
            AND dbaErrors.TEXT != 'PL/SQL: SQL Statement ignored'
            AND dbaErrors.TEXT != 'PL/SQL: Statement ignored'
   ORDER BY dbaErrors.OWNER,
            dbaErrors.NAME,
            dbaErrors.TYPE,
            dbaErrors.SEQUENCE;

视图和远程表类型是相同的

插入声明:

代码语言:javascript
运行
复制
INSERT INTO HELLO.T_INVALID_OBJECT_2@VADA (OBJECT_ID,
                                                    SEQUENCE,
                                                    SCHEMA_NAME,
                                                    OBJECT_TYPE_NAME,
                                                    OBJECT_NAME,
                                                    LINE,
                                                    POSITION,
                                                    ERROR_MESSAGE,
                                                    CREATE_DATE)
   SELECT V.OBJECT_ID,
          V.SEQUENCE,
          V.SCHEMA_NAME,
          V.OBJECT_TYPE_NAME,
          V.OBJECT_NAME,
          V.LINE,
          V.POSITION,
          V.ERROR_MESSAGE,
          V.CREATE_DATE
     FROM V_TEST V;

这是给予错误插入语句:(

EN

回答 1

Stack Overflow用户

发布于 2015-12-24 10:14:25

这个问题与视图中使用的视图有关(DBA_SOURCESDBA_ERRORS)。请参阅关于V$SESSIONherehere的相同变体的讨论。

不幸的是,我没有看到与V$SESSION相同的简单解决方案(如上面的链接中所建议的),在我看来,问题是由sys_context在(嵌套视图的)视图DBA_OBJECTS中的调用引起的。因此,propper解决方案要么是编写您自己版本的DBA_OBJECTS,而不使用sys_context / USERENV,要么在创建该数据的本地副本(例如,GTT中)。

无论如何,有两个解决办法:

1)还原插入,即通过DB链接从视图连接到远程DB ans。

代码语言:javascript
运行
复制
insert into t_demo
select * from v_demo@demo;

如果连接到远程DB不是一个选项,您可以

2)或者在远程DB上定义一个过程,并从本地DB调用它

代码语言:javascript
运行
复制
-- ON REMOTE DB
create procedure ins_remote   
AS
   BEGIN
    insert into t_demo
    select * from v_demo@demo;        
   END;
/
-- plus grants for execute


-- ON LOCAL DB
begin 
   ins_remote@demo;
end;
/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34448918

复制
相关文章

相似问题

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