用户在使用IQ 15 数据库一段时间后,执行批量程序时报“You have run out of space in IQ_SYSTEM_MAIN",
经检查,用户的DBSPACE使用率为1%,IQ_SYSTEM_MAINH 的使用率为100%,
数据库表对像创建在了IQ_SYSTEM_MAIN上了,没有创建在用户的Dbpace上,造成IQ_SYSTEM_MAIN 空间满。
解决办法如下:
1.回收用户在IQ_SYSTEM_MAIN上创建数据库对象(表和索引等)的权限
REVOKE CREATE ON IQ_SYSTEM_MAIN FROM PUBLIC;
2.为用户设置缺省dbspace及授予用户在user_dbspace上创建对像
GRANT CREATE ON XXX_USER_MAIN TO user;
SET OPTION user.DEFAULT_DBSPACE='XXX_USER_MAIN'
3.把IQ_SYSTEM_MAIN上的表查出来,形成SQL文件
select 'alter table' + creator||'.'||tname +' move to XXX_USER_MAIN;' from syscatalog where creator ='username' and dbspacename='IQ_SYSTEM_MAIN' >&/tmp/movetable.sql
生成脚本文件后,需要用vi把文件里的“’”单引号去掉,正确显示如下:
alter table table_name move to XXX _USER_MAIN;
4.把表移动到用户的DBSPACE上
dbisql –c “uid=dba;pwd=sql;eng=xxx;links=tcpip” –nogui -onerror continue movetable.sql