ORA-24777: 不允许使用不可移植的数据库链路
2016-04-18 17:29
459 查看
之前写过一篇《比ORA-24777: 不允许使用不可移植的数据库链路更让人郁闷的事情》,今天又出现 了,但没有用到dblink啊。
有一个数据库下面有两个用户A和B,A通过同义词访问B,大概有一百张表,奇怪的是只有一张表(TTT)操作不成功,报ORA-24777: 不允许使用不可移植的数据库链路,其他的表都没有问题,系统是用的XA驱动。
诊断过程:
1. 在用户B上查看这张TTT的定义,与其他的表的区别就是有blob字段。
2. 在用户A上删除TTT的同义词,建一个与其结果一模一样的,确认功能是没有问题。
3. 基本确定是blob字段的影响,这里没有dblink,但错误不会欺骗人,测试一下通过dblink访问。建立dblink,重新建立同义词
CREATE SHARED DATABASE LINK dblink_to_B
CONNECT TO B IDENTIFIED BY B
AUTHENTICATED BY B IDENTIFIED BY B
USING '10.10.23.12:1521/orcl';
保存成功,读取失败
4.测试到这里可以出解决方案了。插入用dblink,用一个同义词名,查询就用同义词B.TTT查询。
5.还有一个解决方案,把系统的XA驱动换成thin驱动,但系统要做全功能测试,不太现实。
总结:在同一个数据库下,A用户向B用户的表插入blog,如果是通过同义词的话,是通过dblink的技术实现的。
有一个数据库下面有两个用户A和B,A通过同义词访问B,大概有一百张表,奇怪的是只有一张表(TTT)操作不成功,报ORA-24777: 不允许使用不可移植的数据库链路,其他的表都没有问题,系统是用的XA驱动。
诊断过程:
1. 在用户B上查看这张TTT的定义,与其他的表的区别就是有blob字段。
2. 在用户A上删除TTT的同义词,建一个与其结果一模一样的,确认功能是没有问题。
3. 基本确定是blob字段的影响,这里没有dblink,但错误不会欺骗人,测试一下通过dblink访问。建立dblink,重新建立同义词
CREATE SHARED DATABASE LINK dblink_to_B
CONNECT TO B IDENTIFIED BY B
AUTHENTICATED BY B IDENTIFIED BY B
USING '10.10.23.12:1521/orcl';
保存成功,读取失败
4.测试到这里可以出解决方案了。插入用dblink,用一个同义词名,查询就用同义词B.TTT查询。
5.还有一个解决方案,把系统的XA驱动换成thin驱动,但系统要做全功能测试,不太现实。
总结:在同一个数据库下,A用户向B用户的表插入blog,如果是通过同义词的话,是通过dblink的技术实现的。
相关文章推荐
- MySQL函数
- ORA-00205
- 如何让Oracle客户端显示中文
- 分布式应用下的Redis单机锁设计与实现
- 转 深入浅出Mybatis系列(十)---SQL执行流程分析(源码篇)
- 跟我学REDIS-REDIS(一)----安装
- 跟我学REDIS-REDIS(二)----常用数据类型之string
- sql之left join、right join、inner join的区别
- MongoDB下载与配置安装
- HA脚本
- SQL对字符串数组的处理详解
- SQL对字符串数组的处理
- RAID的概念和RAID对于SQL性能的影响
- EAS后台SQL日志收集
- oracle primavera p6自带工具数据迁移
- 数据库 查询 事务
- oracle性能调优-虚拟索引
- MySQL——修改root密码的4种方法(以windows为例)
- oracle系统包——dbms_job用法(oracle定时任务)
- 宏观了解SQL Server 2008