`

database link问题解决

    博客分类:
  • DB
阅读更多
Oracle数据库中关于database link
可以通过在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; 
分享到:
评论

相关推荐

    symfony-link-shortner

    Symfony Link Shortner入门Symfony Link Shortner提供了一种缩短URL的简便方法要求PHP 7.4 这对于运行解决方案是可选的安装克隆Git存储库后,请运行以下命令: 作曲家安装作曲家dump-env产品在.env.local.php中,请...

    orcle dblink 的创建与删除的详解及实例

    orcle dblink 的创建与删除的详解及实例 易混淆术语介绍:Db_name,Db_domain,Global_name,Service_name 删除 Dblink 报错 ORA-02024: database link not found 的解决方法 .

    JPABasis:具有Eclipse Link和HSQLDB的Maven + Eclipse + JPA

    带有Eclipse Link和HSQLDB的Gradle + Eclipse + JPA HSQLDB数据库设置: 从hsqldb.org下载并解压缩hsqldb 使用版本hsqldb_1_8_1_3 使用以下命令行(进入HSQLDB的lib目录)启动数据库服务器:java -cp hsqldb.jar...

    oracle12c ORA-01017: 用户名/口令无效; 登录被拒绝 解决方案

    oracle12c程序连接时异常: ORA-01017: 用户名/口令无效; 登录被拒绝 的解决方案。

    WWF论坛

    常见问题解答: 一、友情连接如何管理?为什么我的友情连接无法正常调用? 友情连接管理地址:http://你的网站地址/论坛目录/link/look.asp 申请友情连接:http://你的网站地址/...

    Automatic SEO Links插件

    为博客添加内部链接,估计是很多博主头疼的问题,合理的分布内部链接,对于SEO优化来说十分的重要,内部链接的优化进一步对提升搜索引擎排名来说十分重要的,Automatic SEO Links这个插件可以帮你解决这个问题,它会...

    MySQL增删改查PHP类.zip

    MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL 是一种关联数据库管理系统,关联数据库将数据保存...

    《MyEclipse 6 Java 开发中文教程》前10章

    第一章 安装配置开发环境 18 1.1系统需求 18 1.2 JDK 的下载,安装和配置(可...10.7.2 MyEclipse生成的Spring+Hibernate无法保存数据问题的解决方法2 - 用 CGLIB 来实现事务管理 258 10.7.3 Spring相关的参考资料 261

    java程序是怎么操作数据库的,可以以常用据库为例,求详细解答,最好能举例。

    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 语言的参考手册,包括核心语言中的对象和客户端、服务器端的扩展。JavaScript 是 Netscape 跨平台的基于对象的适用于客户和服务器应用程序的脚本...

    IPv6.rar

    R1(config-if)#ipv6 address FE80:0:0:0:0123:0456:0789:0abc link-local 手工指定link-local地址 3、本地站点地址:site-local address IPV6的私网地址,就像IPV4中的私网保留地址一样 只占用到整个IPV6地址空间...

    Oracle8i_9i数据库基础

    §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 ...

    DTcms_50_sql_src最新旗舰版带手机和微信公众号设置

    2、矢量图标 精心雕琢 全新的矢量图标,兼容IE8+及主流浏览器,海量的图标库,解决图标设计难题。 3、一次更新 多次挑战 敢于颠覆自已,每一次的更新,我们都严谨苛刻,全力以赴。 4、兼容IE8+浏览器 响应式后台界面...

    shorty:使用Flask和MySQL构建的URL缩短服务

    :link: 矮个子 使用Flask&Mysql构建的自托管URL缩短服务。 :party_popper: 惊喜:点击分析 可以跟踪用于访问链接的操作系统和平台。 入门 克隆或下载此存储库。 git clone ...

    使用内置缓存移动机器人的图像分析/处理中的优化解决方案-研究论文

    在人工智能领域,图像处理在决策中起着至关重要的作用。 现在,一天的移动机器人可以作为网络共享的集中式数据库。 将所有图像输入与此数据库进行比较并做出决定。 在某些情况下,集中式数据库位于地球的另一端,...

    objectbox-c:ObjectBox C和C ++

    是超快速的数据库和数据同步解决方案。 这是ObjectBox运行时库,用于将ObjectBox作为C或C ++应用程序中的嵌入式数据库运行。 这是一个C ++示例,它将Task数据对象(普通用户定义的struct )插入数据库中: obx::...

    曼波整站系统5.3.0

    而我们使用正常,没有试出此故障,不过统一cookie处理后,此bug应该解决了,请出现故障的用户测试一下,如有问题请反馈给我们 &lt;br&gt; 5. 改进最新文章模块 &lt;br&gt;1) 增加鼠标置上时显示完整标题 2) 增加时间...

    linux.chm文档

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 ...

Global site tag (gtag.js) - Google Analytics