二种方法创建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的分类
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 linkDROP PUBLIC database link link_name;
-- 删除非public类型的database link
-- 注意:只有owner自己能删除自己的非public类型database link
DROP database link link_name;