`
JohnnyCan
  • 浏览: 28623 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oracle中只能通过dblink查询远程数据库而不能插入的问题

阅读更多

在oracle 中要创建database link,首先得授予用户相应权限。一般情况下,用相应命令建好dblink后就可以使用了,并不需要 alter system set global_names=true。

昨天遇到莫名其妙的问题,在pl/sql中可以对dblink链接的数据库执行查询和插入操作,但是在procedure中执行插入操作时就会报错。并且提示信息为“global_name 应该设置为true”。

后来测试了各种情况后发现症结所在。global_name保持默认的false就行了,在向dblink指向的数据库中插入数据的sql语句中,不能用到本地的数据库对象,常见的有sequence,function,view等。如果你在不知情的情况下不幸用到了,oracle会很变态的提示你“global_name 应该设置为true”,并不是说“对象不存在”类似的信息。这样的提示信息会让你绕一个大圈子。

原因很简单,这里就要说到dblink的工作原理了。你在本地procedure中操作dblink指向数据库的sql语句,最终是发送到到远程数据库后再执行的,这样语句中包含的本地数据库对象就理所当然的失效了!

解决方法:把本地数据库对象执行的最终执行结果保存到变量中,再把sql中用到的本地数据库对象用这些变量替换。

 

分享到:
评论

相关推荐

    建立oracle 数据库的dblink

    Oracle数据库的DBLINK(数据库链接)是一种连接两个不同Oracle数据库实例的机制,允许用户在一个数据库中执行查询或操作另一个数据库的数据。在Oracle中,DBLINK是实现跨数据库交互的重要工具,尤其在分布式数据库...

    Oracle-不同数据库DBLINK导数据使用说明

    数据库链接(DBLINK)允许一个Oracle数据库实例连接到另一个远程数据库实例,从而实现数据的透明访问。创建DBLINK的基本语法如下: ```sql CREATE DATABASE LINK db_link_name CONNECT TO remote_user IDENTIFIED ...

    oracle 存储过程 函数 dblink

    例如,可以通过以下方式查询远程数据库中的数据: ```sql SELECT * FROM table_name@db_link_name; ``` #### 九、总结 本文主要介绍了Oracle存储过程的概念、创建和调用方法,以及如何使用DBLink实现跨库操作。...

    oracle dblink 的应用

    Oracle dblink 是 Oracle 数据库中用于连接不同数据库实例的工具,允许用户在多个数据库之间进行数据查询、更新和传输。它的主要应用场景是在分布式环境中,当需要从一个数据库访问另一个远程数据库的数据时。以下是...

    oracle数据库之间同步数据 dbLink +job方式

    使用dbLink不仅可以查询远程数据库中的数据,还可以通过它来更新、插入或删除数据。Oracle提供了一种强大的数据同步工具——`MERGE`语句,它可以有效地处理这种同步任务。 下面是一个简单的示例,展示了如何使用`...

    Oracle使用dblink导用户下的所有表数据(以迁移scott用户为例)

    DB Link是Oracle提供的一种机制,它允许在一个数据库(本地数据库)中执行SQL语句,操作另一个远程数据库的数据。通过创建DB Link,我们可以将一个数据库连接到另一个数据库,仿佛它们位于同一系统内。 迁移scott...

    Oracle数据库如何创建DATABASE LINK

    此时,可以通过DATABASE LINK来访问远程数据库中的表: ```sql SELECT * FROM tbl_bjflb@taowei_to_101; ``` 6. **删除DATABASE LINK** 如果不再需要某个DATABASE LINK,可以使用以下命令将其删除: ```sql...

    oracle建立dblink步骤

    通过构建DBLink,可以实现在一个数据库环境中直接查询或操作另一个数据库中的数据,而无需编写复杂的程序逻辑来处理数据传输。 #### 二、测试场景设定 假设某公司总部位于北京,并且在新疆设有一个分公司。为了方便...

    关于创建oracle dblink 过程的几点心得

    使用 DB Link 可以查询、删除和插入远程数据库中的数据,方法与操作本地数据库相同,只需要在表名后添加 @dblink 服务器。 DB Link 的优点 使用 DB Link 可以实现不同的数据库服务器之间的数据共享和交换,提高了...

    数据库dblink.pdf

    视图是基于本地数据库的查询结果,而DBLink直接引用远程数据库对象,不存储数据,只在需要时执行远程查询。 总结:DBLink是Oracle数据库间通信的重要工具,它允许用户跨越数据库边界执行操作,提高了数据共享和整合...

    SQL Server2005 DBLINK链接Oracle 9i详解

    本文档详细介绍了如何在 SQL Server 2005 中通过 DBLINK 功能实现与 Oracle 9i 数据库之间的链接。通过这种方式,可以在 SQL Server 2005 中查询、更新甚至是执行 Oracle 9i 中的数据。此文档包含具体的步骤说明,并...

    java对oracle数据库中blob字段的处理

    当涉及到跨数据库操作BLOB字段时,如示例中通过DBLink进行远程数据库操作,需要特别注意。DBLink允许在一个数据库中访问另一个数据库的数据,但在处理BLOB数据时会遇到限制,因为DBLink可能无法直接传输大对象数据。...

    20.Oracle数据库链路1

    Oracle数据库链路(Database Link,简称dblink)是Oracle数据库提供的一种机制,使得本地数据库能够直接访问和操作远程数据库中的对象。dblink并不是为应用程序和数据库之间建立连接,而是两个数据库之间的桥梁,...

    Oracle跨数据库查询并插入实现原理及代码

    在Oracle的网络配置文件`tnsnames.ora`中,你需要添加远程数据库服务器的详细信息,包括主机地址、端口和服务名。例如,对于IP分别为221.131.228.256和211.161.192.46的远程服务器,你可以这样配置: ```sql MY...

    Postgresql连接oracle驱动并实现读写

    `oracle_fdw`是PostgreSQL的一个外键数据类型扩展,它允许PostgreSQL服务器访问存储在远程Oracle数据库中的数据。 #### 二、环境准备 **操作系统**: CentOS 6.2 **PostgreSQL版本**: PostgreSQL 9.5.6 **Oracle...

    oracle - 数据同步 实例

    - 这段代码定义了一个名为`TRI_GRADING`的触发器,它会在本地表`GRADING`发生插入、删除或更新操作时,自动将相应的操作同步到远程数据库中的`SYN_GRADING`表。 #### 四、总结 通过以上步骤,我们成功地建立了一...

    oracle 数据同步

    DBLINK是Oracle数据库提供的一种远程数据库连接机制,它允许在一个数据库上执行对另一个数据库的查询或操作。创建DBLINK的步骤如下: 1. 创建DBLINK: ```sql create public database link HM connect to HM ...

    Oracle学习笔记

    创建DBLink后,用户可以在本地数据库上执行对远程数据库的操作,如同在本地进行。 五、PL/SQL开发工具 PL/SQL是Oracle的结构化查询语言扩展,用于编写数据库操作的程序代码。开发工具如PL/SQL Developer支持用户...

Global site tag (gtag.js) - Google Analytics