Oracle如何操作LOB

原创 2004年11月02日 18:09:00

DBMS_LOB

CREATE TABLE lob_table (
      key_value      INTEGER,
      b_lob          BLOB,
      c_lob          CLOB,
      n_lob          NCLOB,
      f_lob          BFILE);


INSERT INTO a_table values (empty_blob());

INSERT INTO lob_table VALUES
         (21, NULL, NULL, NULL, BFILENAME('IMG', 'image1.gif'));

INSERT INTO lob_table VALUES
         (22, NULL, NULL, NULL, BFILENAME('IMG', 'image2.gif'));

UPDATE lob_table SET f_lob = BFILENAME('IMG', 'image3.gif')
        WHERE key_value = 22;
UPDATE lob_table
   SET f_lob = (SELECT f_lob FROM lob_table WHERE key_value = 22)    
   WHERE key_value = 21;

CREATE DIRECTORY scott_dir AS '/usr/home/scott';


Maximum Number of Open BFILEs
SESSION_MAX_OPEN_FILES=20
INSERT INTO lob_table
   VALUES (1, NULL, 'abcd', NULL, NULL);

COMMIT;

DECLARE
  num_var           INTEGER;
  clob_selected     CLOB;
  clob_updated      CLOB;
  clob_copied       CLOB;
  read_amount       INTEGER;
  read_offset       INTEGER;
  write_amount      INTEGER;
  write_offset      INTEGER;
  buffer            VARCHAR2(20);  
BEGIN

  SELECT c_lob INTO clob_selected FROM lob_table WHERE key_value = 1;

  SELECT c_lob INTO clob_updated FROM lob_table WHERE key_value = 1 FOR UPDATE;
 
  clob_copied := clob_selected;

  read_amount := 10;
  read_offset := 1; 

  dbms_lob.read(clob_selected, read_amount, read_offset, buffer);

--  dbms_output.put_line('clob_selected value: ' || buffer);
insert into temp values(1,buffer);
 
  read_amount := 10;
  dbms_lob.read(clob_copied, read_amount, read_offset, buffer);
--  dbms_output.put_line('clob_copied value: ' || buffer);
insert into temp values(2,buffer);
 
  read_amount := 10;
  dbms_lob.read(clob_updated, read_amount, read_offset, buffer);
--  dbms_output.put_line('clob_updated value: ' || buffer);
insert into temp values(3,buffer);
 
  -- At time t4:
  write_amount := 3;
  write_offset := 5;
  buffer := 'efg';
  dbms_lob.write(clob_updated, write_amount, write_offset, buffer);
 
  read_amount := 10;
  dbms_lob.read(clob_updated, read_amount, read_offset, buffer);
--  dbms_output.put_line('clob_updated value: ' || buffer);
insert into temp values(4,buffer);
 
  read_amount := 10;
  dbms_lob.read(clob_selected, read_amount, read_offset, buffer);
--  dbms_output.put_line('clob_selected value: ' || buffer);
insert into temp values(5,buffer);
  -- Produces the output 'abcd'
 
  read_amount := 10;
  dbms_lob.read(clob_copied, read_amount, read_offset, buffer);
--  dbms_output.put_line('clob_copied value: ' || buffer);
insert into temp values(6,buffer);
  -- Produces the output 'abcd'
END;
/
OCILobGetLength()    OCILobWrite()

FUNCTION EMPTY_BLOB() RETURN BLOB;
FUNCTION EMPTY_CLOB() RETURN CLOB;
FUNCTION BFILENAME(directory_alias IN VARCHAR2,filename IN VARCHAR2) RETURN BFILE;

oracle LOB 大对象的表Move方法

       对于LOB型的表,数据量比较大的话,比如单个表的大对象有6G以上的话,使用导入和导出的方法是比较浪费时间的,并且不划算。本人测试过在P4 2.4G 1G内存 的一般工作站使用imp/dm...
  • radkitty
  • radkitty
  • 2007年11月14日 21:36
  • 8189

关于lob类型字段的重建索引问题

首先,对于lob类型的字段,oracle会默认在其上自动创建一个lob类型的索引,这个索引不支持普通的alter index ...rebuild方式,需要用alter table方式一起move。 ...
  • killvoon
  • killvoon
  • 2017年06月26日 15:51
  • 628

回收oracle Lob对象空间利用

SQL> create table t(time date,text clob) 2 / 表已创建。 SQL> begin 2 for i in 1 .. 10000 ...
  • zq9017197
  • zq9017197
  • 2013年01月05日 17:27
  • 2832

Java程序中使用oracle数据库LOB字段的总结

 LOB中我们用的比较多的主要有两种CLOB和BLOB,我们对两种类型分别讨论1.CLOB是字符型LOB,主要存储文本信息,最长为4G.,在J2EE程序中,比如网页的textarea中的字符信息比较长...
  • fengyifei11228
  • fengyifei11228
  • 2008年02月02日 10:56
  • 4088

oracle lob move tablespace

oracle 大对象移动表空间 ALTER INDEX GHSJ_JCSJ.SYS_IL0000129600C00012$$ REBUILD  TABLESPACE GHSJ_JCSJ   OR...
  • Cloudsnowe
  • Cloudsnowe
  • 2015年05月29日 17:09
  • 895

oracle中lob类型学习

oracle中支持4种类型的LOB(large object) CLOB:字符LOB。这种类型用于存储大量的文本信息,如xml或者只是纯文本。这个数据类型需要进行字符集转换,也就是说,在获取时,这个字...
  • yangaming
  • yangaming
  • 2013年09月26日 14:04
  • 5771

Oracle LOB数据类型专题

Oracle LOB数据类型专题 一、概述 LOB数据类型专门用于存储大对象的数据,不超过4G字节,包括大文本、图像图像、视频剪切等。 Oracle8之前使用LONG、LOBG RAW来实现,现慢慢...
  • bbliutao
  • bbliutao
  • 2014年02月22日 22:12
  • 5035

Oracle LOB类型 总结 --整理与网络收集资料

LOB相关的概念 LOB类型: 将信息文件(十进制、二进制)、图像甚至音频信息采用数据库作为保存载体时,就需要使用lob类型数据。 有两种Lob,Internal Lob和External Lob。I...
  • junshi66
  • junshi66
  • 2016年01月14日 18:36
  • 1438

使用Oracle中fileopen命令加载文件时遇到的怪问题

原文地址:http://archive.cnblogs.com/a/231000/ 打算把一个磁盘上的小图片存到oracle的BLOB字段中,很常见吧,但对我来说是第一次。      上网找了...
  • xing_sky
  • xing_sky
  • 2011年11月29日 23:09
  • 1350

带有clob字段的自动分区表

SQL> select * From v$version; BANNER -------------------------------------------------------------...
  • wll_1017
  • wll_1017
  • 2013年06月13日 11:43
  • 2415
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle如何操作LOB
举报原因:
原因补充:

(最多只允许输入30个字)