前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实验long raw 和 blob两种数据类型遇到dblink的表现

实验long raw 和 blob两种数据类型遇到dblink的表现

作者头像
Alfred Zhao
发布2019-05-24 19:27:11
9560
发布2019-05-24 19:27:11
举报

首先long raw从Oracle 10g开始就不再被建议使用,建议用blob代替。同理,long建议用clob代替。 本文从运维角度实验long raw 和 blob两种数据类型在遇到dblink时的一些差异。

  • 1.构造实验环境
  • 2.通过dblink查询
  • 3.通过dblink建表
  • 4.通过导出导入方式迁移

1.构造实验环境

在A库jingyu用户下创建两张表:

代码语言:javascript
复制
--LONG RAW
create table T_TEST_LONGRAW(
id number,
text long raw
);

--BLOB
create table T_TEST_BLOB(
id number,
text BLOB
);

然后使用plsql工具在两张表分别插入一条相同的数据:id=1;text=某个二进制小程序。

2.通过dblink查询

在B库通过dblink访问A库的两张表:

代码语言:javascript
复制
SELECT * FROM jingyu.T_TEST_LONGRAW@ttslink;
可以正常查询。

SELECT * FROM jingyu.T_TEST_BLOB@ttslink;
ERROR:
ORA-22992: cannot use LOB locators selected from remote tables

可以看到,long raw数据类型的表可以正常查询,blob数据类型的却会报错:ORA-22992。

3.通过dblink建表

如果想在B库依据A库的两张表创建测试表:

代码语言:javascript
复制
create table T_TEST_LONGRAW as select * from jingyu.T_TEST_LONGRAW@ttslink;
ORA-00997: illegal use of LONG datatype

create table T_TEST_BLOB as SELECT * FROM jingyu.T_TEST_BLOB@ttslink;
Table created.

可以看到,和步骤2中的测试不同,long raw数据类型的表无法被创建,报错:ORA-00997。 而blob数据类型的表却可以正常创建。

4.通过导出导入方式迁移

可以通过exp/imp或者expdp/impdp来导出导入对应的表:

代码语言:javascript
复制
--exp / imp
exp \'/ as sysdba\' file=longraw.dmp tables=jingyu.t_test_longraw log=longraw.log
imp \'/ as sysdba\' file=longraw.dmp full=y log=imp_longraw.log

exp \'/ as sysdba\' file=blob.dmp tables=jingyu.t_test_blob log=blob.log
imp \'/ as sysdba\' file=blob.dmp full=y log=imp_blob.log

--expdp / impdp
expdp \'/ as sysdba\' directory=XTTS dumpfile=longraw.dmp tables=jingyu.t_test_longraw,jingyu.t_test_blob logfile=longraw.log

impdp \'/ as sysdba\' directory=XTTS dumpfile=longraw.dmp full=y logfile=impdp_longraw.log

测试两种方式都可以正常导出导入。

总结:很简单的一个小实验,只是发现二者在dblink查询和依据dblink建表时,表现完全相反,蛮有趣的,特此记录一下。 另外,如果将实验中long raw和blob分别替换为long和clob去构造实验(插入的数据就是字符型),现象一样就不再赘述。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-11-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.构造实验环境
  • 2.通过dblink查询
  • 3.通过dblink建表
  • 4.通过导出导入方式迁移
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档