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建立同义词。具体两步如下
IDENTIFIED by "b" --B数据库的密码
using 'orcl'; --所在库实例名
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结束事物。