Oracle DB_LINK小结

    DBLINK简述

    A database link is a schema object in one database that enables you to access objects on another database. The other database need not be an Oracle Database System.

    语法/写法

    CREATE [ SHARED ] [ PUBLIC ] DATABASE LINK dblink
      [ CONNECT TO
        { CURRENT_USER
        |
    user IDENTIFIED BY password [ dblink_authentication ]
        }
      | dblink_authentication
      ]...
      [ USING
    connect_string ] ;

    关键字

    • PUBLIC,如果省略它默认创建的DB_LINK是private的不能被其它用户共享仅能自己使用。
    • SHARED,此关键字代表将创建的DB_LINK全局共享(与session相关),使用此关键字要求必须要有db_link_authentication(见示例2)
    • CONNECT TO,指定连接到远程数据库的连接标记
    • CURRENT_USER,使用当前用户信息建立与远程数据库的信息,这块要保证当前用户在远端数据库中存在并且合法。
    • USING,指定远端数据库地址信息(示例)

    示例1
    CREATE DATABASE LINK DB_LINK_NAME

    CONNECT TO REMOTE_USER_CODE IDENTIFIED BY USER_PASSWORD

    USING '192.168.0.8:1521/SID';

    示例2

    CREATE SHARED DATABASE_LINK DB_LINK_NAME

    CONNECT TO REMOTE_USER_CODE_1 IDENTIFIED BY USER_PASSWORD_1

    AUTHENTICATED BY REMOTE_USER_CODE_2 IDENTIFIED BY USER_PASSWORD_2

    USING '192.168.0.8:1521/SID'

    示例2_1

    CREATE SHARED DATABASE_LINK DB_LINK_NAME

    AUTHENTICATED BY REMOTE_USER_CODE_2 IDENTIFIED BY USER_PASSWORD_2

    USING '192.168.0.8:1521/SID'

    注意,示例2中出现两个REMOTE_USER_CODE分别是REMOTE_USER_CODE_1\REMOTE_USER_CODE_2,因为指定了SHARED关键字必须要求有AUTHENTICATION而这时CONNECT TO可以省略(如示例2_1)。

     

    用法

    1. SELECT COUNT(*) FROM USER_TABLES@DB_LINK_NAME;
    2. UPDATE SYS_USER@DB_LINK_NAME SET USER_NAME = '001' WHERE AGE>50
    3. INSERT INTO SYS_USER@DB_LINK_NAME(USER_ID,USER_NAME,AGE) VALUES(001,'001', 51)
    4. DELETE FROM USER_TABLES@ WHERE USER_ID = '001'

     

    参考资料

    • Oracle Documentation Library
    • http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/statements_5005.htm#SQLRF01205

 

你可能感兴趣的:(oracle,数据库,user,database,Authentication,documentation)