Home Oracle DBLINK
Post
Cancel

Oracle DBLINK

Oracle在进行跨库访问时,可以通过创建DBLINK实现,首先了解下环境:在tnsnames.ora中配置两个数据库别名:orcl(用户名:wangyong 密码:1988)、orcl2(用户名:wangyong 密码:123456),在orcl中创建DBLINK来访问orcl2

赋予权限

在创建DBLINK之前,我们需要判断,登陆的用户是否具备创建DBLINK的权限,所以我们执行以下的语句(用wangyong用户登陆orcl)

1
2
3
-- 查看wangyong用户是否具备创建DBLINK权限
select * from user_sys_privs where privilege like upper('%DBLINK%') 
AND USERNAME='WANGYONG';

如果查询有返回行,则表示具备创建DBLINK权限,否则,则需要使用sys登陆orcl为WANGYONG用户赋予创建权限

1
2
-- 给wangyong用户授予创建dblink的权限
grant create public DBLINK to wangyong;

此时,再执行上面查看是否具备权限的SQL语句,会发现有返回行,表示WANGYONG这个用户已经具备创建DBLINK的权限

  1. 通过PLSQL图形化创建

    填写完成后点击Apply按钮即可创建成功。

  2. 通过sqlplus中的SQL语句创建

    1
    2
    3
    
     -- 注意一点,如果密码是数字开头,用“”括起来
     create public DBLINK TESTLINK2 connect to WANGYONG 
     identified by "123456" USING 'ORCL21'
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
     -- 没有在tnsnames.ora中配置连接时使用下面的语句创建DBLINK
     CREATE DBLINK 'DBLINK名字' CONNECT TO '用户名' IDENTIFIED BY '密码' USING 
     '(DESCRIPTION = 
         (ADDRESS_LIST =
             (ADDRESS =(PROTOCOL = TCP)(HOST = 数据库IP地址)(PORT = 1521))
         )
         (CONNECT_DATA =
             (SERVICE_NAME = 服务名))
         )';
    

    这样,就完成了简单database简单的创建

创建同义词

对于链接字符串,还可以创建同义词代替,使用起来会稍微省点事

1
2
-- 创建同义词
create synonym TESTSYNONYM FOR company@TESTLINK1;

那么查询、插入、修改、删除中可直接用WYSYNONYM代替company@TESTLINK1即可,例如查询语句可改成如下方式

1
2
-- 查询ORCL2中WANGYONG用户的表COMPANY
SELECT * FROM TESTSYNONYM order by id
This post is licensed under CC BY 4.0 by the author.