在informix数据库修改表名时,遇到如下报错:
此报错原因是表被占用,解决方法如下:
1、要解决该问题,首先需要找到该表的16进制partnum:
Select hex(partnum) from systables where tabname = "customer".
2、如果partnum为0,那么这可能是一个分片表。你需要执行以下命令来找到分片表的partnum:
Select st.tabname, dbinfo("dbspace", sf.partn), hex(sf.partn) from systables st, sysfragments sf, where st.tabid = sf.tabid and sf.fragtype = "T"and st.tabname = "customer".
3、用找到的partnum结合onstat命令搜索当前打开表的信息:
onstat -g opn | grep -i
4、从rstcb字段,它表明了相关会话线程的内存地址信息,据此信息使用onstat -u命令进行搜索:
onstat -u | grep
在确定与此相关的会话以后,你可以通过onmode -z 终止相关的会话。