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

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://zyqwst.iteye.com/blog/2285560

    https://blog.csdn.net/bxl049/article/details/70879655

2.创建表名同义词 SYNONYM

create SYNONYM table_new for table_b@dblink名;  
直接访问: select * form table_new 相当于:select * from table_b@dblink名;

3. 创建表空间、用户、dblink、让用户持有dblink、创建视图、建立同义词、导出数据

----------------------------------------------------------------------------------------------------------------------

同一个数据库不同用户之间建立dblink和synonym

数据库中现有数据库A(用户名/密码  A/a),数据库库B(用户名/密码 B/b)。A用户需要B库中的表table_b;A用户如果想直接对表table_b进行操作,例如 select * from table_b;update XXX table_b set XXX等。需要两步:1对B用户建立dblink;2对b.table_b建立同义词。具体两步如下

--1建立对B数据库的dblink
create database link test_link connect to B --B数据库的某个用户名
IDENTIFIED by "b" --B数据库的密码
using 'orcl';  --所在库实例名
--执行上面的语句,然后在A数据库测试 查询语句:select * from test_link.table_b;查询成功说明blink建立成功。但是每次想操作table_b表都要在前面加test_link真的很不爽,下来为其建立同义词
--2建立同义词
create SYNONYM table_b for table_b@test_link;
--现在执行查询select * from table_b;就好像table_b表是A数据库的表一样,有没有很爽

create database link test_link connect to B
IDENTIFIED by "b"
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))'

--------------------------------------------------------------------------------同库同实例

1.dba用户 赋权创建同义词的权限
sqlplus /as  sysdba
grant create synonym to dcm
--finchina 用户 赋权 dcm查看的权限
grant select on table1 to dcm;
--dcm 用户创建同义词
create or replace synonym table1 for finchina.table1;

----------------------------------------------------------------------------------

oracle database link 查询时候 select * from 表A@link 执行后为什么会起事务

oracle的db_link数据bai要数据库自身du和远程数据库建立zhi链接进行查询dao的zhuan,而且会对远程数据shu库中查询的表加锁。相当于本地的 select * from table for update;产生事物就是因为这个原因。通过dblink查询完之后,最好进行commit或rollback结束事物。

原文地址:https://www.cnblogs.com/zhanglin123/p/14078313.html