Oracle数据库中关于database link
可以通过在A库设置指向B库的database link来直接访问B库的数据
语法
其中,如果省略public则创建的是private的连接,只能当前所有者可以使用这个link
使用connect to user identified by xxx则所有通过dblink的用户在访问B库时都使用userA这个用户
b_lk指的是database link的名字,如果A库的global_names=true,则这个名字一定要使用B库的global_name.在b库执行select * from global_name可以得到。否则建立db link的时候不会报错,但是在执行查询时会报错
ORA-02085: database link b_lk connects to b.world.COM
tnsname指的是A库的tnsnames文件中配置的b库名称
也可以直接使用以下的语句代替
a库使用dblink访问b库时比如select * from table@b_lk默认会在a库生成一个事务,可以查询v$transaction得到。有三种方法来控制这个事务
1.查询后执行rollback或者commit
注意:在rollback因为dblink查询产生的事务前,无法关闭dblink。关闭后可以再次执行基于dblink的查询
3.set transaction read only;让事务只读,dblink将不产生事务,但是也限制了同一个session下对本地库的写操作
注意:有了dblink后,可以执行对b库的insert等dml操作,有安全隐患,如何控制只能对b库进行读操作呢?
------------------------------
如果使用dblink,我们需要及时显示的关闭dblink。以下提供两种方式,因为并不会在你建立的以后就自动的关闭和远程服务器建立的session,如果session太多,会0.+造成查询失败
你的程序是JAVA或者其他;可以写个存储过程,然后用动态sql实现database link的显示关闭.
---用db link查询表事务的两个小灯也会亮!!!
因为 DBLINK 会起一个新的事务处理的。 所以哪怕你是SELECT ROLLBACK和COMMIT都会亮的。
每次使用db_link查询时释放连接,调用dbms_session包中的关闭函数即可
例:dbms_session.close_database_link(CONN_MY_LINK);
……
是本地数据库的事务
加上set transaction read only;
------------------------------
ORA-02068,ORA-03113 报错
Cause:
由于大量使用dblink远程连接未正常释放所致,也可能是bug所致。
Solution:
一,最好不要大量使用dblink方式实时远程取数据,有大概如下几个缺点:
1,频繁对远程数据库创建连接,释放连接会有较大开销,特别是OLTP类数据库。
2,此类远程dblink连接session,如本地session不退出或手动释放,此类session是不会及时自动释放的。大量耗用远程数据库资源。
3,占用网络带宽
4,触发bug,此类bug很多
此类应用根绝实际需求可以用物化视图,触发器等方式替代.
注:切忌使用dblink嵌套dblink的访问方式,性能会非常糟糕,而且不稳定。
二,使用ALTER SESSION CLOSE DATABASE LINK dblink_name;语句来手动关闭远程dblink session.
在使用此语句前,切忌先执行commit;否则报错ORA-02080或者不能达到预期效果。
-------------------------------
可以通过在A库设置指向B库的database link来直接访问B库的数据
语法
create [public] database link b_lk connect to userA identified by xxx using 'tnsname'
其中,如果省略public则创建的是private的连接,只能当前所有者可以使用这个link
使用connect to user identified by xxx则所有通过dblink的用户在访问B库时都使用userA这个用户
b_lk指的是database link的名字,如果A库的global_names=true,则这个名字一定要使用B库的global_name.在b库执行select * from global_name可以得到。否则建立db link的时候不会报错,但是在执行查询时会报错
ORA-02085: database link b_lk connects to b.world.COM
tnsname指的是A库的tnsnames文件中配置的b库名称
也可以直接使用以下的语句代替
USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = b.world.COM)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = b) ) )';
a库使用dblink访问b库时比如select * from table@b_lk默认会在a库生成一个事务,可以查询v$transaction得到。有三种方法来控制这个事务
1.查询后执行rollback或者commit
2.查询后关闭link :alter session close database link b_lk SQL> alter session close database link b_lk; ERROR: ORA-02080: database link is in use SQL> rollback; Rollback complete. SQL> alter session close database link b_lk; Session altered.
注意:在rollback因为dblink查询产生的事务前,无法关闭dblink。关闭后可以再次执行基于dblink的查询
3.set transaction read only;让事务只读,dblink将不产生事务,但是也限制了同一个session下对本地库的写操作
注意:有了dblink后,可以执行对b库的insert等dml操作,有安全隐患,如何控制只能对b库进行读操作呢?
------------------------------
如果使用dblink,我们需要及时显示的关闭dblink。以下提供两种方式,因为并不会在你建立的以后就自动的关闭和远程服务器建立的session,如果session太多,会0.+造成查询失败
alter session close database link <dblink_name>; dbms_session.close_database_link(<dblink_name>);
你的程序是JAVA或者其他;可以写个存储过程,然后用动态sql实现database link的显示关闭.
---用db link查询表事务的两个小灯也会亮!!!
因为 DBLINK 会起一个新的事务处理的。 所以哪怕你是SELECT ROLLBACK和COMMIT都会亮的。
每次使用db_link查询时释放连接,调用dbms_session包中的关闭函数即可
例:dbms_session.close_database_link(CONN_MY_LINK);
……
是本地数据库的事务
加上set transaction read only;
------------------------------
ORA-02068,ORA-03113 报错
Cause:
由于大量使用dblink远程连接未正常释放所致,也可能是bug所致。
Solution:
一,最好不要大量使用dblink方式实时远程取数据,有大概如下几个缺点:
1,频繁对远程数据库创建连接,释放连接会有较大开销,特别是OLTP类数据库。
2,此类远程dblink连接session,如本地session不退出或手动释放,此类session是不会及时自动释放的。大量耗用远程数据库资源。
3,占用网络带宽
4,触发bug,此类bug很多
此类应用根绝实际需求可以用物化视图,触发器等方式替代.
注:切忌使用dblink嵌套dblink的访问方式,性能会非常糟糕,而且不稳定。
二,使用ALTER SESSION CLOSE DATABASE LINK dblink_name;语句来手动关闭远程dblink session.
在使用此语句前,切忌先执行commit;否则报错ORA-02080或者不能达到预期效果。
-------------------------------
ORACLE "ORA--22992:无法使用远程表选择的LOB定位器,database link" 解决办法: 先创建一个临时表,然后把远程的含CLOB字段的表导入到临时表中,再倒入本表。 create global temporary table demo_temp as select * from demo; insert into demo_temp select * from demo@D_LINK; insert into demo select * from demo_temp; commit;
发表评论
-
oracle10g完全缷载略记
2016-07-09 15:14 808软件环境: 1、Windows7 + Oracle 10g ... -
MySQL zip版的简单安装方式
2016-06-25 17:56 775Windows下MySQL zip版的简单安装 1、下载My ... -
关系型数据库三范式解释
2016-04-07 11:54 1238数据库 三范式最简单最易记的解释,整理一下方便大家记忆。 书上 ... -
oracle中的视图详解及实例
2015-03-26 16:42 16491.创建用户并授权: cre ... -
plsql快捷键设置
2015-01-19 14:15 23821.使用PL/SQL中经常性需要输入select * fro ... -
Oracle10g创建Database link
2015-01-14 10:53 926Oracle10g创建Database link ... -
union和union all的区别
2014-12-29 16:20 1238Union因为要进行重复值扫描,所以效率低。如果合并没有刻意要 ... -
oracle数据库导入导出
2014-11-04 11:33 795oracle数据库导入导出(导出为dmp格式) 一、数据导出: ... -
Oracle中decode函数用法
2014-10-24 10:40 1193含义解释: decode(条件,值1,返回值1,值2 ... -
db语句优划与用法相关
2014-09-19 17:01 6251. oracle 中的not in() 与not exist ... -
oracle 临时表空间 和数据表空间
2014-08-25 13:28 892Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临 ... -
--Oracle 删除用户和表空间
2014-08-25 11:40 2458--查看oracle所有的表空间 select dbf.tab ... -
Oracle trunc()函数的用法 to_date()
2014-07-01 14:24 1376Oracle trunc()函数的用法 --Oracle ... -
sql执行顺序
2014-06-17 21:06 812在查询中逻辑查询和 ... -
监听listener oracle 错误 1067:进程意外终止
2014-05-15 19:20 1577监听listener oracle 错误 1067:进程意外终 ... -
jdbc properties文件配置
2014-05-05 21:33 1327前言 JDBC(Java Data Base Connecti ... -
PLSQL 创建表空间和用户
2014-03-14 18:09 3468通过pl/sql登录到Oracle数据库上,然后执行菜单:文件 ... -
oracle 中删除表 drop delete truncate 的区别
2014-02-27 17:26 964相同点,使用drop delete truncate 都会删除 ... -
oracle表创建序列创建触发器创建
2014-02-27 11:33 1195// 创建一个序列 CREATE SEQUENCE Car_G ... -
oracle打开关闭服务批处理
2014-02-26 09:29 800@echo off echo 正在启动oracle服务,请稍等 ...
相关推荐
Symfony Link Shortner入门Symfony Link Shortner提供了一种缩短URL的简便方法要求PHP 7.4 这对于运行解决方案是可选的安装克隆Git存储库后,请运行以下命令: 作曲家安装作曲家dump-env产品在.env.local.php中,请...
orcle dblink 的创建与删除的详解及实例 易混淆术语介绍:Db_name,Db_domain,Global_name,Service_name 删除 Dblink 报错 ORA-02024: database link not found 的解决方法 .
带有Eclipse Link和HSQLDB的Gradle + Eclipse + JPA HSQLDB数据库设置: 从hsqldb.org下载并解压缩hsqldb 使用版本hsqldb_1_8_1_3 使用以下命令行(进入HSQLDB的lib目录)启动数据库服务器:java -cp hsqldb.jar...
oracle12c程序连接时异常: ORA-01017: 用户名/口令无效; 登录被拒绝 的解决方案。
常见问题解答: 一、友情连接如何管理?为什么我的友情连接无法正常调用? 友情连接管理地址:http://你的网站地址/论坛目录/link/look.asp 申请友情连接:http://你的网站地址/...
为博客添加内部链接,估计是很多博主头疼的问题,合理的分布内部链接,对于SEO优化来说十分的重要,内部链接的优化进一步对提升搜索引擎排名来说十分重要的,Automatic SEO Links这个插件可以帮你解决这个问题,它会...
MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL 是一种关联数据库管理系统,关联数据库将数据保存...
第一章 安装配置开发环境 18 1.1系统需求 18 1.2 JDK 的下载,安装和配置(可...10.7.2 MyEclipse生成的Spring+Hibernate无法保存数据问题的解决方法2 - 用 CGLIB 来实现事务管理 258 10.7.3 Spring相关的参考资料 261
stmt.executeUpdate("CREATE TABLE col_link (sitename varchar (20) NULL ,siteurl varchar (50) NULL) "); //执行了一个sql语句生成了一个表col_link的表 stmt.executeUpdate("insert into col_link values('ASP...
这一章包含了解决此种情况的链接表。 轻松上手 本书是 JavaScript 语言的参考手册,包括核心语言中的对象和客户端、服务器端的扩展。JavaScript 是 Netscape 跨平台的基于对象的适用于客户和服务器应用程序的脚本...
R1(config-if)#ipv6 address FE80:0:0:0:0123:0456:0789:0abc link-local 手工指定link-local地址 3、本地站点地址:site-local address IPV6的私网地址,就像IPV4中的私网保留地址一样 只占用到整个IPV6地址空间...
§10.1.7 EXCEPTIONS(违反完整性)问题 217 §10.1.8 Not in和Not Exists 218 §10.1.9 关于 COPY命令 218 §10.1.10 列值为NULL情形的处理 219 §10.1.11 使用 product_user_file来限制用户使用产品 220 §10.2 ...
2、矢量图标 精心雕琢 全新的矢量图标,兼容IE8+及主流浏览器,海量的图标库,解决图标设计难题。 3、一次更新 多次挑战 敢于颠覆自已,每一次的更新,我们都严谨苛刻,全力以赴。 4、兼容IE8+浏览器 响应式后台界面...
:link: 矮个子 使用Flask&Mysql构建的自托管URL缩短服务。 :party_popper: 惊喜:点击分析 可以跟踪用于访问链接的操作系统和平台。 入门 克隆或下载此存储库。 git clone ...
在人工智能领域,图像处理在决策中起着至关重要的作用。 现在,一天的移动机器人可以作为网络共享的集中式数据库。 将所有图像输入与此数据库进行比较并做出决定。 在某些情况下,集中式数据库位于地球的另一端,...
是超快速的数据库和数据同步解决方案。 这是ObjectBox运行时库,用于将ObjectBox作为C或C ++应用程序中的嵌入式数据库运行。 这是一个C ++示例,它将Task数据对象(普通用户定义的struct )插入数据库中: obx::...
而我们使用正常,没有试出此故障,不过统一cookie处理后,此bug应该解决了,请出现故障的用户测试一下,如有问题请反馈给我们 <br> 5. 改进最新文章模块 <br>1) 增加鼠标置上时显示完整标题 2) 增加时间...
系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 ...