`
LJ你是唯一LT
  • 浏览: 243438 次
社区版块
存档分类
最新评论

oracle database link

阅读更多
目前我的数据库里只有tinadb一个实例,要创建db link 需要再创建一个库,
因为主机资源有限,我就在本地创建了。db link也同样适用于连接远程数据库,只需要对应ip即可

1.dbca新建库sab

先打开xmanager passive

[oracle@oratest ~]$ cd /u01/oracle/bin/
[oracle@oratest bin]$ export DISPLAY=192.168.10.235:0.0  --启动图形化界面
[oracle@oratest bin]$ dbca

配置监听
[oracle@oratest rdbms]$ cd /u01/oracle/network/admin/
[oracle@oratest admin]$ vi listener.ora
tinadb =
   (DESCRIPTION_LIST =
       (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.12.253)(PORT = 1521))
        )
   )
SID_LIST_tinadb =
    (SID_LIST =
       (SID_DESC =
          (GLOBAL_DBNAME= tinadb)
          (SID_NAME = tinadb)
          (ORACLE_HOME = /u01/oracle)
        )
     )
sab =
   (DESCRIPTION_LIST =
       (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.12.253)(PORT = 1522)) --端口不能重复
        )
   )
SID_LIST_sab =
    (SID_LIST =
       (SID_DESC =
          (GLOBAL_DBNAME= sab)
          (SID_NAME = sab)
          (ORACLE_HOME = /u01/oracle)
        )
     )

启动监听lsnrctl start sab

2.database link作用
  database link,它是为了更方便的在一个数据库中访问另一个数据库(包括本地和远程的,道理是一样的)而创建的一个连接字符串。

3.授权用户创建db link

1)如果是用sys用户或者拥有dba角色的用户,就不需要授权
SQL>  select ROLE,PRIVILEGE,ADMIN_OPTION from role_sys_privs where role='DBA' and PRIVILEGE like '%LINK%';
ROLE        PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
DBA        DROP PUBLIC DATABASE LINK YES
DBA        CREATE DATABASE LINK YES
DBA        CREATE PUBLIC DATABASE LINK YES

2)普通用户:grant create public database link,create database link to username; 

4.创建db link

1)我们先在sab库中创建一个db link 连接到tinadb库

create public database link "lk_sab_tinadb" connect to "tina" identified by "tina"
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.12.253)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME =tinadb)))';

   验证db link的连通性:
   select 'x' from dual@lk_sab_tinadb;

2)查看db link
SQL> select owner,object_name from dba_objects where object_type='DATABASE LINK';
OWNER    OBJECT_NAME
----     -------------------
PUBLIC   LK_SAB_TINADB

或者
select * from dba_db_links;

3)使用db link
SQL> select * from tina.t1@lk_sara_tinadb;
ID
----------
1
2

SQL> create table ts as select * from tina.t1@lk_sab_tinadb;
SQL> select * from ts;
ID
----------
1
2

4)我们也可以建立一个私有的db link,这次我们在tinadb中创建一个,连接到sab库中(用户suser是sab库中用户,表s1是sab中suser的表)
[oracle@oratest admin]$ sqlplus sys/tina@tinadb as sysdba
SQL> conn tina/tina@tinadb
Connected.
SQL> create database link "lk_tinadb_sab" connect to "suser" identified by "suser"
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.12.253)(PORT = 1522)))(CONNECT_DATA =(SERVICE_NAME =sab)))';

Database link created.

SQL> select owner,object_name from dba_objects where object_type='DATABASE LINK';
OWNER       OBJECT_NAME
-------     -----------------------
TINA        LK_TINADB_SAB

SQL> select * from suser.s1@LK_TINADB_SAB;

ID NAME
---------- ----------
1 test
2 haha
3 heihei

SQL> insert into suser.s1@lk_tinadb_sab values(4,'youyou');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from suser.s1;  ---sab库中就直接被修改了。

ID NAME
---------- ----------
4 youyou
1 test
2 haha
3 heihei


5.删除db link
drop public database link dblinkname;

6.获取已创建db link的执行语句
SQL> select dbms_metadata.get_ddl('DB_LINK','LK_SAB_TINADB','PUBLIC') from DUAL; 
SQL> select dbms_metadata.get_ddl('DB_LINK','LK_TINADB_SAB','TINA') from dual;

DBMS_METADATA.GET_DDL('DB_LINK','LK_TINADB_SAB','TINA')   ----三个字段分别表示object_type,linkname,link owner
--------------------------------------------------------------------------------

  CREATE DATABASE LINK "LK_TINADB_SAB"
  CONNECT TO "suser" IDENTIFIED BY VALU   ---被截断了

7.授权其他用户使用tina用户的私有db link

私有的DB Link,其它用户是不能用的,Oracle没有关于dblink的select或者execute权限。
必须转换才能实现, 如下例子:

SQL> conn tina/tina@tinadb
Connected.
SQL> create view tina.s1 as select * from suser.s1@lk_tinadb_sab; ---创建一个视图
View created.
SQL> grant select on tina.s1 to test1; --授权视图的select权限给test1
Grant succeeded.
SQL> conn test1/test1
Connected.
SQL> select * from tina.s1;
ID NAME
---------- ----------
4 youyou
1 test
2 haha
3 heihei

0
1
分享到:
评论

相关推荐

    Oracle DATABASE LINK(DBLINK)创建与删除方法

    Oracle DATABASE LINK,简称DBLINK,是一种在不同的Oracle数据库实例间建立连接的方式,允许用户在本地数据库上执行查询和操作远程数据库的数据。DBLINK为跨数据库的通信提供了简单且高效的解决方案。 创建DBLINK的...

    Database Link经典详解

    综上所述,Oracle数据库链接(Database Link)是一种用于实现分布式事务处理的重要机制。通过创建合适的数据库链接,可以有效地管理和访问跨多个数据库实例的数据资源。理解其创建过程及不同类型之间的区别,对于构建...

    Oracle数据库如何创建DATABASE LINK

    ### Oracle数据库创建DATABASE LINK详解 #### 一、概述 在Oracle数据库中,通过创建DATABASE LINK(简称DB LINK),可以实现在不同的数据库之间进行数据共享与交互。这种技术使得用户能够像操作本地数据库一样操作...

    oracle中databaselink创建

    databaselink是oracle数据库连接另一个数据库(可以是非oracle数据库)用的连接

    oracle 存储过程 databaselink 收集

    ### Oracle存储过程与Database Link详解 #### 一、Oracle存储过程概述 在Oracle数据库中,存储过程是一种预先编译并存储在数据库中的SQL程序块,它可以接收输入参数、返回输出参数,并执行复杂的业务逻辑。存储...

    Oracle创建Database link方法

    Oracle 创建 Database link 方法 Oracle 创建 Database link 方法是指在 Oracle 中创建一个 Database link 的过程,这样可以实现跨库访问,即在一个数据库中可以访问另一个数据库中的数据。下面将详细介绍如何创建...

    Oracle创建Database Link的两种方式详解

    Oracle数据库的Database Link是连接不同数据库之间的一种机制,它允许用户在本地数据库上执行查询,同时访问远程数据库的数据,仿佛这些数据就在本地一样。Database Link是Oracle数据库提供的一种分布式数据库功能,...

    oracle create database link

    oracle create database link

    Delphi ADO连接Oracle数据库报数据类型不支持

    Delphi ADO连接Oracle数据库报数据类型不支持

    database link

    本文档是在开发oracle过程中总结出来的,希望对想了解oracle db link的人有帮助

    Oracle dblink详解

    在创建 Database Link 时,Oracle 会在数据字典中保存相关的 Database Link 信息。在使用 Database Link 时,Oracle 通过 Oracle Net 使用用户预先定义好的连接信息访问相应的远程数据库以完成相应的工作。 创建 ...

    Oracle Database 10g PL/SQL入门教程

    在Oracle Database 10g中,PL/SQL还可以与其他Oracle特性结合,比如触发器(Trigger)、包(Package)和数据库链接(Database Link)。触发器是在特定数据库事件发生时自动执行的PL/SQL代码,而包是封装相关过程和...

    Oracle数据库链Database links

    Oracle 数据库链 Database links Oracle 数据库链 Database links 是 Oracle 数据库中的一种机制,允许用户从一个数据库中访问另一个数据库中的数据。这种机制可以实现跨数据库或跨用户的数据共享,提高了数据的可...

    database_link是用来做什么的

    数据库链接(Database Link)在Oracle数据库中扮演着重要的角色,它允许用户在不同的数据库之间进行交互,无论是本地还是远程。数据库链接本质上是一个指向其他数据库的指针,它为用户提供了一个透明的方式来访问和...

    oracle oracle_dblink详解.

    3. 全局数据库链接(Global Database Link):Owner 是 PUBLIC.Global 的数据库链接是网络级的,When an Oracle network uses a directory server, the directory server automatically create and manages global ...

    oracle_database.rar_oracle

    我们将基于"oracle_database.rar_oracle"这个压缩包中的"oracle_database.txt"文件,来探讨相关知识点。 首先,我们要理解数据库同步的基本概念。数据库同步是指将数据从一个源数据库更新到另一个目标数据库的过程...

    oracle link

    标题“Oracle Link”指的是Oracle数据库中的数据库链接(Database Link)特性,它允许用户在不同的Oracle数据库之间建立连接,实现跨数据库的数据查询、更新和其他操作。这个特性是Oracle数据库的分布式处理能力的...

    oracle dblink详解.pdf

    Database Link 是 Oracle 数据库中用于连接两个数据库的关键对象,它可以实现从一个数据库到另一个数据库的数据查询与操作。通过 Database Link,用户能够轻松地访问远程数据库中的数据,并执行相关的远程程序。 ##...

Global site tag (gtag.js) - Google Analytics