Oracle LOB字段操作的一点教训
今天有个功能需要对CLOB字段进行操作,期间遇到几个问题,老天眷顾,都算是解决了,记一下,免得日后重蹈覆辙。
错误一:
ORA-22920: 未锁定含有 LOB 值的行
出现这个问题的原因,是由于select出LOB字段时未加 for update,ORACLE官方文档对该错误的说明:
引用文字代码
ORA-22920 row containing the LOB value is not locked
Cause: The row containing the LOB value must be locked before updating the LOB value.
Action: Lock the row containing the LOB value before updating the LOB value.
ORA-22920 row containing the LOB value is not locked
Cause: The row containing the LOB value must be locked before updating the LOB value.
Action: Lock the row containing the LOB value before updating the LOB value.
于是加上for update再测,发现错误提示变了,变成下面的:
错误二:
ORA-01002: 读取违反顺序
出现这个问题的原因是Connection 的 autoCommit属性值为true,改成
Sql代码 conn.setAutoCommit(false);
......
LOB操作
.....
conn.commit();
conn.setAutoCommit(true);
conn.setAutoCommit(false);
......
LOB操作
.....
conn.commit();
conn.setAutoCommit(true);
就可以了。
另外,注意第一步的select时,不要select出非LOB的字段,并且,如果一张表有多个LOB字段,操作顺序也最好按照表里的字段顺序来操作,否则也可能出错。
相关文档:
学习Oracle DBA也半个多学期了,今天猛然才发现,原来我的书还是很新的,上课操作时候也只是知道大概怎么做,但是要真的全部自己做,而不去翻书还是有一定的难度的,所以呢,今天开始将DBA从头复习一遍,同时再操作一遍。
第一章,学的是Oracle的体系结构� ......
ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方存放,Oracle会提示:没有存储配额. 因此,在创建对象之前,首先要分配存储空间.
分配存储,就要创建表空间:
创建表空间� ......
首先计算机上必须安装oracle,并配置好服务名
安装oracle的过程中一般会要求建立一个数据库,也可以之后再创建
这个后面有一个 数据库配置助理 (创建修改数据库的,一般密码创建要求字母开头,大于7位啥的)和一个net配置助理(添加或者修改一个数据库服务名),一般用plsql developer远程操作oracle数据库 ......
步骤:
1.首先,你要有一张表!
CREATE TABLE example(
ID Number(4) NOT NULL PRIMARY KEY,
NAME VARCHA ......
參考:http://blog.csdn.net/rainnyzhong/archive/2009/01/09/3740660.aspx
作者:Rainny
日期:2009-1-8
创建测试表:
create table test(c_id varchar2(20));
插入测试数据:
insert into test values ('1234');
insert into test values ('45678');
insert into test values ('-12 ......