问题:
用数据泵Impdp迁移数据 ,数据追加到一个已创建的表,报了一个错 ORA-01691: unable to extend lob segment VCASH.SYS_LOB0000225377C00011$$ by 8192 in tablespace VCASH_DATA
查看此对象所在的数据文件
select distinct file_id from dba_extents where owner='VCASH' and segment_name='SI_ACCESS_RECORD';
select file_name,tablespace_name,autoextensible,file_id,bytes/1024/1024/1024 from dba_data_files
where tablespace_name='VDG_DATA'
and file_id in(select distinct file_id
from dba_extents
where owner='VCASH'
and segment_name='SI_ACCESS_RECORD'
);
看到autoextensible 都是 YES 可以扩展的,df -h 磁盘空间还有, 再看所有的数据文件都大小约31.9G
知识:
表空间数据文件容量与DB_BLOCK_SIZE的设置有关,此参数在创建数据库实例的时候指定。DB_BLOCK_SIZE参数可以设置为4K、8K、16K、32K、64K等(oracle默认是8k),Oracle的物理文件最大只允许4194304个数据块(这个参数具体由操作系统决定,一般应该是此数字),表空间数据文件的最大值可以通过4194304×DB_BLOCK_SIZE/1024M计算得到:
4k最大表空间为:16384M
8K最大表空间为:32768M
16k最大表空间为:65536M
32K最大表空间为:131072M
64k最大表空间为:262144M
查找 DB_BLOCK_SIZE
show parameter db_block_size 8192
所以目前表空虽然可以自动扩展,但数据文件已达到最大值32G,需要额外添加数据文件
ALTER TABLESPACE 表空间名 ADD DATAFILE '数据文件路径' SIZE 1G AUTOEXTEND ON NEXT 10M MAXSIZE [UNLIMITED | value_size ];