[转载]Oracle DBLink 创建及其使用和使用中问题解决
转载于http://dacoolbaby.iteye.com/blog/1632076
1.创建dblink的语法:
1.创建dblink的语法:
- CREATE [PUBLIC] DATABASE LINK link
- CONNECTTO username IDENTIFIED BYpassword
- USING ‘connectstring’
CREATE [PUBLIC] DATABASE LINK link CONNECT TO username IDENTIFIED BY password USING ‘connectstring’
2.说明:
1)权限:创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。
如果省略public,则创建的是private的数据库连接,private的连接只能是当前创建DB_LINK的用户可以使用这个db_link,public表示数据库中所有的用户都可以使用这个db_link。
2)link : 当GLOBAL_NAME=TRUE时,link名必须与远程数据库的全局数据库名global_name相同(global_name可以在远程数据库上执行select * from global_name;得到); 当GLOBAL_NAME=TRUE时,可以任意命名。
3)connectstring:连接字符串,tnsnames.ora中定义远程数据库的连接串。
4)username、password:远程数据库的用户名,口令。如果不指定,则使用当前的用户名和口令登录到远程数据库。
3.删除数据库链接的语句:
- DROP [PUBLIC] DATABASE LINK zrhs_link
DROP [PUBLIC] DATABASE LINK zrhs_link
4.查看已创建的dblink
- select owner,object_name from dba_objects where object_type='DATABASE LINK';
- select * from dba_db_links;
select owner,object_name from dba_objects where object_type='DATABASE LINK'; select * from dba_db_links;
5.修改GLOBAL_NAME的方法:
方法一、在数据库的init.ora文件中将global_names设为true/false。
方法二、语句:ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;
修改后重新启动数据库设置才能生效。
注:数据库全局名称可以用以下命令查出:SELECT * FROM GLOBAL_NAME;
6.dblink的创建和使用:
- --GLOBAL_NAME为false
- alter system set global_names=false;
--GLOBAL_NAME为false alter system set global_names=false;
数据库链接名(db_link名)任意取名:
创建:
方法一:
- createpublicdatabase link USER
- connectto jade identified by jade
- using '(DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVICE_NAME = orcl)
- )
- )';
create public database link USER connect to jade identified by jade using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) )';
方法二:
- createpublicdatabase link userconnectto epm2 identified by epm2 using 'orcl';
- --使用:
- select * from pm_t_kpi_data@user;
- --GLOBAL_NAME为true
- alter system set global_names=true;
create public database link user connect to epm2 identified by epm2 using 'orcl'; --使用: select * from pm_t_kpi_data@user; --GLOBAL_NAME为true alter system set global_names=true;
要求数据库链接名(db_link名)跟远端数据库的global_name名一样
错误创建和使用:
- createpublicdatabase link userconnectto epm2 identified by epm2 using 'orcl';
- select * from pm_t_kpi_data@user;
create public database link user connect to epm2 identified by epm2 using 'orcl'; select * from pm_t_kpi_data@user;
ORA-02085:数据库链接:USER.REGRESS.RDBMS.DEV.US.ORCLE.COM 连接 ORCL
正确创建和使用:
创建一个和使用:
- createpublicdatabase link orcl connectto epm2 identified by epm2 using 'ORCL';
- select * from pm_t_kpi_data@orcl@al;
create public database link orcl connect to epm2 identified by epm2 using 'ORCL'; select * from pm_t_kpi_data@orcl@al;
创建多个和使用:注:al可以任意取名
- createpublicdatabase link orcl@al connectto epm2 identified by epm2 using 'ORCL';
- select * from pm_t_kpi_data@orcl@al;
create public database link orcl@al connect to epm2 identified by epm2 using 'ORCL'; select * from pm_t_kpi_data@orcl@al;
7、取消REGRESS.RDBMS.DEV.US.ORACLE.COM后缀:
global_name(oradb)带上默认的域名REGRESS.RDBMS.DEV.US.ORACLE.COM后缀,则可以执行下面语句进行解决
- update global_name set global_name='orcl';
- -- (本地服务器上执行)
- commit;
update global_name set global_name='orcl'; -- (本地服务器上执行) commit;
或者
- update props$ set value$ = 'orcl'wherename = 'GLOBAL_DB_NAME'; commit;
update props$ set value$ = 'orcl' where name = 'GLOBAL_DB_NAME'; commit;
之后重启。重新建立的就没有后缀名了。
8、为dblink创建同义词
- createorreplace synonym student for student_a@USER;
create or replace synonym student for student_a@USER;
注:student为同义词名,student_a为dblink链接的表
查询:
- select *from student_a@USER
select *from student_a@USER
等价于
- select * from student
相关推荐
在数据库管理领域,Oracle SQL和MySQL SQL是两种广泛使用的SQL方言,它们在语法和功能上存在一定的差异。当需要将一个基于Oracle SQL的应用程序迁移到MySQL环境时,就需要进行SQL语句的转换工作。本项目提供了一个...
由于标题和描述是重复的且没有提供实质性的内容,我们无法从中得知具体的Oracle SQL高级编程知识点。但是,从标题我们可以推测该文档可能是关于如何使用Oracle数据库中的SQL语言进行高级编程。Oracle数据库是一个...
oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具...
Oracle SQL 是一种强大的数据库查询和编程语言,广泛用于管理和操作Oracle数据库系统。11g第二版(11G2)是Oracle的一个重要版本,提供了许多增强功能和优化。本官方文档集包括四份重要的参考资料,涵盖了Oracle SQL...
Oracle SQL是数据库管理员和开发人员用来与Oracle数据库交互的语言,它是SQL标准的扩展,提供了许多特有的功能和优化。本资源“Oracle Sql基础(beginning oracle sql中文版)”旨在为初学者提供一个全面的Oracle ...
ORACLE SQL性能优化系列 ORACLE SQL性能优化是数据库管理员和开发者非常关心的一个话题。为了提高数据库的性能,ORACLE 提供了多种优化技术。下面我们将详细介绍 ORACLE SQL 性能优化系列中的一些重要知识点。 一...
Oracle SQL Developer 是一款由Oracle公司推出的强大的数据库管理工具,它为数据库管理员(DBA)、开发者以及数据分析师提供了全面的功能,以高效地管理和操作Oracle数据库。本文档将深入讲解Oracle SQL Developer的...
第三章 ORACLE SQL 单行函数 第四章 从多表中查询数据 第五章 用组函数合计数据 第六章 子查询 第七章 操纵数据 第八章 创建和管理表 第九章 内置约束 第十章 创建视图 第十一章 其他数据库对象 第十二章 控制用户...
本文将详细讲解如何使用Oracle SQL Developer工具进行这样的迁移过程,以及如何解决在迁移过程中遇到的问题。 首先,确保你拥有正确的工具。在这个案例中,你需要MySQL 5.6.37、Oracle 11g以及Oracle SQL Developer...
《精通Oracle SQL(第2版)》是一本深入解析Oracle数据库查询语言的专业书籍,由Oracle ACE和OakTable团队的专家共同撰写,集成了他们的丰富经验和专业知识。这本书旨在帮助读者掌握Oracle SQL的高级技巧,提升在...
Oracle SQL 优化 Oracle SQL 优化是数据库性能优化的关键部分。为了提高数据库的性能,我们需要从五个方面进行调整:去掉不必要的大型表的全表扫描、缓存小型表的全表扫描、检验优化索引的使用、检验优化的连接技术...
在“Oracle-SQL.rar”这个压缩包中,包含了一份名为“Oracle SQL.ppt”的文件,这可能是一个PowerPoint演示文稿,用于详细讲解Oracle数据库的基础知识和SQL语言的使用。下面,我们将深入探讨一些Oracle SQL的基础...
### Oracle SQL Developer数据库连接成功后无法打开表的问题分析与解决 #### 问题概述 在使用Oracle SQL Developer工具时,部分用户可能会遇到一个较为常见的问题:虽然已经成功连接到Oracle数据库,但是在左侧的...
Oracle SQL是数据库管理和数据分析的重要工具,尤其在处理Oracle数据库时不可或缺。本文提供的经典练习题旨在帮助初学者熟悉SQL语句的编写,特别是针对Oracle数据库特有的功能。以下将详细讲解涉及的知识点。 1. **...
解决oracle sqldeveloper无法连接mysql、SQLServer问题,sqlDeveloper是ORACLE数据库开发工具,自带的是无法连接MS SQL Server以及mysql的,想连接的话需要第三方工具。 使用方法: 解压出来后将2个jar放入jlib...
内容概要:本文详细介绍了如何使用Oracle SQL Developer Data Modeler工具进行物理数据模型(PDM)的设计与创建。主要内容包括软件的安装配置,创建PDM的概念详解,基本功能操作方法以及模型设计的原则与最佳实践。...
Oracle SQL Developer 是一款由Oracle公司推出的免费数据库管理工具,它为数据库管理员(DBA)和开发人员提供了一个全面的集成环境,以便于管理和操作Oracle数据库。这个工具的强大之处在于其直观的用户界面和广泛的...
Oracle SQL 判断值为空OrNull 判断 Oracle SQL 中判断值为空或 Null 的方法有多种,在本文中,我们将介绍 Oracle 和 SQL Server 中的空值判断方法。 Oracle 中的空值判断 在 Oracle 中,可以使用 `NVL` 函数来...