Oracle创建Database Link

一菜单方式:

  打开plsql,点击【File】-【New】-【Database link】,打开如下图所示窗口

填好各项信息后,点击【Apply】即可完成Database Link的创建。

  二SQL方式

-- Drop existing database link
drop public database link dblink_name;
-- Create database link
create public database link dblink_name connect to SYSTEM using ‘192.168.1.73:1521/oracle‘;
-- Create database link
create database link db_1
  connect to db_2_user identified by "db_2_user_password"
  using ‘DEMO =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = db_2_ip)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = db_2_server)
    )
  )‘; 

其中,
       db_1是db link的名称;
       db_2_user是DB2这台机器上源数据库的用户名;
       db_2_user_password是密码;
       db_2_ip是DB2数据库地址,
       db_2_server是DB2数据库服务名。

这样就可以了,如果要访问B数据库的test表,可以“表名@数据链接名”这样用,如:

select * from test@db_1;

以下是详细的补充:

database linke是建立一个数据库到另一个数据库的路径的对象,通过database link可以允许查询远程表,我理解可以算作一种分布式数据库的用法。

database link是单向连接,既然它是一种对象,那自然可以在xxx_objects表中查询到相关的信息。建立database link前需要明确几个事情:

1、确认从建立方的server可以访问远程数据库。
2、需要在建立方的tnsnames中配置远程数据库连接串。
3、只有在服务端配置的连接才能在dblink中使用,如果仅是在客户端配置的连接是不能在dblink中使用,我这里就犯了这个错误,执行时就报错:

select * from [email protected]
          *
ERROR at line 1:
ORA-12154: TNS:could not resolve service name

很明显,相当于服务端未配置tnsname,因此找不到远程数据库的service name配置。

建立过程:

1、建立方的服务端配置远程数据库的tnsname配置。
2、tnsping 远程数据库tnsnames配置名称,可以通。
3、sqlplus登录后执行:

SQL> create database link dblinktest connect to user identified by passwd using ‘ceshi‘;

其中:
dblinktest是database link的名称。

user是远程数据库的用户名。
passwd是远程数据库的密码。
ceshi是数据库服务端配置的tnsnames中名称。

4、执行:

SQL> select owner,object_name from dba_objects where object_type=‘DATABASE LINK‘;
OWNER           OBJECT_NAME
--------------- -------------------------
OPEN               DBLINKTEST

可以看到已经建立了这个database link。

5、执行:

SQL> select * from [email protected];
        ID
----------
         0
         2
         3
         4
         5

当然也可以执行insert语句:

SQL> insert into [email protected] values(1);
1 row created.

另外database link分为public和private的,默认是private,只有当前用户可用,如果是create public database link ...,则所有用户都可以使用这个名称的database link。

注意点:如果在DB1的oracle clinet上通过database links访问DB2的表,需要在DB1的服务器的tnsnames正确指向DB2。假设你的DB_LINK是想从DB1连接到DB2,你需要配置DB1机器上的tnsnames正确指向DB2。如果你确认DB1上的tnsnames中配置正确;那么再确认你正确的tnsnames被使用了,也就是说DB1机器上系统的环境变量指向哪个oracle的bin目录,使用的是不是你配置正确的那个tnsnames文件。两个tnsnames正确配置完成后就可以使用了。

原文地址:https://www.cnblogs.com/mingforyou/p/8276372.html

时间: 2024-11-05 18:52:45

Oracle创建Database Link的相关文章

oracle 创建database link

有时候需要在两个数据库的表join 查询 这时候要用到 database link . database link 的作用就是搭建数据库和数据库的连接. 1.先看如何使用 PL\SQL  工具创建. 找到database links  右键  新建 填名称,  这里的用户名是远程数据库的登录名 数据库就是本地文件 D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora 的 也可以在数据库这里直接填 (DESCRIPTION =(A

Oracle创建database link(dblink)和同义词(synonym)

同一个数据库不同用户之间建立dblink和synonym 1.建立dblink 实现在A用户下通过dblink访问B用户下的数据库表,需要在A用户下创建访问B库的dblink连接 --创建远程连接dblink语句示例: create database link dblink名 connect to B库用户名 identified by B库密码 using '172.66.50.241:1521/AAA'; 备注:需修改对应访问连接用户和密码.IP.端口和数据库示例名 相关连接: https:

Oracle11g密码区分大小写导致database link无法连接

http://f.dataguru.cn/thread-128013-1-1.html Oracle11g的密码默认是区分大小写的,该特性通过初始化参数sec_case_sensitive_logon控制,默认TRUE表示区分大小写.但是Oracle11g之前的版本密码都是不区分大小写的,所以在Oracle10g等以前版本创建到Oracle11g的database link时,可能会碰到以下问题: 10g> create database link oracle11g2 connect to n

oracle 创建dblink

CREATE database link test_dblinkCONNECT TO sjzx IDENTIFIED BY sjzxUSING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.176.150.201)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ))'; database link概述 database link是定义一个数据

Oracle Database Link 的创建和使用小见

假设:需要从数据库db_a通过db_link连接到db_b查询数据库b的部分相关信息 前提条件: 数据库a账户需要有创建dblink的权限,如果没有可以使用dba账户赋权限 grant CREATE PUBLIC DATABASE LINK to  username;grant DROP PUBLIC DATABASE LINK to usenrame; 数据库b账号需要有连接的权限,一般账户都有这个权限 以下是创建的语句: 基本语法: CREATE [SHARED][PUBLIC] datab

oracle database link使用说明

作用:将多个oracle数据库逻辑上看成一个数据库,也就是说在一个数据库中可以操作另一个数据库中的对象 简易语法: CREATE [PUBLIC] DATABASE LINK dblink CONNECT TO user IDENTIFIED BY password USING 'connect_string';  DROP [PUBLIC] DATABASE LINK dblink; 注意:你必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK

ora-01017 和oracle database link

DB link ,创建完了后总是报密码错误.我感到奇怪.明明密码是对的.怎么可能错误呢. SQL> create public database link kk40 connect to khfx identified by xffsf3 using '1004' SQL> select * from ; select * from ORA-01017: invalid username/password; logon deniedORA-02063: 紧接着 line (起自 KK40) S

Oracle global database name与db link的纠缠关系

ORACLE数据库中Global Database Name与DB LINKS的关系还真是有点纠缠不清,在说清楚这个关系前,我们先来了解一下Global Database Name的概念 Global DataBase Name 概念 1. What is a global database name? ------------------------------------------------------------------------------- The global databa

Oracle对象下集(序列、同义词、分区表、database link)

本人所有博文纯手码,给个关注或者赞吧!博主:张晨晨QQ:1445696451欢迎随时加Q讨论技术.一.Oracle的序列·序列是用来生成惟一的连续的整数的数据库对象.序列通常可以用来自动生成主键或者唯一键的值:可根据数值进行升序或者降序的排列·比如创建班级的学生信息登记表,可以将学号使用序列自动生成.班级的学号都是10000~10060这个范围,每登记一个学生,序列自动增长一个.1.创建序列的命令语法create sequence seq_name [start with interger] [