Oracle dblink的简应用

1.查看DBLINK

SELECT * FROM DBA_DB_LINKS;
或:
SELECT OWNER,OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_TYPE='DATABASE LINK';
或:
SELECT * FROM ALL_DB_LINKS;

2.创建DBLINK
前提:
创建DBLINK的用户有对应的数据库权限

CREATE PUBLIC DATABASE LINK 
或:
CREATE DATABASE LINK 

授权:

GRANT CREATE PUBLIC DATABASE LINK,CREATE DATABASE LINK TO MYACCOUNT;

创建DBLINK:

CREATE PUBLIC DATABASE LINK DBLINKNAME CONNECT TO USERNAME IDENTIFIED BY PASSWORD
   USING '(DESCRIPTION =
			(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = DATABASE_IP)(PORT = 1521)))
			(CONNECT_DATA = (SERVICE_NAME =SERVICENAME))
			)';

如果在CREATE之后不加PUBLIC,则创建的DBLINK就不是公共的,就只有创建者可以使用了.
如果创建全局 DBLINK,必须使用 SYSTM 或 SYS 用户,在 DATABASE 前加 PUBLIC。

ORACLE创建DBLINK报错:ORA-01017、ORA-02063解决:
根据ORA-01017的提示是连接到另一方的用户密码错误,当9I或10G的版本的ORACLE数据库连接11G的版本时,
会自动将密码转化为大写,密码最好用双引号引起来,否则可能在连接的时候报错

补充:如何确定数据库的SERVICENAME:
1.在SQLPLUS中使用

  SHOW PARAMETER[S] SERVICE_NAMES;

注意PARAMETER和PARAMETERS都可以
2.使用

SELECT NAME,VALUE FROM V$PARAMETER WHERE NAME='SERVICE_NAMES'

3.使用DB LINK

例如,在本机数据库上创建了一个SCOTT_RMTHOST的PUBLICDBLINK(使用远程主机的SCOTT用户连接),
则用SQLPLUS连接到本机数据库,执行SELECT * FROMSCOTT.EMP@SCOTT_RMTHOT即可以将远程数据库上
的SCOTT用户下的EMP表中的数据获取到.也可以在本地建一个同义词来指向SCOTT.EMP@SCOTT_RMTHOST,这样取值就方便多了.

-- 最简单的用法
SELECT * FROM TABLE_NAME@DATABASE_LINK;
-- 不想让别人知道DATABASE LINK名字的时候,可以使用同义词包装一下
CREATE SYNONYM TABLE_NAME FOR TABLE_NAME@DATABASE_LINK;
SELECT * FROM TABLE_NAME;
-- 也可以建立一个视图来封装
CREATE VIEW TABLE_NAME_V AS SELECT * FROM TABLE_NAME@DATABASE_LINK;

4.删除
注意:用户有CREATEPUBLIC DATABASE LINK 或者CREATE DATABASE LINK 权限.

-- 删除PUBLIC类型的DBLINK
DROP PUBLIC DATABASE LINK DBLINK_NAME;
-- 删除PRIVATE类型的DBLINK,只有创建者自己能删
DROP DATABASE LINK DBLINK_NAME; 
原文地址:https://www.cnblogs.com/lllini/p/11955186.html