Oracle之dblink信息详细查询和配置过程
- Oracle之dblink信息详细查询和配置过程
- Oracle中dblink概述
- Oracle中dblink信息详细查询
- Oracle中dblink的创建和检测
- Oracle中dblink的删除
Oracle之dblink信息详细查询和配置过程
本文总结Oracle中的dblink的使用方法,包括了查看、创建、删除等,具体内容如下:
Oracle中dblink概述
dblink(Database Link)数据库链接顾名思义就是数据库的链接,就像电话线一样,是一个通道,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。
使用例子如下:
select * from table@Link_name; //使用Link_name查询其他库的表信息
Oracle中dblink信息详细查询
使用dba账号查询Oracle数据库中的所有dblink相关信息。
SQL> col OWNER for a10;
SQL> col USERNAME for a10;
SQL> col HOST for a80;
SQL> set linesize 160; //查询结果总的的行长宽度为160
SQL> col DB_LINK for a16;
SQL> set pagesize 100 //每隔100行为一页再显示列名
SQL> select * from dba_db_links;
OWNER DB_LINK USERNAME HOST CREATED
---------- ---------------- ---------- -------------------------------------------------------------------------------- ---------
PUBLIC LINK_WLANDB WLAN_GZ wlandb 08-JUL-20
PUBLIC CRM_RPT_LINK TEST rpttest980 20-OCT-15
PUBLIC LINK_SHENGCHAN30 DBQUERY (DESCRIPTION = 12-APR-14
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.9.12 )(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = crmdb30)
(INSTANCE_NAME = crmdb301)
)
)
PUBLIC LINK_RZ DBQUERY (DESCRIPTION = 14-OCT-13
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.37.12)(PORT = 1521))
)
(CONNECT_DATA =
(SID = crm)
(SERVER = DEDICATED)
)
)
DBSALEADM TO_OA BOSS_LINK (DESCRIPTION = 23-MAR-15
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.35.43)(PORT = 1521))
)
(CONNECT_DATA =
(SID = oatest)
(SERVER = DEDICATED)
)
)
DBTRANS LINK_QUERY DBQUERY (DESCRIPTION = 26-APR-14
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.9.12 )(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = crmdb30)
(INSTANCE_NAME = crmdb301)
)
)
PRMUSER VASSP VASSP (DESCRIPTION = 17-OCT-13
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.9.69)(PORT = 1521))
)
(CONNECT_DATA =
(SID = gdvassp)
(SERVER = DEDICATED)
)
)
PRMUSER RPTLNK DBQUERY gztvrpt 17-OCT-13
PRMUSER PRMTEST28 PRMUSER (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.16. 17-OCT-13
9.28)(PORT = 1521)) ) (CONNECT_DATA = (SID = gztvcrm) (SERVER =
DEDICATED) ) )
9 rows selected.
使用非DBA账号登录显示能访问权限的dblink详细信息。
SQL> conn PRMUSER/******; //当前用户名为PRMUSER
Connected.
SQL>
SQL> select * from ALL_DB_LINKS;
OWNER DB_LINK USERNAME HOST CREATED
---------- ---------------- ---------- -------------------------------------------------------------------------------- ---------
PUBLIC LINK_RZ DBQUERY (DESCRIPTION = 14-OCT-13
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.37.12)(PORT = 1521))
)
(CONNECT_DATA =
(SID = crm)
(SERVER = DEDICATED)
)
)
PRMUSER PRMTEST28 PRMUSER (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.16. 17-OCT-13
9.28)(PORT = 1521)) ) (CONNECT_DATA = (SID = gztvcrm) (SERVER =
DEDICATED) ) )
PRMUSER RPTLNK DBQUERY gztvrpt 17-OCT-13
PRMUSER VASSP VASSP (DESCRIPTION = 17-OCT-13
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.9.69)(PORT = 1521))
)
(CONNECT_DATA =
(SID = gdvassp)
(SERVER = DEDICATED)
)
)
PUBLIC LINK_SHENGCHAN30 DBQUERY (DESCRIPTION = 12-APR-14
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.9.12 )(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = crmdb30)
(INSTANCE_NAME = crmdb301)
)
)
PUBLIC CRM_RPT_LINK TEST rpttest980 20-OCT-15
PUBLIC LINK_WLANDB WLAN_GZ wlandb 08-JUL-20
7 rows selected.
从结果可知查询ALL_ DB_ LINKS能得到OWNER为PUBLIC和自己创建的DBLINK的详细信息,而DBA用户访问 dba_ db_links能得到整个数据库的所有BDLINK信息。
其中这两个表的OWNER列一般为PUBLIC、创建者本身用户,当为PUBLIC全局时每个用户都可以用这个DBLINK,为自身账号时仅本账号可用。DB_LINK列为名称。USERNAME列为远程数据库的连接账号名称。HOST列为远程数据库的连接信息。CREATED列为创建时间。
Oracle中dblink的创建和检测
语法:create public database link <DBLink名称> connect to <被连接库的用户名> identified by <被连接库的密码> using ‘<Oracle客户端工具建立的指向被连接库服务名,即TNSNAME中配置的本地服务名>’;
public指明所有用户均可使用这个DBlink,如果不指定,则只有创建者才能使用。
创建dblink的用户有对应的数据库权限:
grant create public database link, create database link to username;
使用本地服务名来创建public dblink:
SQL> create public database link HUAWEI_LINK connect to icd IDENTIFIED BY "icd-1234" using 'hw';
Database link created
//创建public全局的dblink,除非授权不然只有DBA账号能创建public类型,名称为HUAWEI_LINK,使用了配置文件TNSNAMES.ORA中的hw
不使用本地服务名创建,在创建dblink时加上description信息:
SQL> create database link TOEAS_LINK connect to gsuser IDENTIFIED BY gsuser2010
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.9.62)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = qicaidb)
)
)';
Database link created
创建私有dblink时语句中不使用public即可,查询创建后是否正常方法为:
SQL> select * from dual@LINK_WLANDB; //显示为以下时则DBLINK创建成功
D
-
X
SQL> select sysdate from dual@LINK_WLANDB; //还可以检查远程数据库时间来检查
SYSDATE
---------
14-JUL-20
Oracle中dblink的删除
SQL> drop database link linkname; //删除私有用户的DBLINK
SQL> drop public database link linkname; //删除全局DBLINK