zoukankan      html  css  js  c++  java
  • oracle创建dblink

    当用户要跨本地数据库访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。下面讲介绍如何在本地数据库中创建dblink.

      创建dblink一般有两种方式,不过在创建dblink之前用户必须有创建dblink的权限。想知道有关dblink的权限,以sys用户登录到本地数据库:

      select * from user_sys_privs t

      where t.privilege like upper('%link%');

      1 SYS CREATE DATABASE LINK NO

      2 SYS DROP PUBLIC DATABASE LINK NO

      3 SYS CREATE PUBLIC DATABASE LINK NO

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

      在sys用户下,把CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK权限授予给你的用户

      grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to scott;

      然后以scott用户登录本地数据库

      1.创建dblink的第一种方式,是在本地数据库tnsnames.ora文件中配置了要远程访问的数据库。

      create public database link

      to_bylw connect to scott identified by tiger using 'bylw';

      其中to_bylw是你创建的dblink名字,bylw是远程数据库的实例名,scott/tiger是登录到远程数据库的用户/密码。然后在本地数据库中通过dblink访问远程数据库'bylw'中scott.tb_test表,sql语句如下所示

      select * from scott.tb_test@to_bylw;

      2.创建dblink的第二种方式,是在本地数据库tnsnames.ora文件中没有配置要访问的远程数据库,

      create database link to_test

      connect to scott identified by tiger

      using '(DESCRIPTION =

      ( ADDRESS_LIST=

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

      )

      (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = bylw)

      )

      )';

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

      bylw =

      (DESCRIPTION =

      (ADDRESS_LIST =

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

      )

      (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = bylw)

      )

      

    create database link mydblink  connect to MANAGER  identified by  password   using 'orcl';

    DBLINK创建完成后

    两个数据库都存在 tb_demo表  这是本表插入
    查询数据 sql和本地一样了  只是后面加个@DDD.REGRESS.RDBMS.DEV.US.ORACLE.COM  就等于是dblink连好的远程数据库了

    INSERT INTO tb_demo  SELECT * FROM tb_demo@mydblink 

    如果没有对应的表可以

    create table tb_demo as SELECT * FROM tb_demo@mydblink 

  • 相关阅读:
    ethtool 命令输出的注意点--网卡参数
    centos7.2+zabbix3.2+sedmail邮件告警
    vscode monokai
    SQL SERVER 常用命令
    数据库问题6-將系統資料表對應至系統檢視
    数据库问题5-SYS.SYSPROCESSES使用和查找死锁
    select * from sys.sysprocesses
    【SQL Server学习笔记】事务、锁定、阻塞、死锁 sys.sysprocesses
    使用DMV调优性能 --Burgess_Liu
    sql server线程等待信息
  • 原文地址:https://www.cnblogs.com/maple42/p/3940670.html
Copyright © 2011-2022 走看看