通过create创建DBLINK
createpublicdatabaselink①dblinknameconnectto②"DSUSER" identifiedby③"qwer123!"
using④'(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL =TCP)(HOST = ⑤109.112.56.181)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME =⑥tchniiss )))'
同DDL语句创建一个DBLINK,1是dblink的名字 ,期中2、3分别是用户名,密码(注意:用户名,密码必须用双引号,否则会报,ORA-00987),4是对连接信息的描述(5是服务器的IP,6数据库实例名),
对于using的后面的描述是可以省去的,通过PL/SQL在创建的时候是可以省去的
createpublicdatabaselink①dblinknameconnectto②"DSUSER" identifiedby③"qwer123!"
using④'⑤109.112.56.181/⑥tchniiss '
省去端口描述,只是用IP/实例
2.
图形界面创建
选择public,owner初就会出出现在public
Name:dblink的名字
Usename:to数据库的用户名
Password:数据库密码
Database:可以上面using后面的任意一种方式。都识别
权限:
Private,创建的时候,没有任何关键字,这个dblink只能是创建的用户使用,也只能被创建的用户删除。
Public创建的时候加public关键字,可以被整个数据库所有的用户使用,谁都可以删除,删除的必须加public
Drop public databaselinkdbname;
Shared指是授权的session才能访问,避免过多的连接造成远程服务器崩溃,当使用shared后,本地连接就会断开(减少远程数据库压力)。
Dblink的引用:user.table|view@dblink
CREATESYNONYM worker_syn FOR worker@zrhs_link;
创建远程视图:本质上还是dblink表,看到的只有视图
CREATEVIEW worker AS SELECT * FROM worker@zrhs_link where…;
公有dblink使用public修饰关键字。在create和drop的时候都需要使用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 remotedatabase
2.创建dblink时,可以使用连接字符串(与tnsname.ora中的),效率较高。