`

ORACLE DBLINK 应用

阅读更多
ORACLE DBLINK 应用
create database link xbzw_link
      connect to xbzw identified by xbzw
      using '(DESCRIPTION =
       (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST =10.1.10.8)(PORT =1521))
       )
       (CONNECT_DATA =
        (SERVICE_NAME = orcl)
       )
      )';

红色部分为应该自己替换掉的部分

访问的时候 如 SELECT * FROMTABLE@XBZW_LIKE;

一下是一篇写的不叫不错的参考文档,附这里:

1、用dblink链接oracle

(1)与平台无关的写法:

create public database
link cdt connect to apps
identified by apps using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.31.205.100)(PORT = 1541))
)
(CONNECT_DATA =
(SERVICE_NAME = CDT)
)
)'

(2)可以将单引号内的内容用一个服务名代替。而将其内容写在tnsname.ora中,这种写法有时不成功。
2、参考如下内容

俩台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,这个时候可以使用dblink。
其实dblink和数据库中的view差不多,建dblink的时候需要知道待读取数据库的ip地址,ssid以及数据库用户名和密码。
创建可以采用两种方式:
1、已经配置本地服务
create public database
link fwq12 connect to fzept
identified by neu using 'fjept'
CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;
2、未配置本地服务
create database link linkfwq
connect to fzept identified by neu
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = fjept)
)
)';

host=数据库的ip地址,service_name=数据库的ssid。
其实两种方法配置dblink是差不多的,我个人感觉还是第二种方法比较好,这样不受本地服务的影响。

数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.

数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样

数据库全局名称可以用以下命令查出
SELECT * FROM GLOBAL_NAME;

查询远端数据库里的表
SELECT …… FROM 表名@数据库链接名;
查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。


附带说下同义词创建:

CREATE SYNONYM同义词名FOR 表名;
CREATE SYNONYM同义词名FOR 表名@数据库链接名;

删除dblink:DROP PUBLIC DATABASE LINK linkfwq。

如果创建全局dblink,必须使用systm或sys用户,在database前加public。

3、用dblink链接sqlserver;



参考1:

通过dblink访问sqlserver数据库

通用网关
Oracle异构服务是包含在Oracle数据库中的一个模块,通过使用透明网关(Transparent Gateway)或通用连接(Generic Connectivity)来访问其它非Oracle系统的数据。
异构服务的主要结构如下:
各模块简要说明如下:
异构服务模块:属于Oracle数据库的内核部分,负责大部分异构连接的处理;
代理通用代码:对所有基于异构服务产品的通用代码;
驱动:是与非Oracle系统直接交互的模块,实现从异构服务API到特定非Oracle系统API的映射。
代理:是Oracle Server连接非Oracle系统的进程,包括两部分即代理通用代码和针对特定非Oracle系统的驱动。代理的位置可以与非Oracle系统在同一台机器上,或与Oracle Server在同一台机器上,或者单独在一台机器上。我这次实践的环境采用的是最后一种。

透明网关和通用连接实际是异构服务中代理的两种类型。其中透明网关是功能较强的,它通过代理进程从Oracle Server访问各地的异构分布式数据库,而提供给用户的感觉是这些数据库仍然是Oracle数据库,Oracle公司提供对大多数商业数据库的透明网关。通用连接则有较多限制,它使用用户自己提供的ODBC或OLE DB驱动程序作为异构服务的代理驱动,并且要求这些驱动必须要安装在Oracle Server的$ORACLE_HOME目录下。

配置过程:
从SQLDB开始:
1. 在SQLDB上创建将要从Oracle数据库访问SQL Server的用户testuser/testuser,并授予可访问CDR的权限;
接下来是GATEWAY:
1.安装好Oracle 9.0.1 Database for Windows后,会发现在%ORACLE_HOME%下有目录tg4msql,以及网关程序$ORACLE_HOME\BIN\tg4msql;
2. 确保在c:\winnt\system32下有ntwdblib.dll,若没有则安装SQL Server2000(安装类型选择“仅连接”)。此文件是访问SQL Server的DB-Library;
3. ping SQLDB看是否通,若不通则在\winnt\system32\drivers\etc\hosts文件中增加一行,用来解析SQLDB的IP地址,很简单不多说了。
4. 修改%ORACLE_HOME%\tg4msql\inittg4msql.ora,这是网关进程启动时需要的初始化文件。只需改下面这一行即可:
HS_FDS_CONNECT_INFO=SQLDB.CDR
5.修改%ORACLE_HOME%\network\admin\listener.ora如下:
LISTENER =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=tg4msql)
(ORACLE_HOME=e:\Oracle\OraHome_9I) #用你的%ORACLE_HOME%
(PROGRAM=tg4msql)
)
)
最后是ORADB:
1.修改tnsnames.ora
CDR = #CDR是我起的,你可以选用其它
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)
(HOST= GATEWAY)
(PORT = 1521)
)
(CONNECT_DATA =
(SID = tg4msql) #tg4msql必须要和GATEWAY上listener.ora中的SID一致
)
(HS = OK) #这很重要,告诉Oracle Server要调用异构服务模块来处理
)
2.修改initora9i.ora(数据库初始化文件)
global_names=true,重启数据库。
否则会在执行sql时报错:ORA-02085: 数据库链接CDR与HO.WORLD相连结
原因如下:The GLOBAL_NAMES parameter when set to TRUE implies that database link name should be similar to the Global database name to which you are trying to connect.
3.创建访问SQLDB.CDR的数据库链接
SQL>create public database link cdr connect to testuser identified by testuser using ‘CDR’;
4. OK!最后执行SQL测试看是否能正常访问SQL Server
SQL>select count(*) from all_tables@cdr;

参考2

连接SQLSERVER的WABAO2数据库 帐号sa 密码sa

1。检查ORACLE的透明网关(Oracle Transparent Gateway)是否安装,如果安装了在HOME目录下有个tg4msql文件夹存在。如果没有,就运行安装文件自定义安装

2。在HOME\tg4msql\admin下新写initwabao2.ora #注意这个文件名字 第3步的 SID_NAME 值是这个文件名去掉init
HS_FDS_CONNECT_INFO="SERVER=zhanghuajie;DATABASE=wabao2" #设置SQLSERVER的地址 要访问的数据库名称
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER

3。HOME\network\admin 下listener.ora部分内容如下:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle)
(PROGRAM = extproc)
)
(SID_DESC = #添加了这一段
(SID_NAME = wabao2) #注意这个地方,在第4步要用
(ORACLE_HOME = D:\oracle)
(PROGRAM = tg4msql) #固定
) #结束
(SID_DESC =
(GLOBAL_DBNAME = zhj)
(ORACLE_HOME = D:\oracle)
(SID_NAME = zhj)
)
)
重启动这台做gateway的TNSListener服务.

4。tnsnames.ora, 添加下面的内容:
wabao2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = zhanghuajie)(PORT = 1521))
)
(CONNECT_DATA =
(SID = wabao2) #第3步的SID_NAME
)
(HS = ok) #固定值
)

5。 tnsping wabao2
出现类似如下表示正确:
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = zhanghuajie)(PORT = 1521))) (CONNECT_DATA = (SID = wabao2)) (HS = ok))
OK(20毫秒)

6。设置数据库参数global_names=false。
设置global_names=false不要求建立的数据库链接和目的数据库的全局名称一致。
global_names=true则要求, 多少有些不方便。
oracle9i和oracle8i都可以在DBA用户下用SQL命令改变global_names参数
alter system set global_names=false;

7。建立公有的数据库链接:
create public database link wabao2 connect to sa identified by sa using 'wabao2';

8。测试
select * from test@wabao2;
select "ID" from test@wabao2; #注意双引号 和大小写



==================================

两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,这个时候可以使用dblink。
      其实dblink和数据库中的view差不多,建dblink的时候需要知道待读取数据库的ip地址,ssid以及数据库用户名和密码。
        创建可以采用两种方式:
         1、已经配置本地服务
         createpublicdatabase
link fwq12 connecttofzept
identifiedbyneu using'fjept'        CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;
      2、未配置本地服务
createdatabaselink linkfwq
   connecttofzept identifiedbyneu
   using'(DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521))
     )
     (CONNECT_DATA =
       (SERVICE_NAME = fjept)
     )
   )';
host=数据库的ip地址,service_name=数据库的ssid。
        其实两种方法配置dblink是差不多的,我个人感觉还是第二种方法比较好,这样不受本地服务的影响。

        数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.

        数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样

        数据库全局名称可以用以下命令查出
        SELECT * FROM GLOBAL_NAME;

        查询远端数据库里的表
        SELECT …… FROM 表名@数据库链接名;
        查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。


         附带说下同义词创建:

       CREATE SYNONYM同义词名FOR 表名;
      CREATE SYNONYM同义词名FOR 表名@数据库链接名;

      删除dblink:DROP   PUBLIC   DATABASE   LINK linkfwq。

       如果创建全局dblink,必须使用systm或sys用户,在database前加public。

分享到:
评论

相关推荐

    oracle dblink 的应用

    Oracle dblink 是 Oracle 数据库中用于连接不同数据库实例的工具,允许用户在多个数据库之间进行数据查询、更新和传输。它的主要应用场景是在分布式环境中,当需要从一个数据库访问另一个远程数据库的数据时。以下是...

    oracle dblink 创建过程

    ### Oracle DBLink创建过程及快照同步方法 #### 一、Oracle DBLink概念与创建步骤 DBLink(Database Link)是Oracle提供的一种机制,用于在不同的Oracle数据库实例之间建立连接,实现跨数据库查询、更新等功能。它...

    Oracle DBLink建立连接

    通过以上内容的学习,我们可以了解到Oracle DBLink是一种非常实用的功能,它不仅能够简化多数据库环境下的数据集成工作,还能有效提升数据管理和应用开发的灵活性。同时,在实际应用中需要注意权限管理和安全性问题...

    oracle dblink的建立说明

    在实际应用中,为了保证安全性,应定期更新DBLink的凭证信息,避免使用明文密码,并且根据权限控制原则,仅授权必要的用户使用DBLink。此外,考虑到网络延迟和性能问题,不建议频繁通过DBLink进行大量数据的传输。 ...

    oracle DBLink

    在实际应用中,Oracle DBLink常用于数据迁移、报表整合、分布式事务处理等场景。例如,当需要将Oracle数据库的数据同步到MSSQL Server时,DBLink可以作为一种解决方案,但需要注意的是,由于Oracle和MSSQL Server的...

    oracle 存储过程 函数 dblink

    ### Oracle存储过程、函数与DBLink详解 #### 一、Oracle存储过程简介 在Oracle数据库中,存储过程是一种预编译好的SQL代码集合,它可以接受输入参数、返回单个值或多个值,并能够执行复杂的数据库操作。存储过程...

    Oracle使用dblink导用户下的所有表数据(以迁移scott用户为例)

    Oracle数据库是一种广泛应用于企业级数据存储和管理的系统,它提供了强大的数据迁移工具,其中之一就是DB Link(数据库链接)。在本教程中,我们将探讨如何利用DB Link来迁移Oracle数据库中的用户下所有表的数据,以...

    MySQL federated引擎 实现类似oracle dblink功能

    MySQL联邦(Federated)引擎是一种特殊的存储引擎,它的设计目标是允许MySQL数据库跨越不同的服务器进行数据集成,类似于Oracle数据库中的DBLINK功能。这个引擎使得用户可以在本地数据库中查询和操作远程MySQL服务器...

    oracle通过odbc建立dblink访问sqlserver数据库

    ### Oracle通过ODBC建立DBLink访问SQLServer数据库 在企业级应用环境中,不同数据库系统间的交互变得越来越频繁。为了实现Oracle数据库与SQLServer数据库之间的数据交换,可以通过多种方式实现连接,其中一种较为...

    oracle建立dblink步骤

    ### Oracle建立DBLink步骤详解 #### 一、背景与需求分析 在企业级应用中,经常需要跨地域或跨部门进行数据共享与交互。本文档详细介绍了一种在Oracle环境下实现跨数据库连接的方法——DBLink(数据库链接)。通过...

    oracle 使用dblink方式 连接远程数据库,内有详细描述,亲测可以

    ### Oracle使用DBLink连接远程数据库详解 #### 一、DBLink简介 在Oracle数据库中,DBLink(Database Link)是一种非常实用的功能,它允许用户在一个数据库(本地数据库)中访问另一个数据库(远程数据库)的数据。...

    DBlink的应用 DBlink的应用

    ### DBlink的应用 #### 一、DBlink简介与配置 DBLink是Oracle数据库中的一个非常重要的特性,主要用于在两个或...通过本文的介绍,希望能帮助读者更好地理解和应用Oracle DBLink技术,提升数据库管理的效率和灵活性。

    在oracle下创建dblink

    ### 在Oracle下创建DBLink知识点详解 #### 一、DBLink简介 在Oracle数据库系统中,DBLink(数据库链接)是一种强大的工具,它允许用户在一个数据库(源数据库)上执行SQL查询来访问另一个数据库(目标数据库)中的...

    怎样DBLink_Oracle到MySql

    ### 如何实现Oracle到MySQL的数据连接(DBLink) 在企业级应用中,常常会遇到不同数据库之间进行数据交互的需求。本文将详细介绍如何建立从Oracle数据库到MySQL数据库的连接(DBLink),并探讨这一过程中的关键步骤...

    oracle使用dblink的例子

    需要注意的是,在实际应用中,应确保源数据库和目标数据库的DBLink配置正确无误,同时考虑性能因素,避免在生产环境中执行大规模的数据对比操作,以免影响系统性能。此外,还应注意保护敏感数据的安全性,确保只有...

    oracle_dblink.zip_oracle

    Oracle 数据链接(DBLink)是 Oracle 数据库提供的一种强大功能,允许用户在不同的 Oracle 数据库实例之间进行分布式查询和操作。这种技术使得数据整合、跨系统数据共享以及远程过程调用变得简单。以下是对 Oracle ...

    oracle dblink使用

    ### Oracle DBLink 使用详解 #### 一、Oracle DBLink 概述 在Oracle数据库系统中,DBLink(Database Link)是一种非常重要的特性,它允许一个数据库实例通过网络连接到另一个远程数据库实例,从而实现跨数据库的...

    Oracle恢复误删除数据

    Oracle 数据库是企业级的关系数据库管理系统,广泛应用于各种行业。然而,在实际操作中,误删除数据是一种常见的错误。因此,了解如何恢复误删除数据是非常重要的。本文将详细介绍 Oracle 恢复误删除数据的方法。 ...

    oracle 创建DBLink

    Oracle 创建 DBLink Oracle 中的 DBLink(Database Link)是一种机制,允许不同 Oracle 实例之间共享数据和资源。DBLink 可以让不同的数据库实例之间建立连接,从而实现数据集成和数据共享。本文将详细讲解如何使用...

    Oracle10g通过DBLink访问MySQL数据

    ### Oracle10g通过DBLink访问MySQL数据 在企业级应用环境中,经常会出现不同数据库系统之间的数据交互需求。本文将详细介绍如何配置Oracle10g数据库,使其能够通过DBLink访问MySQL数据库中的数据。这一功能对于实现...

Global site tag (gtag.js) - Google Analytics