在跨数据库查询的时候时常会用到dblink,例如:两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下面的某个schema的数据,这个时候,使用dblink能够很方便的实现。
dblink和数据库中的view功能类似,建立dblink的时候需要直接到待读取数据库的ip地址,ssid以及数据库的用户名和密码。

第一部分:如何创建dblink
dblink的创建有两种方式:
1、在本地数据库tnsnames.ora文件中配置要访问的目标数据库信息
create [public] database link to_mai
connect to scott identified by tiger using 'to_mai';
其中第一个to_mai是将要创建的dblink的名字,
第二个to_mai是tnsnames.ora文件中配置的目标数据库mai的连接信息:
to_mai =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.123)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = mai)
    )
  )
scott/tiger是登录到远程数据库的用户名和密码,然后当在本地数据库使用to_mai的dblink访问远程数据库的时候,会使用scott的身份来访问
2、本地数据库tnsnames.ora文件中没有配置要访问的数据库信息
create [public] database link to_mai
connect to scott identified by tiger
using
  '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.123)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = mai)
    )
  )';
这一种方式其实是把第一种配置在tnsnames.ora文件中的信息,直接放在dblink的后面

要查询对方数据库的表TableName语句如下:
SELECT 字段名 FROM TableName@数据链名称;

第二部分:dblink相关的权限
SYS@test > select * from user_sys_privs where privilege like upper('%link%');
USERNAME                       PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
SYS                            CREATE DATABASE LINK                     NO
SYS                            DROP PUBLIC DATABASE LINK                NO
SYS                            CREATE PUBLIC DATABASE LINK              NO
权限解释:
CREATE DATABASE LINK(所创建的DBlink只能是创建者自己使用,别的用户都使用不了)
CREATE PUBLIC DATABASE LINK(public表示所创建的dblink所有用户都可以使用)
DROP PUBLIC DATABASE LINK(删除Public dblink的权限)

第三部分:dblink的使用
假如说,我要比较两个库的用户的差异,那么我现在可以这么做:
select username from dba_users@to_mai

minus
select username from dba_users;
这样就可以得到在目标数据库中有的用户,而在当前用户中没有的用户列表了
另外一个:如果你乐意,你可以用triggers+dblink实现一个简单的数据同步,不过不建议使用,玩玩就行了。

第四部分:dblink的相关视图

dblink的常用视图有如下几个:
dba_db_links,查看系统中所有的dblink
v$dblink,用来查看当前数据库中有哪些打开的dblink

select * from user_db_links; --用户 DB Link

select * from dba_db_links;  --dba DB Link

select * from v$dblink;      --当前DB Link

Drop database link MYDBLINK1;

如果是相同实例,不同用户,可以用如下方法查询

select * from 用户名.表名

Oracle dblink的说明和简单使用的更多相关文章

  1. 用mysql实现类似于oracle dblink的功能

      用mysql实现类似于oracle dblink的功能 首先看看有没有federated 引擎. mysql> show engines; +------------+----------+ ...

  2. 《oracle每日一练》Oracle DBLink连接数过多的问题(Ora-02020)

    本文转自Oracle DBLink连接数过多的问题(Ora-02020) 今天在处理资料同步问题,需要将其它几个DB Server的资料同步到一个目地资料库,采用的方式是:DBLink+Job ,然而 ...

  3. Oracle笔记(1) 简单查询、限定查询、数据的排序

    Oracle笔记(四) 简单查询.限定查询.数据的排序   一.简单查询 SQL(Structured Query Language) 结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及 ...

  4. Oracle中对XMLType的简单操作(extract、extractvalue...)

    Oracle中对XMLType的简单操作(extract.extractvalue...)    1.下面先创建一个名未test.xml的配置文件. <?xml version="1. ...

  5. oracle dblink 查询 tns:无法解析指定的连接标识符

    问题情景是这样的:我在数据库服务器(windows server 2008r2 ,64bit)oracle(11gr2,64bit)中通过dblink连接到另外一台服务器(hp-ux)的oracle( ...

  6. Oracle DBLINK 简单使用

    oracle在进行跨库访问时,可以通过创建dblink实现,今天就简单的介绍下如果创建dblink,以及通过dblink完成插入.修改.删除等操作 首先了解下环境:在tnsnames.ora中配置两个 ...

  7. MySQL FEDERATED引擎使用示例, 类似Oracle DBLINK

    原文地址:http://it.dataguru.cn/article-3352-1.html 摘要: 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来 ...

  8. Oracle dblink详解

     database link概述 database link是定义一个数据库到另一个数据库的路径的对象,database link允许你查询远程表及执行远程程序.在任何分布式环境里,databas ...

  9. oracle dblink简介

    database link概述 database link是定义一个数据库到另一个数据库的路径的对象,database link允许你查询远程表及执行远程程序.在任何分布式环境里,database都是 ...

随机推荐

  1. hive1.1.0建立外部表关联HDFS文件

    0. 说明 已经安装好Hadoop和hive环境,hive把元数据存储在mysql数据库.这里仅讨论外部表和HDFS的关联,并且删掉外部表之后,对HDFS上的文件没有影响. 1. 在HDFS创建分区, ...

  2. day2-python基础

  3. C++中添加配置文件读写方法

    比如有一个工程,一些变量有可能需要不时的修改,这时候可以通过从配置文件中读取该数值,需要修改时只需要修改配位文件即可. 比如有一个这样的变量m_nTest; 我么可以写两个函数ReadConfig() ...

  4. duilib CDateTimeUI 在Xp下的bug修复

    转自:http://my.oschina.net/u/343244/blog/370131 CDateTimeUI 的bug修复.修改CDateTimeWnd的HandleMessage方法 ? 1 ...

  5. Linux下UDP一发一收通信

    实现在Linux环境下的UDP通信测试. 注释了while循环,将代码规范化. udpserver.c代码: /******************************************** ...

  6. Linux查找后执行命令

    find . -name '*.jsp' -type f -print -exec rm -rf {} \; 在当前目录下找到jsp文件并删除.

  7. @PathParam 和 @QueryParam

    今天调试一个上传功能,客户端手持机发送数据,在URL中附加一个参数,后台用@PathParam接收,但是报错,无法获取这个参数. url:http://192.168.1.3/web1_service ...

  8. JQuery之validate入门

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. Python学习笔记(二十九)ThreadLocal

    import threading #创建全局ThreadLocal对象: local_school = threading.local() def process_student(): #获取当前线程 ...

  10. 【BZOJ】1875: [SDOI2009]HH去散步 矩阵快速幂

    [题意]给定n个点m边的无向图,求A到B恰好经过t条边的路径数,路径须满足每条边都和前一条边不同.n<=20,m<=60,t<=2^30. [算法]矩阵快速幂 [题解]将图的邻接矩阵 ...