昊仔

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

当用户要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。下面讲介绍如何在本地数据库中创建dblink. 1,创建dblink一般有两种方式,不过在创建dblink之前用户必须有创建dblink的权限。想知道有关dblink的权限,以sys用户登录到本地数据库: sys@ORCL> select * from user_sys_privs t where t.privilege likeupper('%link%');

 

USERNAME                       PRIVILEGE                                ADM

---------------------------------------------------------------------- ---

SYS                            DROP PUBLICDATABASE LINK                NO

SYS                            CREATE DATABASELINK                     NO

SYS                            CREATE PUBLICDATABASE LINK              NO   可以看出在数据库中dblink有三种权限CREATE DATABASE LINK(所创建的dblink只能是创建者能使用,别的用户使用不了),CREATE PUBLICDATABASE LINK(public表示所创建的dblink所有用户都可以使用),DROP PUBLIC DATABASE LINK。

2,在sys用户下,把CREATE PUBLIC DATABASE LINK,DROP PUBLICDATABASE LINK权限授予给你的用户 sys@TEST> grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to hr;

Grant succeeded.

3, 然后以hr用户登录本地数据库   1).创建dblink的第一种方式,是在本地数据库tnsnames.ora文件中配置了要远程访问的数据库。  hr@TEST> create public database link to_orclconnect to hr identified by hr using 'orcl';

Database link created.   其中to_orcl是你创建的dblink名字, orcl是远程数据库的实例名,hr/hr是登录到远程数据库的用户/密码。然后在本地数据库中通过dblink访问远程数据库'orcl'中hr.employees表,sql语句如下所示   hr@TEST> select * from hr.employees@to_orcl;

  2).创建dblink的第二种方式,是在本地数据库tnsnames.ora文件中没有配置要访问的远程数据库, hr@TEST> create database link to_test connect to scott identified by tigerusing '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.226)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))';

 

Database link created.

  第二种是把第一种配置在tnsnames.ora文件中的信息,直接放在创建dblink语句后面。

 

hr@TEST> select * from scott.emp@to_test;

 

 

第一种情况tnsnames.ora文件中信息如下: orcl =

(DESCRIPTION =

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

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = orcl)

    )

  )

 

4,

查询方法:

1)、执行select * from dba_db_links;语句。

2)、在PL/SQL中,在左边浏览器中点击database links就可以看到数据库链路了。

创建Create database link语句:create publicdatabase link 链路名 connect to 用户identified by 口令 using '连接字符串';

 

 

 

附录:oracle11g之前版本数据库内创建到oracle11g的dblink的密码问题解决方案

hr@TEST> create database link to_testconnect to scott identified by tiger using'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.226)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))';

Database link created.

 

hr@TEST> select * fromscott.emp@to_test;

select * from scott.emp@to_test

                       *

ERROR at line 1:

ORA-01017: invalid username/password; logondenied

ORA-02063: preceding line from TO_TEST

 

 

hr@TEST> drop database link to_test;

Database link dropped.

 

hr@TEST> create database link to_testconnect to "scott" identified by "tiger" using '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.226)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))';

Database link created.

 

hr@TEST> select * fromscott.emp@to_test;

 

    EMPNO ENAME               JOB                       MGR HIREDATE            SAL       COMM    DEPTNO

---------- -------------------------------------- ---------- ------------ ---------- ---------- ----------

     7369 SMITH               CLERK                    790217-DEC-80           800                    20

     7499 ALLEN               SALESMAN                 769820-FEB-81          1600        300        30

     7521 WARD                SALESMAN                 769822-FEB-81          1250        500        30

     7566 JONES                MANAGER                  7839 02-APR-81          2975                    20

     7654 MARTIN              SALESMAN                 769828-SEP-81          1250       1400        30

     7698 BLAKE               MANAGER                  783901-MAY-81          2850                    30

     7782 CLARK               MANAGER                  783909-JUN-81          2450                    10

     7788 SCOTT               ANALYST                  756619-APR-87          3630                    20

     7839 KING                PRESIDENT                    17-NOV-81          5000                    10

     7844 TURNER              SALESMAN                 769808-SEP-81          1500          0        30

     7876 ADAMS                CLERK                    7788 23-MAY-87          1100                    20

     7900 JAMES               CLERK                    769803-DEC-81           950                    30

     7902 FORD                ANALYST                  756603-DEC-81          3000                    20

     7934 MILLER              CLERK                    778223-JAN-82          1300                    10

 

14 rows selected.

posted on 2013-08-19 20:06  昊仔  阅读(579)  评论(0编辑  收藏  举报