`

Database Link详解

阅读更多

--创建 CREATE public database link test_link CONNECT TO scott IDENTIFIED BY tiger using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = LEE) ) )'; --使用 select ename from emp@test_link; --删除 drop public database link TEST_LINK;


 

 

一:dblink创建:

 

 

 

 

 

     

       1、已经配置本地服务

             create public database

  link  toBeJing connect to scott
  identified by tiger using 'BEJING'

 


数据库连接字符串'BEJING'是当前客户端数据库中TNSNAMES.ORA文件里定义的别名名称.可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.

 

        2、直接建立链接

             create database link toBeJing

   connect to scott identified by tiger
   using '(DESCRIPTION =
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = X.X.X.X )(PORT = 1521))
   )
   (CONNECT_DATA =
   (SERVICE_NAME = BJORCL)
   )
   )';

 


host=数据库的ip地址,service_name=数据库的ssid。

  其实两种方法配置dblink是差不多的,我个人感觉还是第二种方法比较好,这样不受本地服务的影响。

注意: 假如创建全局dblink,则必须使用systm或sys用户,在database前加public。

1.先创建PUBLIC DATABASE LINK,不用指定用户和密码 

scott@TEST>conn system/test
   Connected.
system@TEST>CREATE PUBLIC DATABASE LINK orcl USING 'BEJING';
  Database link created.


  2.再在各个用户下创建私有DATABASE LINK(同PUBLIC DATABASE LINK名称相同),指定用户和密码
system@TEST>conn scott/tiger
   Connected.
  
scott@TEST>CREATE DATABASE LINK orcl CONNECT TO scott IDENTIFIED BY tiger;
   Database link created.

  实际上相当于: 

 CREATE DATABASE LINK orcl USING 'BEJING' CONNECT TO scott IDENTIFIED BY tiger;

 


db link 有3种类型,我这里只讨论其中两种,connected user和fixed user。
connected user,简单来说,连接方数据库以connected的用户来连接远程数据库。
fixed user,简单来说,连接方数据库以fixed(指定的)用户来连接远程数据库。

 


看看创建db link语法,你对这两种类型就比较清楚了。

创建connected  user的db link语法:
create databas link foo connect to scott identified by tiger using 'BEJING' ;

创建fixed user的db link语法:
create databas link foo using 'BEJING' ;

 


db link 的命名和global_names有关,global_name是数据库全局名称,global_name在你所管理的数据库中要保证唯一。数据库名称是db_name。数据库名称一般都取得比较短,我的习惯一般取长度4个字符,重名概率高。

所以,oracle模仿域名搞出一个global_name,global_name=db_name+db_domain。
有了global_name,就可以实现数据库命名的全局唯一。例:ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM

 


数据库全局名称可以用以下命令查出
       SELECT * FROM GLOBAL_NAME;

 


如果global_names=true,那么db link的命名要和远程数据库的global_name相同;
如果global_names=false,那么你可以随便命名db link。

 


查询global_names是true还是false,在pl/sql中的命令窗口(不是sql窗口)执行:show parameter global_names

 

二、dblink查询:

查看所有的数据库链接,进入系统管理员SQL>操作符下,运行命令:   
  SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';

 


三、dblink删除:

    DROP PUBLIC DATABASE LINK toBeJing

 

四、dblink使用:

       SELECT……FROM表名@数据库链接名;

  查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。

例:查询北京数据库中emp表数据   select * from emp@toBeJing;

 

五、同义词配合:

       第四点中from emp@toBeJing可以创建同义词来替代:
       CREATE SYNONYM同义词名FOR 表名;


CREATE SYNONYM同义词名FOR 表名@数据库链接名;

       如:create synonym bj_scott_emp for emp@toBeJing;

于是就可以用bj_scott_emp来替代带@符号的分布式链接操作emp@toBeJing

 

      DB LINK是独立于创建用户(USER_DB_LINKS的USERNAME)起作用的,其他用户无法使用这个连接,无权限也不能删除它。

 

 

 

分享到:
评论
5 楼 刘一杰 2013-02-26  
4 楼 chaomc 2012-06-19  
3 楼 kadan_james 2012-06-12  
2 楼 andysofan 2011-02-17  
不错不错
1 楼 greedsluck 2010-08-30  

相关推荐

    Oracle数据库如何创建DATABASE LINK

    ### Oracle数据库创建DATABASE LINK详解 #### 一、概述 在Oracle数据库中,通过创建DATABASE LINK(简称DB LINK),可以实现在不同的数据库之间进行数据共享与交互。这种技术使得用户能够像操作本地数据库一样操作...

    database link详解

    SELECT owner, object_name FROM dba_objects WHERE object_type = 'DATABASELINK'; ``` 2. **使用 DBLink 进行查询**: - 在查询时可以直接使用 DBLink 名称作为表名的一部分: ```sql SELECT * FROM emp@...

    Database Link经典详解

    ### Database Link经典详解 #### 一、创建Database Link ##### 1. 权限 - **创建者权限**:为了创建数据库链接(Database Link),账户必须具备`CREATEDATABASELINK`或`CREATEPUBLICDATABASELINK`的系统权限。这些...

    oracle 存储过程 databaselink 收集

    ### Oracle存储过程与Database Link详解 #### 一、Oracle存储过程概述 在Oracle数据库中,存储过程是一种预先编译并存储在数据库中的SQL程序块,它可以接收输入参数、返回输出参数,并执行复杂的业务逻辑。存储...

    Oracle创建Database Link的两种方式详解

    Oracle数据库的Database Link是连接不同数据库之间的一种机制,它允许用户在本地数据库上执行查询,同时访问远程数据库的数据,仿佛这些数据就在本地一样。Database Link是Oracle数据库提供的一种分布式数据库功能,...

    Oracle dblink详解

    Oracle DB Link 详解 Oracle DB Link 是 Oracle 数据库中的一种对象,它允许用户在本地数据库中访问远程数据库中的表和执行远程程序。在分布式环境中,DB Link 是必不可少的。 Database Link 概述 Database Link ...

    oracle dblink详解.pdf

    - **权限**:创建 Database Link 的账号必须拥有 `CREATE DATABASE LINK` 或 `CREATE PUBLIC DATABASE LINK` 的系统权限;而用于登录远程数据库的账号则必须拥有 `CREATE SESSION` 权限。 - **说明**: - 创建 ...

    ospf-database详解.pdf

    它通过建立和维护一个详细的链路状态数据库(Link State Database, LSDB),来计算最优路径。`show ip ospf database` 命令用于查看路由器上的OSPF链路状态数据库信息,这对于理解OSPF的工作原理以及进行故障排查...

    oracle oracle_dblink详解.

    3. 全局数据库链接(Global Database Link):Owner 是 PUBLIC.Global 的数据库链接是网络级的,When an Oracle network uses a directory server, the directory server automatically create and manages global ...

    dblink详解

    3. **Connected User Database Link(与用户相关的数据库链接)**与**Fixed User Database Link(固定用户的数据库链接)**:这两种类型的dblink主要是根据连接远程数据库时使用的身份验证方式来区分的。 - **...

    expdp+impdp_用法详解.pdf

    CREATE PUBLIC DATABASE LINK TOLINK CONNECT TO TEST IDENTIFIED BY oracle USING '(DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=10.0.20.199)(PORT=1521)) ) (CONNECT_DATA= (SERVICE_NAME...

    dblink实战

    创建dblink需要考虑权限问题,创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。这两种权限都包含在CONNECT角色中...

    OSPF的LSA类型详解.doc

    OSPF LSA 类型详解 OSPF(Open Shortest Path First,开放式最短路径优先)是一种链路状态路由协议,它的核心组件是链路状态数据库(LSDB),其中包含了网络拓扑结构的信息。LSDB 中的每一类 LSA(Link State ...

    OSPF路由协议详解

    - **链路状态数据库(Link State Database, LSDB)**: 包含了所有路由器的链路状态信息,用于构建拓扑图。 2. **OSPF的运作过程** - **Hello报文**: OSPF路由器通过发送Hello报文建立并维护邻居关系。 - **DD...

    在oracle下创建dblink

    GRANT CREATE PUBLIC DATABASE LINK, DROP PUBLIC DATABASE LINK TO HXH; ``` 这里假设`HXH`是需要被授予权限的用户名。 #### 五、创建DBLink示例 1. **创建公共DBLink**:使用`CREATE PUBLIC DATABASE LINK`...

    MFC类库详解.rar

    6. **数据库支持(Database Support)**:MFC提供了ODBC(Open Database Connectivity)类库,使得开发与数据库交互的应用程序变得容易。如CRecordset和CDatabase类用于执行SQL查询和管理数据库连接。 7. **动态...

Global site tag (gtag.js) - Google Analytics