oracle----dblink知识详解

一.  dblink定义

dblink(Database Link)数据库链接顾名思义就是数据库的链接,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。简而言之就是在当前数据库中访问另一个数据库中的表中的数据。

 

二.  简述dblink的创建方式

①  通过pl/sql developer图形化创建

oracle----dblink知识详解_第1张图片

②  通过sql语句创建

create  database   link   link名称

connect  to  对方数据库用户名  identified  by  对方数据库用户密码

using    'ORCL' 

备注:ORCL是数据库的名称,一般在C:\DevSuiteHome1\network\ADMIN下的tnsnames.ora中进行配置

oracle----dblink知识详解_第2张图片

③  通过sql语句创建(和②的方式差不多,但是这种方法比较好,避免了本地配置)

create  database   link   link名称

connect  to  对方数据库用户名  identified  by  对方数据库用户密码

using    '(DESCRIPTION =(ADDRESS_LIST =

              (ADDRESS =

              (PROTOCOL = TCP)(HOST = 要连接的数据库所在服务器的IP地址)(PORT = 1521)))

               (CONNECT_DATA =

               (SERVICE_NAME = 要连接的数据库的在本地的服务名(即要连接的数据库的SID))))';     

备注:using后面的内容就是C:\DevSuiteHome1\network\ADMIN下tnsnames.ora中的内容,取得是里面的具体内容,而不是用的别名,这种方式比上面一种好,不需在本地的tnsnames.ora文件中进行配置,直接将数据库放入,灵活性较强。

oracle----dblink知识详解_第3张图片

 

三.  详述赋予权限

①  先确定用户是否有创建dblink的权限:

select  *  from  user_sys_privs  where  privilege  like  upper('%DATABASE LINK%');

 我的apps用户下的权限:

解释一下:

CREATE  PUBLIC  DATABASE  LINK:表示所创建的dblink所有用户都可以使用

CREATE  DATABASE  LINK:表示所创建的dblink只能是创建者能使用,别的用户不可以使用 

DROP  PUBLIC  DATABASE  LINK :   表示所创建的dblink所用用户都可以删除

 

②  如果指定用户没有上面的几个权限,需要通过sys用户(这个充当管理员角色,有很大权限)赋予权限,你需要登陆sys用户,并在sys用户下执行以下语句:

grant  CREATE  PUBLIC  DATABASE  LINK ,   DROP  PUBLIC  DATABASE  LINK  to  apps; 

 

四.   一些常规操作

1.  连接成功后从所连接的数据库中取数的方法

select   *   from   table_name(表名)@dblink(dblink名);

备注:只需在表名的后面加上"@DBLINK名字"即可。   

2.  在当前数据库下查看所有的DBLINK的方法

select   *   from   dba_db_links;    

3.  删除当前数据库下的一个指定的DBLINK的方法

①  如果创建的是一个public的DBLINK,删除时需要用

        drop  public  database  link  dblink(dblink名)

②   如果创建的是一个private的DBLINK,删除时需要用

        drop  database  link  dblink(dblink名)

4.  注意点

创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限;

用来登录到远程数据库的帐号必须有CREATE SESSION权限

 

五.  具体的操作流程

1.要求两个账户

apps用户,密码:apps     

core用户,密码:1234

2.用户apps(已有用户),创建core(需在sys用户中创建)用户

create   user   core   identified   by   1234

3.赋予core登陆权限(需在sys用户中赋权限)

grant   create   session   to   core

4.  apps用户中查看是否有创建dblink的权限

select  *  from   user_sys_privs    where   privilege  like  upper('%DATABASE LINK%') ;

得到如下权限:

5.  先在core表中创建一个表,并插入数据

创建student表:

              create table student

              (  STUDENT_NO     VARCHAR2(10) not null,

                 STUDENT_NAME   VARCHAR2(20),

                 STUDENT_AGE    NUMBER(2),

                 STUDENT_GENDER VARCHAR2(5));

student表中插入数据:

                insert into student values ('s001','张三',23,'男');

                insert into student NT values ('s002','李四',23,'男');

                insert into student values ('s003','吴鹏',25,'男');

                insert into student values ('s004','琴沁',20,'女');

6.  查看core用户中的student表

oracle----dblink知识详解_第4张图片

7. 在apps中创建dblink并执行

create   public   database   link    link2

connect  to  core  identified  by   "1234"

using  '(DESCRIPTION=            

            (ADDRESS=(PROTOCOL=tcp)(HOST=xxx.xxx.com)(PORT=1541))    

            (CONNECT_DATA=           

            (SERVICE_NAME=dedicated)       

            (INSTANCE_NAME=UAT)))'

8.在apps用户中查看core用户中的student表

Select   *    from    student@LINK2

可以看到core中student的表

oracle----dblink知识详解_第5张图片

至此dblink就建立完成了,如有错误之处还请指出,谢谢各位!!!

 

 

 

 

 

你可能感兴趣的:(oracle----dblink知识详解)