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

工作中需要从一个数据库中的表GIS_WEICHAI_DATA_1S中的数据导入到另个一数据库的表GIS_WEICHAI_DATA_1S中,数据库服务器都是远程的<IP分别为: 221.131.228.256 211.161.192.46>!我的实现方法是在本地使用PL/SQL操作两个远程服务器,实现方式如下:
1.
为你需要操作的远程数据库服务器建立本地服务名:
在本地数据库安装文件中,找到$ORACLE_HOME/network/admin/tnsnames.ora文件,
末尾添加


代码如下:

--第一个远程服务器的服务名:MYORACLE1
MYORACLE1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 221.131.228.256)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
--第一个远程服务器的服务名:MYORACLE2
MYORACLE2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 211.161.192.46)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
--如果有更多的远程数据库需要同时操作,可以依次增加!
--如果本机用的Windows操作系统,可以使用Oracle自带的Net Manager 工具,以图形化的操作方式来建立服务名!

2.
在本机上使用sysdba的角色登录本地数据库,创建database link:
执行如下sql语句:


代码如下:

--远程服务器一的对应database link
create public database link MYDBLINK1 --可以随便取名,当然,不能是关键字或保留字
connect to dbUserName1 identified by dbpwd1
using ' MYORACLE1';
--远程服务器二的对应database link
create public database link MYDBLINK2 --可以随便取名,当然,不能是关键字或保留字
connect to dbUserName2 identified by dbpwd2
using ' MYORACLE2';
--其中using后面填对应的数据库服务名,dbUserName1,dbpwd1填对应的数据服务器登录名,密码
--删除database link
Drop database link MYDBLINK1; --本例中是MYDBLINK1和MYDBLINK2

3.
操作远程服务器上的表,在要在对应的表后面加上@ linkName(对应的数据库链接名),就跟操作本地数据库中的表差不多,可以从不同数据库服务器中提取数据!很方便!
insert into GIS_WEICHAI_DATA_1S@MYDBLINK1 select * from GIS_WEICHAI_DATA_1S@ MYDBLINK2 where rownum<=10000;
4.
如果需要频繁的使用远程服务器中的表,上面的写法有点烦人,这时候可以考虑为这个表创建一个同义词
create synonym syName for GIS_WEICHAI_DATA_1S@MYDBLINK1;
以后在要使用GIS_WEICHAI_DATA_1S@MYDBLINK1的时候用syName就可以了!
删除同义词的语法为:
drop synonym syName;
5.
查看当前数据库的DB Link;


代码如下:

select * from user_db_links; --用户 DB Link
select * from dba_db_links; --dba DB Link
select * from v$dblink; --当前DB Link

(0)

