用户在使用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

10-17 04:38