ORA-1653- unable to extend table by 1024 in tablespace(oracle表空间满了的解决方案)

ORA-1653- unable to extend table by 1024 in tablespace(oracle表空间满了的解决方案)前言 今天某项目的一个 Repository 的正常 CRUD 操作 发现报错信息 ORA 1653 unable to extend table by 1024 in tablespace 什么意思呢 就是表空间已满 无法扩展 问题分析 USERS 表空间是默认用户表空间 在创建一个用户并没有指定此用户使用表空间时 该用户所有信息都会放入到 users 表空间中

大家好,我是讯享网,很高兴认识大家。

前言

今天某项目的一个Repository的正常CRUD操作,发现报错信息ORA-1653:unable to extend table by 1024 in tablespace,什么意思呢,就是表空间已满,无法扩展.

问题分析

USERS表空间是默认用户表空间,在创建一个用户并没有指定此用户使用表空间时,该用户所有信息都会放入到users表空间中,如果有指定则一般是用户名相关的表空.

--查看表空间文件 select file_name t from dba_data_files t where t.tablespace_name='xxxx'; --查看表记录大小 select t.tablespace_name,t.TABLE_NAME,t.NUM_ROWS from all_tables t where t.tablespace_name='xxxx' order by num_rows desc; --查看表空间大小 select t.file_name,t.tablespace_name,t.bytes/1024/1024 "bytes MB",t.maxbytes/1024/1024 "maxbytes MB" from t.dba_data_files where tablespace_name='xxx'; 

讯享网

查询使用xxx表空间的表,按行级降序排序,一般多个表使用相同表空间,存在大量数据导致USER表占满,像刚才查看的这个问题的表,超过一千万条记录.


讯享网

解决方案

  1. 扩展表空间: alter database datafile '/oracle/oradata/dba/users01.dbf' resize 30G;
  2. 扩展到最大30G文件无法继续扩展,可增加数据文件:alter tablespace users add datafile 'users02.dbf' size 1024m autoextend on next 1024m maxsize 30G;
  3. truncate删除无用表释放空间,假如未释放,对TEST表进行收缩shrink,执行下面三个语句:
讯享网-- 启用行迁移: alter table TEST enable row movement; -- shrink表test: alter TABLE TEST shrink SPACE; -- 关闭行迁移: alter table TEST DISABLE row movement; 

Oracle “高水位”

数据被删除后(无论是 delete 还是 truncate table),数据文件大小不一定会缩小, 是Oracle"高水位"所致,想要降低数据文件大小需降低高水位的正确做法是先降低HWM,再确定实际占有大小,再resize数据文件,执行如下4个语句:

  1. 查询表空间文件编号:select file#, name from v$datafile;
  2. 根据文件 ID 查询这个数据文件最大数据块(data block)的编号:select max(block_id) from dba_extents where file_id=4;
  3. 计算该表空间实际占用的空间,先查询数据块大小,默认是8192: select value from v$parameter where name='db_block_size'
  4. 计算实际占用磁盘大小: select 65673*8/1024 from dual;
  5. 把数据文件大小resize到比实际占用磁盘大小大一些就行了,这样数据文件大小就变小了,节约空间 :alter database datafile '/oracle/oradata/dba/users01.dbf' resize 600m;
  6. 需要使用的表,修改表空间alter table xxx move tablespace new_tablespace,建表时需养成习惯,指定好表空间.

更多详情可以参考 <<Oracle官方Changing Datafile Size>>

小讯
上一篇 2025-03-19 10:03
下一篇 2025-01-19 21:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/36158.html