相关推荐

  • 深入SQL Server 跨数据库查询的详解

    语句SELECT * FROM 数据库A.dbo.表A a, 数据库B.dbo.表B b WHERE a.field=b.field"DBO"可以省略 如SELECT * FROM 数据库A..表A a, 数据库B..表B b WHERE a.field=b.fieldSqlServer数据库:--这句是映射一个远程数据库EXEC sp_addlinkedserver '远程数据库的IP或主机名',N'SQL Server'--这句是登录远程数据库EXEC sp_addlinkedsr

  • Access的跨库查询 (图)

    大家还记得mssql的跨库查询吧,其实在access中也可以实现2个数据之间的交叉查询.下面我就给大家介绍下access的跨库查询. 首先让我们看看在access里是怎样实现对mdb文件进行查询的,我们随便创建个空数据库,对数据库D:\daos\db\daidalos.mdb里的admin表的内容进行查询,SQL语句为: javascript:if(this.width>500)this.width=500" border=0> 查询后,成功返回目标数据库里表admin表里的内容:

  • php结合ACCESS的跨库查询功能

    问题说明: 有时需要在两个或三个数据库的表中,通过相关关键字,查询获取所需记录集,用一般的SQL查询语句是实现不了的,可通过ACCESS的跨库查询功能实现. 解决方法: 例如"装材类型"和"装材"两张表是在不同的数据库中的,具体查询方法,如下: 复制代码 代码如下: @"Select * from 装材类型 as a INNER JOIN [;database=" AppDomain.CurrentDomain.BaseDirectory &qu

  • SQLServer 跨库查询实现方法

    本文给出一条 SQL 语句用于展示在同一名服务器上,不同的数据库间查询,注意当前连接用户要对两个库都有权限SQL Server 中 SQL 语句中对象的完整表达式是: [DatabaseServer].[DatabaseName].[DatabaseSchema].[DatabaseObject] 本文给出一条 SQL 语句用于展示在同一名服务器上,不同的数据库间查询,注意当前连接用户要对两个库都有权限. 复制代码 代码如下: select * from CfteaDb1.dbo.CfteaTa

  • 解析MSSQL跨数据库查询的实现方法

    复制代码 代码如下: --创建链接服务器   exec   sp_addlinkedserver       '链接服务器名称',   '',   'SQLOLEDB',   '远程服务器名或ip地址'   exec   sp_addlinkedsrvlogin     '链接服务器名称',   'false' ,null,   '需要链接服务器用户名',   '密码' sp_addlinkedserver[ @server= ] 'server'[ , [ @srvproduct= ] 'pr

  • 跨数据库实现数据交流

    通常情况下,我们的CRUD操作都在单一数据库中进行.但是,也可能会遇到需要进行跨数据交流的情况.对此,我以跨数据库进行表的访问为例,稍微总结了下. 一.同SQL SERVER 这个最简单.直接在表名前加上"[数据库名]."就可以了. 例: SELECT * FROM [DestinationDBName].dbo.DestinationTableName 二.跨SQL SERVER 主要介绍两种方法: (一)通过链接服务器 1.先执行系统存储过程 sp_addlinkedserver

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

    工作中需要从一个数据库中的表GIS_WEICHAI_DATA_1S中的数据导入到另个一数据库的表GIS_WEICHAI_DATA_1S中,数据库服务器都是远程的<IP分别为: 221.131.228.256 211.161.192.46>!我的实现方法是在本地使用PL/SQL操作两个远程服务器,实现方式如下: 1. 为你需要操作的远程数据库服务器建立本地服务名: 在本地数据库安装文件中,找到$ORACLE_HOME/network/admin/tnsnames.ora文件, 末尾添加 复制代码

  • oracle跨库查询dblink的用法实例详解

    本文实例讲述了oracle跨库查询dblink的用法.分享给大家供大家参考,具体如下: 1.创建之前的工作 在创建dblink之前,首先要查看用户是否有相应的权限.针对特定的用户,使用 sqlplus user/pwd登录后,执行如下语句: 复制代码 代码如下: select * from user_sys_privs t where t.privilege like upper('%link%'); 在sys用户下,显示结果为: SYS CREATE DATABASE LINK NO SYS

  • oracle跨库查询的方法

    在Oracle本地数据库端执行赋权dbuser帐号 SQL> grant create database link to dbuser; 1.配置本地数据库服务器的tnsnames.ora文件 $vi $ORACLE_HOME/network/admin/tnsnames.ora 添加如下行,其中DBLINK为连接名(可自定义),HOST和PORT为数据库侦听的IP及端口,SERVICE_NAME为数据库的SID, MEDIADBLINK = (DESCRIPTION = (ADDRESS_LI

  • django之跨表查询及添加记录的示例代码

    创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many); 一本书只应该由一个出版商出版,所以出版商和书籍是一对多关联关系(one-to-many). 创建一对一的关系:OneToOne("要绑定关系的表名") 创建一对多的关系:ForeignKey("要绑定关系的表名") 创建多对多的关系:ManyToMany("要绑定关系的表名")  会自动

  • Oracle 跨库 查询 复制表数据 分布式查询介绍

    方法一: 在目前绝大部分数据库有分布式查询的需要.下面简单的介绍如何在oracle中配置实现跨库访问. 比如现在有2个数据库服务器,安装了2个数据库.数据库server A和B.现在来实现在A库中访问B的数据库. 第一步.配置A服务器端的tnsnames.ora文件(TNSNAMES.ORA Network Configuration File),该文件存放的位置为: $ORACLE_HOME/network/admin/tnsnames.ora 添加如下行,其中DBLINK为连接名(可自定义)

  • MySql数据库查询结果用表格输出PHP代码示例

    在一般的网站中,我们会通常看到,很多数据库中表的数据在浏览器都是出现在表格中的,一开始让自己感到很神奇,但是仔细想想也不算太复杂,既然可以dql和dml的一般返回,以表格的方式返回应该也不成问题,但是,有一点说明的是,在客户端设计脚本去实现问题是不对的,即便可以实现起来也是非常复杂,所以,只能在服务器的方面去考虑,想想问题解决的方式就有了,即在返回的时候打印表格标签和对应属性和属性值,虽然说这种方式看起来不太合理,但是这也是最为有效的方法.具体的代码如下: <?php //在表格中显示表的数据,

  • 基于Oracle多库查询方法(分享)

    本文简述了通过创建database link实现ORACLE跨数据库查询的方法 1.配置本地数据库服务器的tnsnames.ora文件 $vi $ORACLE_HOME/network/admin/tnsnames.ora 添加如下行,其中DBLINK为连接名(可自定义),HOST和PORT为数据库侦听的IP及端口,SERVICE_NAME为数据库的SID, MEDIADBLINK = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = T

  • asp.net实现的MVC跨数据库多表联合动态条件查询功能示例

    本文实例讲述了asp.net实现的MVC跨数据库多表联合动态条件查询功能.分享给大家供大家参考,具体如下: 一.控制器中方法 [HttpGet] public ActionResult Search() { ViewBag.HeadTitle = "搜索"; ViewBag.MetaKey = "\"123\""; ViewBag.MetaDes = "\"456\""; string whereText

随机推荐