文档章节

Oracle大对象

dananawei
 dananawei
发布于 2017/05/26 21:16
字数 783
阅读 9
收藏 0

在当今网络时代,我们对数据的存储是越来越高,仅仅存储小型文本数据已经远远不够了,现在数据库需要存储图片、视频等等一些多媒体的内容,因此Oracle给我们提供了一种大类型数据库对象LOB(Large Object),可以用于存储大型数据。

一、大对象的4中数据类型

CLOB       字符LOB数据类型,用于存储字符数据类型

NCLOB     国家语言字符LOB数据类型,用于存储多字节多字符数据类型

BLOB       二进制LOB数据类型,用于存储二进制数据

BFILE      二进制FILE类型,用于存储文件指针,有时候,数据文件本身存储在数据库之外,而在数据库中之存储该文件的引用

二、大对象的优点

LOB与较早的类型相比,具有下面3个优点

1、LOB最大可以存储128TB的数据、这远远超过LONG和LONG RAW累的存储数量(2GB)

2、一个表可以有多个LOB、但是一个表只能有一个LONG和LONG RAW

3、LOB可以随机访问、LONG和LONG RAW只能顺序访问

三、大对象的组成部分

LOB主要由两部分组成

LOB定位器:一个指针指向LOB数据的位置

LOB数据:存储在LOB中的实际数据

LOB数据并不一定存储在表中,如果CLOB、BLOB、NCLOB列中的数据小于4KB则LOB数据存在于表中,否存于表外。

至于BFILE列支存储LOB定位器存在于表中。

四、应用

1、更新CLOB字段或者是往该类型字段插入数据的时候要用to_clob('这是CLOB字段类型')进行转换

   添加后的数据为01111111101011101,oracle会默认在前面加一个0,但是大小是不变的。

ORACLE还提供哦你一个包,包中有好多的方法,这些方法可以方便我们更好的操作对象。

DBMS_LOB.APPEND(dest_lob,src_lob)用于将原LOB中的数据添加到目标LOB末尾,该方法分别针对BLOB、CLOB和NCLOB。

APPEND(追加)方法,我们创建一个存储过程的例子:

CREATE OR REPLACT PROCEDURE append_test AS

dest_lob CLOB;

src_lob   CLOB;

GEGIN

     SELECT CLOB_COLUMN INTO dest_lob FROM COLB_TABLE WHERE ID=1

     FOR UPDATE;

     SELECT CLOB_COLUMN INTO src_lob FROM COLB_TABLE WHERE ID=2

     FOR UPDATE;

     DBMS_LOB.APPEND(dest_lob,src_lob);

END append_test;

EXEC ROCEDURE(执行存储过程就把第二行的数据追加到第一行末尾了)

COMPARE(比较)方法,我们创建一个存储过程的例子:

     return_value := DBMS_LOB.COMPARE(dest_lob,src_lob,amount,offset1,offset2);

     DBMS_OUTPUT.PUT_LINK(’比较结果' || return_value)

END compase_test;

EPASE(删除)方法,我们创建一个存储过程的例子:

 DBMS_LOB.COMPARE(dest_lob,amount,offset1);

CREATE OR REPLACT PROCEDURE epase_test AS

dest_lob CLOB;

offset1   INTEGER := 1;

amount   INTEGER := 3;

return_value INTEGER

GEGIN

     SELECT CLOB_COLUMN INTO dest_lob FROM COLB_TABLE WHERE ID=1

     FOR UPDATE;

END epase_test;

CREATE OR REPLACT PROCEDURE compare_test AS

dest_lob CLOB;

src_lob   CLOB;

offset1   INTEGER := 1;

offset2   INTEGER := 1;

amount   INTEGER := 5;

return_value INTEGER

GEGIN

     SELECT CLOB_COLUMN INTO dest_lob FROM COLB_TABLE WHERE ID=1

     FOR UPDATE;

     SELECT CLOB_COLUMN INTO src_lob FROM COLB_TABLE WHERE ID=2

     FOR UPDATE;

2、更新BLOB字段或者是往该类型字段插入数据的时候要用to_blob('1111111101011101‘)进行转换,

本文转载自:http://blog.csdn.net/ansha886/article/details/5274039

dananawei
粉丝 0
博文 10
码字总数 4647
作品 0
昌平
程序员
私信 提问
数据库从oracle迁移到postgresql后,调用大对象数据问题

需外包支持: 背景:应用软件使用的是oracle数据库,现在数据库迁移到postgresql上,应用程序不能修改, 问题:调用大对象数据时报错, 分析原因:在连oracle时用getBlob调用数据库的大对象,...

你是风
2017/02/09
3
0
使用JDBC处理Oracle大数据

转载自 http://www.cnblogs.com/xdp-gacl/p/4009399.html 一、Oracle中大数据处理   在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了。因为这种类型的字段,容量大...

Amui
2016/06/28
39
0
Oracle专题1之Oracle概述、Oracle数据库的体系结构以及常用命令

1、Oracle概述 - Oracle Database,简称为Oracle。是美国ORACLE(甲骨文)公司的一款对象关系型的数据库管理系统(ORDBMS)。目前在数据库市场上占有主要份额。 - Oracle的发展史:1977年埃里...

极客微信条
2017/11/30
0
0
Oracle表空间、段·区·块

在Oracle学习过程中,存储结构,表段区块可能是每个初学者都要涉及到的概念。表空间、段、分区和数据块分别表示了Oracle进行数据存储的不同层次和结构。了解清楚这几个结构,有助于我们奠定一...

0o清风徐来o0
2012/10/17
0
0
Oracle-内部对象统计信息

系统对象统计信息用来票数oracle数据库里的一些内部表(X$系列表)的详细信息。实际上X$系列表实际上只是Oracle自定义的内存结构,X$表里面会存储与示例相关的各种信息。 在数据库运行的阶段...

hnairdb
2018/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

NIO基于长度域的报文在Netty下的解码

1, 先复习一下粘包/拆包 1.1, 粘包/拆包的含义 TCP是个“流”协议, 并不了解上层业务数据的具体含义, 它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP...

老菜鸟0217
今天
8
0
从零开始搭建spring-cloud(2) ----ribbon

在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。 其实我们已经在上...

Vincent-Duan
今天
19
0
get和post的区别?

doGet:路径传参。效率高,安全性差(get的传送数据量有限制,不能大于2Kb) doPOST:实体传参。效率低,安全性好 建议: 1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Pos...

花无谢
昨天
4
0
当谈论迭代器时,我谈些什么?

当谈论迭代器时,我谈些什么? 花下猫语:之前说过,我对于编程语言跟其它学科的融合非常感兴趣,但我还说漏了一点,就是我对于 Python 跟其它编程语言的对比学习,也很感兴趣。所以,我一直...

豌豆花下猫
昨天
14
0
10天学Python直接做项目,我做了这5件事

初学者如何尽快上手python? 市面上关于如何学python的资料很多,但是讲的都太复杂。 我就是很简单的几句话,从小白到开发工程师,我只做了五件事。 我觉得任何商业计划书如果不能用几句话讲...

Python派森
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部