欢迎投稿

今日深度:

Oracle跨库访问DBLINK使用以及实际应用,

Oracle跨库访问DBLINK使用以及实际应用,


目录
  • 1. DBLINK的介绍
  • 2. DBLINK的使用简介
    • 2.1 权限问题
    • 2.2 创建DBLINK
    • 2.3 查询DBLINK
    • 2.4 删除DBLINK
  • 3. DBLINK实际应用语句举例
    • 总结 

      1. DBLINK的介绍

      Oracle在进行跨库访问时,可以创建DBLINK实现,比如要将UAT的表数据灌入开发环境,则可以使用UAT库为数据源,通过DBLINK实现将查出的数据灌入开发库。简而言之就是在当前数据库中访问另一个数据库中的表中的数据

      2. DBLINK的使用简介

      2.1 权限问题

      要想创建DBLINK,首先要检查当前用户是否具备权限。

      SELECT * FROM user_sys_privs WHERE PRIVILEGE LIKE UPPER('%DATABASE LINK%');
      

      CREATE PUBLIC DATABASE LINK:表示所创建的dblink所有用户都可以使用
      CREATE DATABASE LINK:表示所创建的dblink只能是创建者能使用,别的用户不可以使用
      DROP PUBLIC DATABASE LINK : 表示所创建的dblink所用用户都可以删除

      如果没有以上权限,但是有UNLIMITED TABLESPACE权限,也可以实现DBLINK的创建和删除(实测)。

      SELECT * FROM user_sys_privs WHERE PRIVILEGE LIKE UPPER('%UNLIMITED TABLESPACE%');
      

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

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

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

      2.2 创建DBLINK

      创建时加不加PUBLIC关键字,会影响DBLINK的使用范围,加上PUBLIC关键字则所有用户都可以使用,否则只有当前用户或者更高权限的用户可以使用。

      • 通过pl/sql developer图形化界面创建

        等价于
        CREATE DATABASE LINK DBLINK_TEST_TO230
          CONNECT TO hxapp IDENTIFIED BY hxapp
          USING '3.1.11.230/cbsznckdb';
        
      • 如果网络配置文件tnsnames.ora配置了连接信息,则可以使用如下语句实现:
        CREATE DATABASE LINK &dblink_name
        	CONNECT TO &db_name IDENTIFIED BY &db_passwd
        	USING '&db_sid';
        

      • 如果网络配置文件tnsnames.ora未配置连接信息,则可以使用如下语句实现:
      CREATE DATABASE LINK &dblink_name
      CONNECT TO &db_name IDENTIFIED BY &db_passwd
      USING '(DESCRIPTION = 
               (ADDRESS_LIST =
                 (ADDRESS =
                   (PROTOCOL = TCP)
                   (HOST = &ip)
                   (PORT = 1521)
                 )
               )
               (CONNECT_DATA = (SERVICE_NAME = &sid)
               )
             )';
      --例:
      CREATE DATABASE LINK &dblink_name
      CONNECT TO &db_name IDENTIFIED BY &db_password
      USING '(DESCRIPTION = 
               (ADDRESS_LIST =
                 (ADDRESS =
                   (PROTOCOL = TCP)
                   (HOST = 3.1.11.230)
                   (PORT = 1521)
                 )
               )
               (CONNECT_DATA = (SERVICE_NAME = cbsznckdb)
               )
             )';
      --简写
      	CREATE DATABASE LINK DBLINK_TEST_01
      	  CONNECT TO hxapp IDENTIFIED BY hxapp
      	  USING '3.1.11.230/cbsznckdb';
      

      创建以后查询结果:

      2.3 查询DBLINK

      • 查询当前实例下所有的DBLINK
      SELECT * FROM dba_db_links t;
      

      • 查询当前用户下所有的DBLINK
      SELECT * FROM user_db_links t;
      

      2.4 删除DBLINK

      • 如果创建的是一个public的DBLINK,删除时需要用
       DROP PUBLIC DATABASE LINK &dblink_name;
      
      • 如果创建的是一个private的DBLINK,删除时需要用
       DROP DATABASE LINK &dblink_name;
      

      3. DBLINK实际应用语句举例

      --插入语句
      INSERT INTO test_01@DBLINK_TEST_01 t
        SELECT 'UntifA' FROM dual;
      --查询语句
      SELECT * FROM test_01@DBLINK_TEST_01 t WHERE t.name = 'UntifA';
      --删除语句
      DELETE FROM test_01@DBLINK_TEST_01 t WHERE t.name = 'UntifA';
      --更新语句
      UPDATE test_01@DBLINK_TEST_01 t
         SET t.name = 'mengkiD~lufy'
       WHERE t.name = 'UntifA';

      总结 

      到此这篇关于Oracle跨库访问DBLINK使用以及实际应用的文章就介绍到这了,更多相关Oracle跨库访问DBLINK内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

      您可能感兴趣的文章:
      • oracle跨库查询dblink的用法实例详解

      www.htsjk.Com true http://www.htsjk.com/oracle/47568.html NewsArticle Oracle跨库访问DBLINK使用以及实际应用, 目录 1. DBLINK的介绍 2. DBLINK的使用简介 2.1 权限问题 2.2 创建DBLINK 2.3 查询DBLINK 2.4 删除DBLINK 3. DBLINK实际应用语句举例 总结 1. DBLINK的介绍 Oracle在进...
      评论暂时关闭