Oracle dblink介绍

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
 

可以看出,在数据库中DBLINK有3种权限:CREATE DATABASE LINK(所创建的DBLINK只能是创建者自己使用,别的用户不能使用)、CREATE PUBLIC DATABASE LINK(PUBLIC表示所创建的DBLINK所有用户都可以使用)与DROP PUBLIC DATABASE LINK(删除公共的DBLINK)。可以使用如下授权语句给用户SCOTT授予CREATE PUBLIC DATABASE LINK和DROP 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_NAMES为TRUE时,要求数据库链接名称跟远端数据库名称一样。数据库全局名称可以用以下命令查出:

SELECT * FROM GLOBAL_NAME;

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

ALTER SYSTEM SET GLOBAL_NAMES=FALSE/TRUE;

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

 



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

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

   

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

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

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

   






>

>

>

>

>

>

>
>

>

>

>

>

>
>

>





>

>

>

>



&

时间: 2024-10-27 07:18:12

Oracle dblink介绍的相关文章

oracle dblink问题,报错

问题描述 oracle dblink问题,报错 oracle数据库,创建的dblink,但是我在执行 select * from table@test:的时候,报错: ORA-02068: following severe error from TEST ORA-00600: internal error code, arguments: [2252], [3425], [1722496002], [], [], [], [], [] 请问这个错误怎么解决? 我用plsql链接远程数据库是可以的

oracle dblink mysql 报错ORA-28500

问题描述 oracle dblink mysql 报错ORA-28500 配置信息如下:求大神支援 支援 支援 重要的事情说三遍 odbc.ini [myodbc5] Driver = /home/oracle/app/myodbc-4.18/lib/libmyodbc5.so Description = MySQL ODBC 5.1 Driver DSN SERVER = localhost PORT = 3306 USER = test Password = test DATABASE =

oracle dblink同步数据问题,求大神

问题描述 oracle dblink同步数据问题,求大神 create table table1 nologging as select a,b,c from table2@dblink_aaa where deal_date>=20140101 这样一个sql文件, 用sqlplus username/password@tns @test.sql &后台执行报错, 数据量有六百万,这样导了几个表都没问题,到最后一个报错了, 请问这是什么问题 错误如下: ERROR at line 18:

【体系结构】Oracle参数介绍

[体系结构]Oracle参数介绍 1  BLOG文档结构图     2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① Oracle中的各种参数介绍及其查询方法 ② Oracle中V$PARAMETER及V$PARAMETER2的区别 ③ 隐含参数的查询.重置.清除 ④ 会话参数和实例参数的查询 ⑤ 静态参数和动态参数.延迟参数 ⑥ V$PARAMETER视图的每列含义(重点) Tips: ① 

ORACLE MERGE 介绍

MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句. 通过MERGE语句,根据一张表或多表联合查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT.这个语 法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE.通过这个MERGE你能够在一个SQL语句中对一个表同时执行 INSERT和UPDATE操作. 在 Oracle 10g中MERGE有一些新特性,后面我会介绍这些新特征.先看看MERGE语法

oracle profile介绍

profile文件的介绍:  Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile, 用它来实现对数据库资源的限制使用,如果把该profile分配给用户,则该用户所能使用的数据库资源都在该profile的限制之内.  1.查看信息 select * from dba_users;--查看用户的参数 select * from dba_profiles;--显示所有profile文件及其限制 select * fr

oracle索引介绍(图文详解)_oracle

对于数据库来说,索引是一个必选项,但对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一部分. 索引分类:逻辑分类single column or concatenated  对一列或多列建所引unique or nonunique 唯一的和非唯一的所引,也就是对某一列或几列的键值(key)是否是唯一的.Function-based  基于某些函数索引,当执行某些函数时需要对其进行计算,可以将某些函数的计算结果事先保存并加以索引,提高效率. Doman 

Oracle存储过程介绍

存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程. 存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可.在Oracle 中,若干个有联系的过程可以组合在一起构成程序包. 存储过程的创建 使用CREATE OR REPL

ORACLE DBLINK

Oracle database link概述 2008-08-21 15:31 Oracle database link概述oracle 使用database link(数据库连接)来创建到其他数据库中对象的访问路径.一旦创建了数据库连接,就可以像在本地Oracle数据库一样,对远程(或本地)数据库发出DML(Data Manipulation Language)命令,但大部分数据库连接都不允许DDL(Data Definition Language)操作.数据库连接分为私有数据库连接和公有数据