Oracle 使用 DBLINK详解

DBLINK详解

1.创建dblink语法:

CREATE [PUBLIC] DATABASE LINK link

CONNECT TO username IDENTIFIED BY password

USING ‘connectstring’

说明:

1) 权限:创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。一个公用数据库链接对于数据库中的所有用户都是可用的,而一个私有链接仅对创建它的用户可用。由一个用户给另外一个用户授权私 有数据库链接是不可能的,一个数据库链接要么是公用的,要么是私有的。

2)link :  当GLOBAL_NAME=TRUE时,link名必须与远程数据库的全局数据库名global_name)相同;否则,可以任意命名。

3)connectstring:连接字符串,tnsnames.ora中定义远程数据库的连接串。

4)username、password:远程数据库的用户名,口令。如果不指定,则使用当前的用户名和口令登录到远程数据库。

2.删除数据库链接的语句:

DROP [PUBLIC] DATABASE LINK zrhs_link

3.查看已创建的dblink

select owner,object_name from dba_objects where object_type=‘DATABASE LINK‘;

4.dblink的引用:

[user.]table|view
@dblink

如:

SELECT * FROM [email protected]_link;

SELECT * FROM [email protected]_link ;

5.创建同义词:

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

CREATE SYNONYM worker_syn FOR [email protected]_link;

6.创建远程视图:

CREATE VIEW worker AS SELECT * FROM [email protected]_link where…;

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

其他:

修改GLOBAL_NAME的方法:

1.在远程数据库的init.ora文件中将global_names设为false。

或者

2.用sys用户执行如下语句:ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;

修改后重新启动数据库设置才能生效。

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

===== dblink 实战 ======

1.dblink分为公有和私有两类。

公有dblink使用public修饰关键字。在create和drop的时候都需要使用public关键字。

公有dblink对所有人开放,在该dblink之上创建的同义词也会随之对所有人开放。(测试并确认,不过测试是在一个实例多个用户之间进行)

私有dblink只有创建者可以访问,其上的同义词不能被其他用户访问。需为用户创建视图,并将视图授权给所需用户后,用户才可访问该视图。

另外,不能将带有dblink的同义词直接授权给用户。否则报错,其等价于:

grant select on [email protected] to user2                           *

ERROR at line 1:

ORA-02021: DDL operations are not allowed on a remote database

2.创建dblink时,可以使用连接字符串(与tnsname.ora中的),效率较高。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,这个时候可以使用 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。

oracle dblink解决后台却出现锁

创建是很简单,但是在使用中后台却出现锁,查看这个锁的方法可以去console中看到或者查询数据库。其实这个锁倒

不是最让人心烦的,而是每次使用 dblink查询的时候,均会与远程数据库创建一个连接,dblink应该不会自动释放这个连接

,如果是大量使用dblink查询,会造成web 项目的连接数不够,导致系统无法正常运行。

例子:

create database link hr_tables

connect to manbu

identified by "admin"

using ‘WALK‘

其中hr_tables是远程数据库的一个别名

manbu是远程数据库的数据库用户名

admin为manbu的密码

WALK为数据库在本地数据库的SID (具体说是本地数据库服务器的服务名。需要在本地服务器tnsname.ora上建立一个服务。而不是在客户端建。)

接着,我们可以做一下测试,比如我们想拿到数据库的某一张表数据,那我们可以在命名行下做如下的测试:

select user_name from [email protected]_tables;

每一张表都必须加上@hr_tables字符串,表示该表是dblink所指向的远程数据库的表单

或者,你会觉得这样子很麻烦,那我们可以为[email protected]_tables配置一个别名,那就没有改须麻烦啦。

创建[email protected]_tables的同义词,也即别名:

create synonym mall_user for [email protected]_tables;

时间: 2024-12-26 07:43:22

Oracle 使用 DBLINK详解的相关文章

(转)Oracle 使用 DBLINK详解

