为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: DM Database Server x64 V8 1-4-6-2024.12.25-255012-20119-ENT
【操作系统】:kyliny V10(SP3)
【CPU】: Intel x86_64
【问题描述】*:
从PG数据库迁移到DM数据库,在PG中数据只有1G多。
在DM中,创建表空间自动扩充,最大大小为2048MB。
create tablespace TEST datafile '/dmdata/data/TEST/TEST.DBF' size 128 autoextend on next 128 maxsize 2048;
但是迁移到DM并使用一段时间后,开始报错:
超出[TEST]表空间的空间大小上限为[2048]MB
我就调整了表空间大小为4096MB。
alter tablespace TEST datafile 'TEST.DBF' autoextend on next 128 maxsize 4096;
继续使用一段时候后,有提示:超出[TEST]表空间的空间大小上限为[4096]MB
我查了好几个使用PG的数据库文件大小,基本都保持不到2G。
于是,开始resize空间。报以下三种错误:
1.
alter tablespace TEST resize datafile 'TEST.DBF' to 2048;
执行失败,失败原因:
[-2410]:数据文件[/dmdata/data/TEST/TEST.DBF]大小无效
2.
alter tablespace TEST resize datafile 'TEST.DBF' to 1024;
执行失败,失败原因:
[-4598]:无法回收簇
3.
alter tablespace TEST resize datafile 'TEST.DBF' to 3096;
执行失败,失败原因:
[-2410]:数据文件[/dmdata/data/TEST/TEST.DBF]大小无效,取值范围为(128~2147483647)M
在创建实例时,设置的PAGE_SIZE=32、EXTENT_SIZE=32
目前遇到问题:
是否有合理的办法避免表空间无限增大?
或有方案可以安全的调整表空间大小?
您好,可能需要新建表空间,把表迁移过去之后,drop原表后resize 小;(从您反馈的信息,这个可能是最有效的方案);
但该问题,可能需要进一步核查表的实际行数和大小,就是到底是什么对象占用的空间:
--查看 某个表空间 的空间的实际使用大小 with a as( select table_rowcount(owner,table_name) ct, table_used_space(OWNER,TABLE_NAME)*PAGE/1024/1024 mb,* from dba_tables where tablespace_NAME='表空间名字' ) select sum(ct),sum(mb),count(*) from a; --查看行数和空间 细节 select table_rowcount(owner,table_name) ct, table_used_space(OWNER,TABLE_NAME)*PAGE/1024/1024 mb,* from dba_tables where tablespace_NAME='表空间名字' order by 2 desc,1 desc
如果上述查询结果和预期存在较大插入,建议和达梦后台保持联系,联系项目对应的达梦的服务工程师,进一步排查。