Oracle dblink介绍

  1. 云栖社区>
  2. 博客>
  3. 正文

Oracle dblink介绍

小麦苗 2017-12-14 13:28:55 浏览1430
展开阅读全文

Oracle dblink介绍




官网:https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5005.htm




当用户要跨本地数据库访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的DBLINK,通过DBLINK可以像访问本地数据库一样访问远程数据库表中的数据。其实,DBLINK和数据库中的VIEW差不多,创建DBLINK的时候需要知道待读取数据库的IP地址、ORACLE_SID以及数据库用户名和密码。


创建DBLINK之前,普通用户必须具有相关的权限才能创建DBLINK,SYS用户登录到本地数据库可以看到相关的权限

SELECT * FROM USER_SYS_PRIVS T WHERE T.PRIVILEGE LIKE UPPER('%LINK%');

SYS@PROD1> SELECT * FROM USER_SYS_PRIVS T WHERE T.PRIVILEGE LIKE UPPER('%LINK%');


USERNAME                       PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
SYS                            CREATE DATABASE LINK                     NO
SYS                            DROP PUBLIC DATABASE LINK                NO
SYS                            CREATE PUBLIC DATABASE LINK              NO
 

可以看出,在数据库中DBLINK3种权限:CREATE DATABASE LINK(所创建的DBLINK只能是创建者自己使用,别的用户不能使用)、CREATE PUBLIC DATABASE LINKPUBLIC表示所创建的DBLINK所有用户都可以使用)与DROP PUBLIC DATABASE LINK(删除公共的DBLINK。可以使用如下授权语句给用户SCOTT授予CREATE PUBLIC DATABASE LINKDROP PUBLIC DATABASE LINK两个权限

GRANT CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK TO SCOTT;

查询数据库的DBLINK可以使用SQL语句:SELECT * FROM DBA_DB_LINKS

创建DBLINK一般有两种方式,第一种方式是在本地数据库tnsnames.ora文件中配置了要远程访问的数据库TNS,例如这里配置了TNS_BJLHR,然后创建公共DBLINK

CREATE PUBLIC DATABASE LINK

DBL_BJLHR CONNECT TO SCOTT IDENTIFIED BY TIGER USING 'TNS_BJLHR';

其中,DBL_BJLHR是创建的DBLINK名字,SCOTT/TIGER是登录到远程数据库的用户名/密码然后在本地数据库中通过DBLINK访问远程数据库“TNS_BJLHR”SCOTT.TB_TEST,SQL语句如下所示

SELECT * FROM SCOTT.TB_TEST@DBL_BJLHR;

创建DBLINK的第二种方式,是在本地数据库tnsnames.ora文件中没有配置要访问的远程数据库的时候,而直接将相关的内容写到DBLINK的配置中,如下所示:

CREATE DATABASE LINK DBL_BJLHR

CONNECT TO SCOTT IDENTIFIED BY TIGER

USING '(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.10)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = BJLHR)

)

)';

其中,HOST为数据库的IP地址,SERVICE_NAME数据库的SID,其实两种方法配置DBLINK是差不多的,第二种方法不受本地服务的影响。

另外,当数据库参数GLOBAL_NAMESTRUE时,要求数据库链接名称跟远端数据库名称一样数据库全局名称可以用以下命令查出

SELECT * FROM GLOBAL_NAME;

用以下语句来修改参数值:

ALTER SYSTEM SET GLOBAL_NAMES=FALSE/TRUE;

当数据库参数GLOBAL_NAMESFALSE时,就不要求数据库链接名称跟远端数据库名称一样。

 




   1、概念:database link是定义一个数据库到另一个数据库的路径的对象,database link            

      允许你查询远程表及执行远程程序。

   

   2建立database link之前需要确认的事项:

      确认从local databaseremote database的网络连接是正常的,tnsping要能成功。

      确认在remote database上面有相应的访问权限。

   
































>

>


>









>







>

>





>
>




>


>




>

>








>
>


>

































































































>




>



>

>






























&

ico_mailme_02.png
DBA笔试面试讲解群
《DBA宝典》读者群 欢迎与我联系



网友评论

登录后评论
0/500
评论
小麦苗
+ 关注