DBLINK详解 1.创建dblink语法: CREATE [PUBLIC] DATABASE LINK link CONNECT TO username IDENTIFIED BY password USING ‘connectstring’ 说明: 1) 权限:创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限.这两种权限都包含在CONNECT角

Oracle 11g数据库详解(2015-1-18更新)

Oracle 11g数据库详解 整理者:高压锅 QQ:280604597 Email:[email protected] 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的 1   简介 数据库操作主要有以下几步: 1.  启动.停止数据库 2.  连接.断开数据库 3.  创建.修改.删除数据库用户 4.  表空间 5.  新建.修改.删除表 6.  查询.插入.修改.删除表数据 7.  新建.修改.删除视图 8.  新建.修改.删除存储过程 9.  新建.修改.删除触发

Oracle 11g数据库详解(2015-02-28更新)

Oracle 11g数据库详解 整理者:高压锅 QQ:280604597 Email:[email protected] 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的 1   简介 数据库操作主要有以下几步: 1.  启动.停止数据库 2.  连接.断开数据库 3.  创建.修改.删除数据库用户 4.  表空间 5.  新建.修改.删除表 6.  查询.插入.修改.删除表数据 7.  新建.修改.删除视图 8.  新建.修改.删除存储过程 9.  新建.修改.删除触发

Oracle数据库备份详解

Oracle数据库备份详解 Oracle官方提供多种备份方式,日常使用最多的有exp/imp常规方式,及数据泵expdp/impdp方式:下面对这两种方式进行详解. 常规方式 exp/imp imp/exp是Oracle导入导出命令,可以用作数据的迁移,expdp/imdp也是Oracle数据导入导出的命令,效率比imp/exp效率要高,这个后面再讨论 一  EXP导出命令 exp 是数据的导出命令,可以用于表,用户,整个数据库,exp -help查看帮助 Export: Release 11.

Oracle cursor_sharing 参数 详解

一. 官网的说明 http://download.oracle.com/docs/cd/E11882_01/server.112/e17110/initparams042.htm#REFRN10025 1.1 CURSOR_SHARING Property Description Parameter type String Syntax CURSOR_SHARING = { SIMILAR | EXACT | FORCE } Default value EXACT Modifiable ALTE

ORACLE用户PROFILE详解

ORACLE用户PROFILE详解   一.官网说明 Oraclerecommends that you use the Database Resource Manager rather than the SQLstatement to establish resource limits. The Database Resource Manager offers amore flexible means of managing and tracking resource use. Purpose

oracle sqlplus命令详解

涉及到的知识要点a.带有一个&的替换变量的用法b.带有两个&的替换变量用法c.define命令用法d.accept命令用法e.定制SQL*Plus环境f.在glogin.sql文件中保存定制结果g.sqlplus编辑命令 a.带有一个&的替换变量的用法1).使用带有一个&号的变量值来提示用户输入一个值.eg.SQL> SELECT     empno, ename, sal, deptno FROM  emp WHERE empno = &empno;输入 e

Oracle执行计划详解

 简介: 本文全面详细介绍oracle执行计划的相关的概念,访问数据的存取方法,表之间的连接等内容. 并有总结和概述,便于理解与记忆! +++ 目录 --- 一.相关的概念 Rowid的概念 Recursive Sql概念 Predicate(谓词) DRiving Table(驱动表) Probed Table(被探查表) 组合索引(concatenated index) 可选择性(selectivity) 二.oracle访问数据的存取方法 1) 全表扫描(Full Table Scan

Linux下ORACLE客户端安装详解

1.首先去oracle官网下载以下安装包(http://www.oracle.com/technetwork/topics/linuxsoft-082809.html) instantclient-basic-linux.x64-11.2.0.3.0.zip instantclient-odbc-linux-11.2.0.3.0.zip instantclient-sdk-linux.x64-11.2.0.3.0.zip instantclient-sqlplus-linux.x64-11.2.