`

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; 
分享到:
评论

相关推荐

    Oracle DATABASE LINK(DBLINK)创建与删除方法

    Oracle DATABASE LINK,简称DBLINK,是一种在不同的Oracle数据库实例间建立连接的方式,允许用户在本地数据库上执行查询和操作远程数据库的数据。DBLINK为跨数据库的通信提供了简单且高效的解决方案。 创建DBLINK的...

    ADO.rar_ADO CLASS_Database link_class

    这意味着这个类库可能是为了解决跨平台或跨数据库系统的问题而设计的,它可能封装了ADO的一些核心功能,使得开发者可以更方便地在不同的数据库环境中进行数据操作。 标签"ado_class"、"database_link"、"class...

    Database Installation Guide 12c Release 2 (12.2) for Microsoft Windows

    #### 五、常见问题解决 - **安装失败**:检查系统是否满足最低要求,确保没有其他冲突的数据库服务正在运行。 - **连接问题**:确认监听器配置正确,防火墙规则允许相应的端口通信。 - **性能问题**:监控系统资源...

    oracle link

    9. **故障排查**:当遇到跨数据库操作的问题时,可以使用`V$DATABASE_LINK`视图检查链接状态,或通过`DBMS_DEBUG_JDWP`包进行远程调试。 通过理解这些知识点,你可以有效地利用Oracle Link特性来构建分布式数据库...

    Link Database-开源

    5. **测试阶段**:描述中提到该程序处于"非常非常多的beta"阶段,这意味着它可能还存在一些未解决的问题或者功能不完善的地方,用户在使用过程中可能会遇到错误,同时也意味着开发者正在积极地进行优化和改进。...

    H2Database中文教程.pdf

    H2遵循SQL标准,与多种Java持久层框架兼容,如Hibernate和EclipseLink,并且支持集群环境。在使用H2数据库的过程中,用户可以通过多种方式连接并管理数据库。 首先,要使用H2数据库,需要在计算机上安装Java运行...

    oracle_database.rar_oracle

    在"oracle_database.txt"文件中,可能会包含实现这些同步技术的具体步骤、配置示例、SQL脚本或者问题解决方案。文件的详细内容可能涵盖了创建和配置上述提到的各种组件,例如GoldenGate的参数文件设置、Data Guard的...

    Oracle Database 10g PL/SQL入门教程

    总的来说,Oracle Database 10g PL/SQL入门教程将引导你逐步掌握数据库编程的核心技术,包括SQL查询、PL/SQL编程、数据库对象的创建和管理,以及如何利用这些工具解决实际问题。通过实践和不断的练习,你将能够熟练...

    如何在Oracle中通过网络连接导入数据

    为了解决这些问题,Oracle 10g引入了Data Pump技术,提供了更高效、更灵活的数据迁移解决方案。 Data Pump导入(`impdp`)功能允许直接从源数据库实例导入数据,无需通过中间的交换文件。这一特性尤其适用于跨越...

    dblink_clob字段异常解决方案

    在数据库.link连接远程数据库时,经常会遇到无法使用CLOB字段的问题,这是因为CLOB字段在远程数据库中的处理方式与本地数据库不同所导致的。下面将讨论解决dblink_clob字段异常的解决方案。 什么是dblink? DBLink...

    oracle DBLink

    DBLink(Database Link)允许用户在本地数据库上执行远程数据库的SQL语句,就像是操作本地数据一样,极大地扩展了Oracle数据库的跨网络协作能力。 DBLink的创建主要包括以下几个步骤: 1. 创建公共用户:首先,你...

    Oracle10g US7ASCII 编码中文无法导入sqlserver问题解决

    CREATE DATABASE LINK ORCL10 CONNECT TO SYSTEM IDENTIFIED BY 'orcl' USING 'orcl10'; ``` 3. **设置 SQL Server 链接服务器**:在 SQL Server 中设置一个链接服务器,指向 Oracle10g 数据库。这样可以在 SQL...

    ALLEGRO原理图SYMBOL更新流程

    对于这些红色元件,你可以通过右键点击并选择“Link Database Part”来手动链接到最新的库版本。这样做可以确保你的设计基于最新的元件信息。然后,只需双击选定的元件并确认OK,即可完成更新。这个过程可以同时处理...

    mysql 异常com.mysql.jdbc.CommunicationsException

    ### MySQL异常...通过适当调整MySQL服务器的`wait_timeout`配置或C3P0连接池的相关参数,可以有效地解决此类问题。在实际操作过程中,还需要根据具体的业务场景选择合适的配置方案,以达到最佳的效果。

    [搜索链接]Softbiz Link Directory v1.0_softbizlink10.zip

    【标题】"Softbiz Link Directory v1.0_softbizlink10.zip" 是一个软件压缩包,其中包含Softbiz Link Directory的v1.0版本。这个软件可能是一个在线目录脚本,用于创建和管理网站链接目录,帮助用户组织和搜索各种...

    A-40827E基础介绍.pdf

    MT-LINKi作为一款高度集成化的解决方案,其核心功能包括但不限于: 1. **实时监控**:能够实时监控机床状态,包括加工进度、故障报警等信息。 2. **数据收集与分析**:自动收集机床运行数据,并通过数据分析为生产...

    关于创建oracle 连接时报以下错误,ORA-01017 ORA-02063

    DROPPUBLIC DATABASELINK DEV11R1; CREATE PUBLIC DATABASELINK DEV11R1 CONNECT TO devuser1 IDENTIFIED BY "devuser1" USING 'DEV11R1'; ``` 第二种方法是在目标数据库(即Oracle 11g数据库)上使用'SEC_CASE_...

    SAP系统管理事务码

    3. **AL03 - Operating System Alert Monitor**:用于监控操作系统层面的报警信息,帮助管理员及时发现并解决潜在问题。 4. **AL04 - Monitor Call Distribution**:用于监控SAP系统中的调用分布情况,有助于分析...

Global site tag (gtag.js) - Google Analytics