• Oracle 使用 DBLINK详解(转载) 挪威


    DBLINK详解

    1.创建dblink语法:

    CREATE [PUBLIC] DATABASE LINK link 

    CONNECT TO username IDENTIFIED BY password

    USING ‘connectstring’

    说明:

    1) 权限:创建数据库链接的帐号必须有CREATE DATABASE LINKCREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。一个公用数据库链接对于数据库中的所有用户都是可用的,而一个私有链接仅对创建它的用户可用。由一个用户给另外一个用户授权私 有数据库链接是不可能的,一个数据库链接要么是公用的,要么是私有的。

    2)link :  GLOBAL_NAME=TRUE时,link名必须与远程数据库的全局数据库名global_name)相同;否则,可以任意命名。

    3)connectstring:连接字符串,tnsnames.ora中定义远程数据库的连接串。

    4)usernamepassword:远程数据库的用户名,口令。如果不指定,则使用当前的用户名和口令登录到远程数据库。

    2.删除数据库链接的语句:

    DROP [PUBLIC] DATABASE LINK zrhs_link

    3.查看已创建的dblink

    select owner,object_name from dba_objects where object_type='DATABASE LINK';

    4.dblink的引用:

    [user.]table|view@dblink

    如:

    SELECT * FROM worker@zrhs_link;

    SELECT * FROM camel.worker@zrhs_link ;

    5.创建同义词:

    对于经常使用的数据库链接,可以建立一个本地的同义词,方便使用:

    CREATE SYNONYM worker_syn FOR worker@zrhs_link;

    6.创建远程视图:

    CREATE VIEW worker AS SELECT * FROM worker@zrhs_link where…;

    现在本视图可与本地数据库中的任何其它视图一样对待,也可以授权给其它用户访问此视图,但该用户必须有访问数据库链接的权限。

    其他:

    修改GLOBAL_NAME的方法:

    1.在远程数据库的init.ora文件中将global_names设为false

    或者

    2.sys用户执行如下语句:ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;

    修改后重新启动数据库设置才能生效。

    数据库全局名称可以用以下命令查出:SELECT * FROM GLOBAL_NAME;



    ===== dblink
    实战 ======

    1.dblink分为公有和私有两类。

    公有dblink使用public修饰关键字。在createdrop的时候都需要使用public关键字。

    公有dblink对所有人开放,在该dblink之上创建的同义词也会随之对所有人开放。(测试并确认,不过测试是在一个实例多个用户之间进行)

    私有dblink只有创建者可以访问,其上的同义词不能被其他用户访问。需为用户创建视图,并将视图授权给所需用户后,用户才可访问该视图。

    另外,不能将带有dblink的同义词直接授权给用户。否则报错,其等价于:

    grant select on table1@user1 to user2                           *

    ERROR at line 1:

    ORA-02021: DDL operations are not allowed on a remote database

    2.创建dblink时,可以使用连接字符串(与tnsname.ora中的),效率较高。

  • 相关阅读:
    对象关系一对多转换为一对一的方案——中介者模式总结
    接口转换的利器——适配器模式总结
    多线程场景设计利器:分离方法的调用和执行——命令模式总结
    对比总结三个工厂模式(简单工厂,工厂方法,抽象工厂)
    创建多个“产品”的方式——工厂方法模式总结
    Java反射+简单工厂模式总结
    最简单的设计模式——单例模式的演进和推荐写法(Java 版)
    对复合(协作)算法/策略的封装方法——装饰模式总结
    Java对象序列化全面总结
    创建产品族的方式——抽象工厂模式
  • 原文地址:https://www.cnblogs.com/allenlf/p/2430265.html
Copyright © 2020-2023  润新知