Informix下大对象(BLOB和CBLOB)的处理机问题的解决办法

 

Informix下大对象(BLOB和CBLOB)的处理机问题的解决办法
在informix数据库中大对象BLOB和CBLOB处理出错的分析和解决办法:
1:分析:
Informix数据库中大对象存储在分为两大类:
简单大对象:TEXT、Byte对象,他们存放在BLOB表空间(普通表空间)中,如果IDS系统没有建立BLOB表空间,或缺省没有时,存储可能出错。
智能化大对象:BLOB、CLOB对象,他们存放在SBSPACE表空间(智能化表空间)中,如果IDS系统没有建立SBSPACE表空间,或缺省没有时,存储可能出错。错误信息为没有SBSPACE表空间存在
故我们在使用大对象时首先要检查是否创建相应的表空间:检查命令:onstat –d,显示:
Dbspaces
address number flags fchunk nchunks flags owner name
c9e27d0 1 0x1 1 1 N informix rootdbs
c9e2ab8 2 0x1 2 1 N informix ol_infxcrm
c9e2c00 3 0x8001 3 1 N S informix sbspace
c9e2d48 4 0x1 4 1 N informix datadbs1
c9e2e90 5 0x1 5 2 N informix db_data_info
cd4f018 6 0x2001 6 1 N T informix db_temp_info
cde83b8 7 0x8001 8 1 N S informix mydatasbsp
cdf7548 8 0xa001 9 1 N S informix mydatatsbsp
8 active, 2047 maximum
如果flags标志中有S表示已建立智能化大对象空间,如果没有采用下面命令创建:
创建永久存储空间:
onspaces -c -S mydatasbsp -p D:\Informix\crmdb\db_sb_infomix.dat -o 0 -s 100000
其中:: D:\Informix\crmdb\db_sb_infomix.dat 表示文件存放路径可以改,如果为unix或linux系统时:为/informix/infxdata/db_sb_informix.data。如果文件不存在先创建文件:unix为:touch db_sb_informix.data 就可以了。
2:表使用的表空间的正确性
在缺省情况下,我们在创建数据库时指定了使用的表空间,当在建表时系统缺省为创建的表使用缺省的表空间。但大对象在创表时一定要指定相应的表空间对象:其创建表的格式为:
create table blob_test(
id integer,
name varchar(20),
data blob,
primary key (id) constraint pk_blob_test
);
alter table blob_test put data in (sbspace);
3:最后一种情况是在前边都配置好的时候由于驱动程序的版本不正确导致数据大对象操作失败,建议采用Informix jdbc driver2.21.jc5这个版本的驱动程序,经过测试,比较稳定。
4.也可以使用如下方式:
a、创建存放大对象的空间
touch /home/informix/sbspaces/emos_integ_sp
onspaces -c -S emos_integ_sp -p /home/informix/sbspaces/emos_integ_sp -o 500 -s 20480
b、修改$INFORMIXDIR/etc/onconfig文件中的设置属性SBSPACENAME 

SBSPACENAME  emos_integ_sp

c、重新启动数据库


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值