`

Oracle 数据库做数据库链(Database links)的两个例子 .

阅读更多
例1:
“ 在本地数据库上建立基于远程服务器数据库表的视图”
 
环境:
 Orcal 9i
 PL/SQL
 windows XP
 
操作:
 1。 在本地机器上新建一个“本地网络服务名配置”
方法一:如果利用 network administration ----> net8 config.. asstion 来进行配置
方法二: 直接在orcal 安装目录下修改配置文件,
“C:/oracle/ora81/network/ADMIN”下的“tnsnames.ora” 里加
RENSIGONGZI =
 (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.168.111.139)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl1)
    )
 )
 
再用PL/SQL打开本地数据库
2。新建数据库链接,
选择“my objects ” ---> "database links " 右键。“新建”
 database link
       Owner : dbcenter (此用户名)
       Name : RENSIGONGZI (此数据库链接名)
 
 Connect TO
       Username : JJSAL (原数据库的用户名)
       Password : OK    (原数据库的登陆密码)
       Database : mtgs (原数据库的实例名)
 
再点“Apply ”, 再此,OK了。
 
3。测试
  新建一查询页面,输入
Select * From tab@rensigongzi
如果有结果,表明成功。(至此,过程数据库已经链接成功。)
 
4。新建视图:
 在“view” ---> "New..." -->
   Name         : V_E_sel_pay   (视图名称)
  Item list    : *               (表示全部字段)
   Table list   : t_mon_sal@rensigongzi       (原数据库的表@数据库链接名)
   Where clause :               (where 子句)
 
5。保存后,再查询测试。

 例2:

在oracle安装目录中的找到文件
D:/oracle/ora92/NETWORK/ADMIN/tnsnames.ora


在文件的下方加入

TMS236 =
  (DESCRIPTION 
=
    (ADDRESS_LIST 
=
      (ADDRESS 
= (PROTOCOL = TCP)(HOST = 192.168.103.236)(PORT = 1521))
    )
    (CONNECT_DATA 
=
      (SID 
= JSTRD236)
    )
  )



在PL/SQL Developer中,右键单击Database links-->[新建]

如图,填写完成,应用即可


执行如下语句看看

select * from dual@tms236

出现记录,表示已连接成功

对于第2步骤
CONNECT_DATA =
(SID = JSTRD236)
也可能是
CONNECT_DATA =
(SERVICE_NAME = JSTRD236)

根据要连接的数据库具体情况是SID,还是SERVICE_NAME

同样这步骤也不必直接在文件里操作
可在,Oracle下的Net manager里添加一个服务即可

 

 

----------------------详细资料

物理上存放于网络的多个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';

http://hi.baidu.com/mataoxf/blog/item/86e2be51db2a538e8d54306a.html

 

------------------修改默认参数

SQL> SHOW PARAMETER GLOBAL_NAMES

global_names boolean

TRUE

 

select * from v$parameter where name = 'global_names';

 

SQL> ALTER SYSTEM SET GLOBAL_NAMES=FALSE;

 

或者修改D:\Oracle\admin\einfo\pfile\init.ora文件中global_names = false,重启数据库。

SQL> SELECT * FROM DUAL@MASTER.COM;

X

SQL> ALTER SYSTEM SET GLOBAL_NAMES=TRUE;

系统已更改。

SQL> SELECT * FROM DUAL@MASTER.COM;

SELECT * FROM DUAL@MASTER.COM

ERROR 位于第 1 行:

ORA-02085: 数据库链接MASTER.COM与ORA9I相连结

SQL> ALTER DATABASE RENAME GLOBAL_NAME TO MASTER.COM;

数据库已更改。

SQL> SELECT * FROM DUAL@MASTER.COM;

分享到:
评论

相关推荐

    Oracle数据库链Database links

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

    基于C#连接Oracle数据库Oracle.ManagedDataAccess

    本篇将详细讲解如何使用C#通过Oracle.ManagedDataAccess库实现与Oracle数据库的连接,无需在本地安装完整的Oracle数据库。 首先,Oracle.ManagedDataAccess是Oracle公司提供的一个纯.NET框架的客户端驱动,它允许...

    Oracle数据库课程设计医院系统数据库源代码.zip

    Oracle数据库课程设计医院系统数据库源代码。包含Java代码和SQL语句。源码中默认使用的数据库为运行的Oracle数据库 如需修改,在java源码/database.propertie中修改即可!Oracle数据库课程设计医院系统数据库源代码...

    java连接oracle数据库jar包ojdbc8

    Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection(url, username, password); System.out.println("Connected to the database!"); // ... 其他数据库操作 ...

    C# winform连接Oracle数据库(直接引用Oracle.ManagedDataAccess.dll使用)

    项目中有个功能需要从一台Oracle数据库获取数据,本以为是很简单的事情,直接将原来的SqlClient换成OracleClient调用,结果远没自己想的简单。有很多需要安装Oracle客户端,网上这方面搜索后,太多的文章,还要不停...

    Oracle.Database.9i.10g.11g.编程艺术深入数据库体系结构.zip

    Oracle.Database.9i.10g.11g.编程艺术深入数据库体系结构.zip Oracle.Database.9i.10g.11g.编程艺术深入数据库体系结构.zip Oracle.Database.9i.10g.11g.编程艺术深入数据库体系结构.zip

    Oracle数据库如何创建DATABASE LINK

    它支持两个或多个Oracle数据库之间的透明数据访问,从而简化了多数据库环境下的数据管理和应用程序开发。 - **特点**: - 透明性:对于应用程序和用户来说,数据库链接的存在是透明的。 - 易用性:一旦建立了...

    通过ORACLE通用连接访问SQLServer数据库的方法

    完成上述配置后,下一步是在Oracle数据库中创建数据库链接(DATABASE LINK),以实现从Oracle数据库直接访问SQL Server数据库的功能。 1. **创建公共数据库链接**:使用以下SQL命令创建公共数据库链接ET2000: ```...

    oracle v-11.2.0.4.0 Oracle 11.2.0.4 For Windows 64bit+32bit 数据库

    Oracle 11g Release 2 (11.2.0.4) 是Oracle数据库的一个重要版本,特别适合Windows 64位和32位操作系统。这个版本提供了多种组件和服务,以满足不同用户的需求,包括数据库服务器、Grid Infrastructure、客户端、...

    Oracle Database 11.2.0.4 服务端和客户端

    8. 软件资源获取:尽管文档中提到的两个下载链接(百度云和夸克)目前已经无法访问,但用户仍然可以通过Oracle官方网站或其他合法的软件分发渠道来获取Oracle Database **.*.*.*的软件包。 总结来说,Oracle ...

    Oracle数据库基础.Oracle Database Foundations

    Oracle数据库基础.Oracle Database Foundations 这个是英文版的CHM

    查看登录oracle数据库用户记录.docx

    Oracle 数据库是一个强大的关系型数据库管理系统,提供了强大的数据存储和管理功能。为了管理和监控数据库的访问情况,需要对登录 Oracle 数据库的用户记录进行跟踪和查看。本文将介绍如何查看登录 Oracle 数据库的...

    oracle数据库和mysql数据库的链接信息

    Oracle数据库连接通常会用到`oracle.jdbc.driver.OracleDriver`这个类作为驱动程序。这是一个Java Database Connectivity (JDBC)驱动程序,它允许Java应用程序通过标准JDBC API来访问Oracle数据库。在使用Oracle...

    字符集不同的Oracle数据库间交换数据的解决方法.pdf

    https://docs.oracle.com/en/database/oracle/oracle-database/19/nlspg/. [3] Oracle Corporation. Oracle SQL*Loader. [EB/OL]. https://docs.oracle.com/en/database/oracle/oracle-database/19/sqpug/. 本文...

    VS2008 C#连oracle数据库免客户端文件

    8. oracle.key:这个文件看起来不像是标准的Oracle组件,可能是许可证密钥或者加密过的配置信息,用于认证或激活特定的Oracle服务。 综上所述,这个压缩包提供了一套用于VS2008 C#应用程序无客户端连接Oracle数据库...

    Oracle数据库课程大作业.pdf

    3. Oracle数据库实例的启动过程通常包括三个步骤:startup nomount(启动实例但不加载数据库)、alter database mount(挂载数据库但不打开)、alter database open(打开数据库,使其可供使用)。例如: - startup...

    VS2008连接oracle数据库代码

    在这个例子中,我们创建了一个OracleConnection对象,并通过`Open()`方法打开连接。然后,我们创建一个OracleCommand对象来执行SQL查询,并使用`ExecuteReader()`来获取结果集。在读取数据时,可以使用`Read()`方法...

    Oracle-新建Oracle数据库并连接(图文,详细).docx

    新建Oracle数据库需要使用Database Configuration Assistant工具,该工具可以帮助我们快速创建一个新的Oracle数据库。下面是创建数据库的步骤: 1. 按键盘上的Windows键,找到 Database Configuration Assistant,...

    甲骨文数据库.11g.Release.1.].A.Brief.Look.at.Oracle.Database.11g.ppt

    甲骨文数据库.11g.Release.1.].A.Brief.Look.at.Oracle.Database.11g.ppt

Global site tag (gtag.js) - Google Analytics