在 Linux 上的 Informix 中,“扩容表”通常指 增加表所在的 dbspace 空间,或 让表能使用更多存储空间。Informix 本身没有“直接扩容表大小”的命令,而是通过 扩容 dbspace / 增加 chunk 来实现。
下面按 常见场景 给你一个完整说明。
SELECT
tabname,
dbsname
FROM
systables
WHERE
tabname = 'your_table';
或者更详细:
SELECT
t.tabname,
d.name AS dbspace
FROM
systables t,
sysdbspaces d
WHERE
t.dbsname = d.name
AND t.tabname = 'your_table';
SELECT
name,
total_size_kb,
free_size_kb
FROM
sysdbspaces;
或系统命令:
onstat -d
查看:
DbspacesChunksFree 空间mkdir -p /informix/chunks
touch /informix/chunks/sql_chunk01
chmod 660 /informix/chunks/sql_chunk01
chown informix:informix /informix/chunks/sql_chunk01
创建 1GB 示例:
dd if=/dev/zero of=/informix/chunks/sql_chunk01 bs=1M count=1024
ALTER DBSPACE dbspace_name
ADD CHUNK '/informix/chunks/sql_chunk01'
SIZE 1024000; -- 单位:KB
✅ 成功后,表即可自动使用新增空间。
适合:
CREATE DBSPACE new_dbspace
FILE '/informix/chunks/new_chunk01'
SIZE 2 GB;
ALTER TABLE your_table
PUT IN new_dbspace;
⚠️ 注意:
如果表是 分片表:
ALTER FRAGMENT ON TABLE your_table
ADD PARTITION new_partition
IN dbspace_name;
如果是 sort / temp 报错:
onstat -d
确认 temp_dbspace 是否有空间,必要时:
CREATE DBSPACE tempdbs
FILE '/informix/chunks/temp_chunk01'
SIZE 1 GB;
并在 onconfig 中配置:
DBSPACETEMP tempdbs
-271 Could not insert new row into the table
-131 ISAM error: no free disk space
✅ 解决:
| 场景 | 推荐方案 |
|---|---|
| 表空间不足 | 给 dbspace 加 chunk |
| 表太大、想换存储 | 新建 dbspace + ALTER TABLE |
| 分片表 | ALTER FRAGMENT |
| 临时空间不足 | 新建 temp dbspace |
如果你愿意,可以告诉我:
onstat -V)我可以给你 精确的扩容命令。