背景
预发布环境压力测试的时候,后台报错:
ORA-01654: 索引 TSA.TS_TIME_0_2020_09 无法通过 1024 (在表空间 TSA 中) 扩展
定位问题
无法拓展,可猜测数据库表空间满了,导致无法继续存储数据
查看数据量:
查看dbf文件位置和大小:
SELECT T.TABLESPACE_NAME,D.FILE_NAME,D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUS
FROM DBA_TABLESPACES T,DBA_DATA_FILES D
WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
ORDER BY TABLESPACE_NAME,FILE_NAME;
由图可知,此表空间dbf文件已经达到32G上限(限制跟DB_BLOCK_SIZE有关,文末介绍)。因此需要扩容。
扩容
在 '/usr/oracle/oradata/tsa/‘ 目录新建 tsa2.dbf 文件用于存储新的数据。
初始大小1024M,达到上限自动扩容50M
ALTER TABLESPACE "TSA" ADD DATAFILE '/usr/oracle/oradata/tsa/tsa2.dbf'
SIZE 1024M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;
Oracle表空间数据文件大小限制
表空间数据文件容量与DB_BLOCK_SIZE有关,在初始建库时,DB_BLOCK_SIZE要根据实际需要,设置为 4K,8K、16K、32K、64K等几种大小,ORACLE的物理文件最大只允许4194304个数据块(由操作系统决定),表空间数据文件的最大值为 4194304×DB_BLOCK_SIZE/1024M。
即:
4k最大表空间为:16384M
8K最大表空间为:32768M
16k最大表空间为:65536M
32K最大表空间为:131072M
64k最大表空间为:262144M