Oracle创建DBLINK

二种方法创建DBLINK

第一种,配置本地服务后创建DBLINK

配置本地服务:
首先检查是否在.bash_profile中配置了TNS_ADMIN变量。sqlplus使用这个变量查找tnsnames.ora文件查找服务。
<pre name="code" class="plain">ORACLE_BASE=/opt/oracle/app #修改和OFA路径一致
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
ORACLE_SID=h3c
export ROACLE_PID=orcl
export ORACLE_BASE ORACLE_HOME ORACLE_SID
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=AMERICAN_AMERICA.UTF8
export <span style="color:#ff6666;">TNS_ADMIN</span>=$ORACLE_HOME/network/admin/
 修改后source .bash_profile使之生效。 
 
找到TNS_ADMIN下的tnsnames.ora,新增一个服务:
jt1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.91.106)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = yourservicename)
    )
  )
完成之后退出并重新登录连接这个服务是否可用
sqlplus username/passwd@yourservicename
成功连接可进行下一步,如果不成功请检查:
1.目标服务器oracle是否启动
2.目标服务器监听器是否启动
3.根据报错信息查找解决方案
连接通过后执行:
SQL> create public database link jt1_link connect to root identified by passwd using 'jt1';

Database link created.
测试下是否可用:
SQL> select count(*) from atable@jt1_link;

第二种,直接连接目标服务器的服务

create database link jt1_link
  connect to root identified by passwd
  using '(DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.91.106)(PORT = 1521))
  )
  (CONNECT_DATA =
(SERVICE_NAME = yourservicename)
)
)'

DBLINK的分类

 
  
dblink的类型及拥有者
private 创建者 当前Scheme可用,创建者可删除
public PUBLIC 当前database可用,所有连接到当前database都可以
global PUBLIC 跨database可用

dblink创建所需权限

Privilege Database Required For
CREATE DATABASE LINK Local Creation of a privase database link.
CREATE PUBLIC DATABASE LINK Local Creation of a public database link.
CREATE SESSION Remote
Creation of any type of
database link.

database link的使用 

用法

SELECT * FROM table_name@database link;  
不想让使用的人知道database link的名字的时候
建一个别名包装一下
 
CREATE SYNONYM table_name FOR table_name@database link;
SELECT * FROM table_name;
 

database link删除

-- 删除public类型的database link
DROP PUBLIC database link link_name;  
-- 删除非public类型的database link
-- 注意:只有owner自己能删除自己的非public类型database link
DROP database link link_name;

查看所有database link 

SELECT * FROM DBA_DB_LINKS;

参考资料

http://blog.sina.com.cn/s/blog_6ceed328010101sr.html


你可能感兴趣的:(oracle,DBlink)