`
youngliu_liu
  • 浏览: 8111 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Oracle Database link 使用,链接两个不同服务器数据库

 
阅读更多
物理上存放于网络的多个ORACLE数据库,逻辑上可以看成一个单一的大型数据库,用户可以通过网络对异地数据库中的数据进行存取,而服务器之间的协同处理对于工作站用户及应用程序而言是完全透明的,开发人员无需关心网络的链接细节、数据在网络节点中的具体分布情况和服务器间的协调工作过程。

数据库之间的链接建立在DATABASE LINK上。要创建一个DATABASE LINK,必须首先在建立链接的数据库上设置链接字符串,即配置一个远程数据库的本地网络服务名。

链接字符串的配置参见《客户端连接服务器》一节。

数据库全局名称可以用以下命令查出:

SELECT * FROM GLOBAL_NAME;

修改可以用以下语句来修改参数值:

ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;

<1>、当数据库参数global_name=false时,就不要求数据库链接名称跟远端数据库名称一样。

oracle数据库之间进行连接通讯。
创建数据库链接的语法如下:
CREATE [PUBLIC] DATABASE LINK link

CONNECT TO username IDENTIFIED BY password

USING ‘connectstring’

其中:
--demona为用net8 easy config创建的连接字符串
目的方数据库的init.ora文件中的global_names设为false
重新启动数据库设置才能生效
或者用sys用户执行

注意:创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。

一个公用数据库链接对于数据库中的所有用户都是可用的,而一个私有链接仅对创建它的用户可用。由一个用户给另外一个用户授权私有数据库链接是不可能的,一个数据库链接要么是公用的,要么是私有的。

创建数据库链接时,还可以使用缺省登录方式,即不指定远程数据库的用户名和密码:

create public database link zrhs_link

using ‘zrhs’;

在不指定用户名和口令的情况下,ORACLE使用当前的用户名和口令登录到远程数据库。

USING后面指定的是链接字符串,也就是远程数据库的网络服务名,这个服务名保存在TNSNAMES.ORA文件中,在该文件中定义了协议、主机名、端口和数据库名。

删除数据库链接的语句是:

DROP [PUBLIC] DATABASE LINK zrhs_link

数据库链接的引用

一般情况下引用数据库链接,可以直接将其放到调用的表名或视图名称后面,中间使用一个 @ 作为分割符:

SELECT * FROM worker@zrhs_link;

对于经常使用的数据库链接,可以建立一个本地的同义词,方便使用:

CREATE SYNONYM worker_syn FOR worker@zrhs_link;

还可以建立一个本地的远程视图,方便使用:

CREATE VIEW worker AS SELECT * FROM worker@zrhs_link where… ;

现在本视图可与本地数据库中的任何其它视图一样对待,也可以授权给其它用户,访问此视图,但该用户必须有访问数据库链接的权限。

对于另外一种情况,所要访问的表不在数据库链接中指定的远程帐户下,但该帐户有访问该表的权限,那么我们在表名前要加上该表的用户名:

SELECT * FROM camel.worker@zrhs_link ;

<2>、当数据库参数global_name=true时,那就要求数据库链接名称跟远端数据库名称一样
数据库全局名称可以用以下命令查出

SELECT * FROM GLOBAL_NAME;

atabase link(dblink)--数据库链路
创建dblink的语法:
sql>create database link 数据库链路名
connect to 用户名 identified by 口令
using '主机字符串名';
如:
sql>create database link ora9i.us.oracle.com ### 这里的us.oracle.com为oracle默认域名 ###
connect to scott identified by tiger
using 'sun';

1)dblink名必须与远程数据库的全局数据库名(global_name)相同;
2)用户名,口令为远程数据库用户名,口令;
3)主机字符串为本机tnsnames.ora中定义的串;
4)两个同名的数据库间不得建立dblink;
然后,你就可以通过dblink访问远程数据库了。
如:
sql>select * from 表名@ora9i.us.oracle.com;
还可以建立快照(snapshot)通过dblink实现远程数据自动传输。

查看所有的数据库链接,进入系统管理员SQL>操作符下,运行命令:
SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';



CREATE DATABASE LINK dblinkname CONNECT TO username IDENTIFIED BY password
USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=*.*.*.*)(PORT=1521))(CONNECT_DATA=(SID=***)))';


drop database link aaaa;
-- Create database link
create database link aaaa
connect to NXPOS identified by bbbbb
using '(DESCRIPTION = (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.3.6)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';

1.有一定的安全性,不需要在tnsnames.ora里配置信息

2.对于ops/rac来说,比较方便管理,不需要在所有节点的tnsnames.ora里配置信息.



利用DB Link两步搞定Oracle两个数据库间的表同步

1,在目标机上建立Oracle DB Link:
A,在network/admin/tnsname.ora文件中加入源库的连接信息,如:

AAA=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.1.3)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = AAA)
)
)

B,在目标机上用sqlplus user/pwd登录。
C,用如下命令建立DB Link:

create public database link AAA_LINK connect to user identified by pwd using 'AAA';

命令说明:
CREATE PUBLIC DATABASE LINK 数据库链接名 CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;
如果建立成功,会提示:Database link created.
2,使用如下脚本,即可同步数据表:

#!/bin/sh
# to sync table A to BBB database from AAA database
sqlplus user/pwd@BBB <<EOF #这里是BBB上的数据库和密码还有实例名,请按照实际情况修改
truncate table A;
insert into A
select * from b_schema.A@AAA_LINK; #这里是指向要同步的来源表,表名必须是<表所有者>.<表名>@<dblink name>
commit;

PS:需要DB支持Advanced replication功能,是否支持,可用如下SQL查看:

select * from v$option where PARAMETER='Advanced replication';

如果是返回True就表示支持。
分享到:
评论

相关推荐

    Oracle-不同数据库DBLINK导数据使用说明

    其中,数据库链接(DBLINK)是Oracle提供的一种高级特性,用于实现不同Oracle数据库之间的数据交互,尤其适用于数据迁移、分布式事务处理以及跨数据库查询等场景。本文将围绕“Oracle-不同数据库DBLINK导数据使用...

    两个不同数据库中的表之间的操作(包含sql server /oracle)

    Oracle数据库中也有类似的技术——DBLINK,用于在两个Oracle数据库之间建立连接。 **创建DBLINK** 1. **已授权方式** - 如果用户已被授权,则可以使用以下命令: ```sql CREATE DATABASE LINK database_link_...

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

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

    DB Link oracle数据库数据交换

    通过以上步骤,我们可以实现两个Oracle数据库之间的数据交换与同步。DB Link 和 Synonym 的结合使用大大简化了跨数据库操作的过程,而触发器的应用则实现了数据的自动化同步,从而提高了系统的灵活性和可维护性。

    建立oracle 数据库的dblink

    Oracle数据库的DBLINK(数据库链接)是一种连接两个不同Oracle数据库实例的机制,允许用户在一个数据库中执行查询或操作另一个数据库的数据。在Oracle中,DBLINK是实现跨数据库交互的重要工具,尤其在分布式数据库...

    Oracle 9i10g 数据库管理详细

    - **Oracle 9i** 和 **Oracle 10g** 是Oracle公司推出的两个重要的数据库管理系统版本。这些版本在企业级数据库管理领域具有重要意义。 - **Oracle 9i** 主要侧重于提高可用性、性能和安全性,并引入了一些新的特性...

    在Oracle中实现数据库的复制

    ②、global_names = true (alter system set global_names=true),它要求数据库链接(database link)和被连接的数据库名称一致。 ③、有跟数据库 job 执行有关的参数(在 oracle\ora92\admin\sample\pfile 修改 ...

    实现 Oracle 连接 SQL Server

    这里需要配置两个重要的文件: - **init&lt;SID&gt;.ora**:这个文件包含了与 SQL Server 连接相关的参数设置。示例文件名为 `initpubs.ora`,其中包含如下内容: ``` # This is a sample agent init file that ...

    同步不同服务器数据库数据

    根据给定文件的信息,本文将详细解析如何在不同的...综上所述,通过以上四个步骤,可以在两个不同的服务器之间实现数据库数据的自动同步,确保了数据的一致性和实时性,为企业的数据管理和业务运营提供了强有力的支持。

    Oracle dblink详解

    全局数据库链接(Global database link)则更为广泛,它们在网络级别上可用,通过目录服务器自动管理和创建,使得网络中的任何数据库都可以通过全局链接访问远程数据库。 创建数据库链接需要特定的权限: - CREATE...

    Oracle数据库的同步复制案例

    完成以上步骤后,即可在两个数据库之间实现数据的同步复制。需要注意的是,在实际操作过程中可能还需要进一步配置复制策略、复制表及触发器等,具体配置会根据业务需求有所不同。此外,确保网络环境稳定可靠,以保障...

    oracle dblink 的应用

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

    oracle link

    在Oracle Link中,主要有两种类型:DB Link(数据库链接)和Public DB Link(公共数据库链接)。DB Link是用户级别的,只能由创建它的用户使用;而Public DB Link则是全局的,所有用户都可以访问。创建DB Link的基本...

    oracle dblink详解.pdf

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

    oracle数据库基础

    - `CONCAT`:用于连接两个字符串。 - `LENGTH`:返回字符串的长度。 - `UPPER`/`LOWER`/`INITCAP`:转换字符串的大小写。 示例: ```sql SELECT CONCAT(ENAME, ':'), SAL FROM emp_qinyuanlei; SELECT LENGTH(SAL) ...

    ORACLE透明网关访问mysql

    最后,所有配置完成后,可以通过Oracle数据库内部创建的数据库链接(database link)来测试是否能够成功访问MySQL数据库。创建和使用dblink的SQL命令如下: ``` CREATE DATABASE LINK testlink CONNECT TO myoracle...

    database links 和synonym的用法

    在某些情况下,例如当两个数据库服务器不在同一台物理机器上,或者在一个数据库服务器上运行着多个数据库实例时,Database Links就显得尤为重要。创建Database Links有两种主要方式: 1. **已配置本地服务**: ...

    SQLServer链接服务器访问Oracle[归纳].pdf

    总的来说,SQL Server通过链接服务器访问Oracle数据库提供了一种灵活的数据交互方式,但需要注意不同访问接口的特性以及潜在的问题。在实际应用中,应根据项目需求和性能要求来选择合适的接口,并进行充分的测试以...

    计算机等考三级数据库辅导:oracle与sqlserver相互操作.docx

    4. 创建数据库链接:在Oracle数据库中使用`CREATE DATABASE LINK`语句创建到SQL Server的链接,例如`CREATE PUBLIC DATABASE LINK DU CONNECT TO SA IDENTIFIED BY SA USING 'DU'`。 通过上述步骤,两个数据库之间...

    oracle新手入门指导之八—数据库远程访问小知识.txt

    IMP (Import) 和 EXP (Export) 是Oracle提供的两个非常实用的工具,用于数据的导入导出操作。它们可以帮助用户方便地在不同的Oracle数据库之间传输数据或备份现有数据。 - **IMP**: 主要用于将之前通过EXP命令导出...

Global site tag (gtag.js) - Google Analytics