主要针对表数据被delete后,而表空间不能被释放的情况
手工释放表空间
alter table cbsd_log_t enable row movement;
alter table cbsd_log_t shrink space
查看数据库表的对象脚本
SQL> select dbms_metadata.get_ddl('TABLE','TABLE_NAME','SCHEMA') from dual;
PCTUSE需要设置为40,如果是0会导致delete语句不释放表空间
========================================================================
最近,项目上ORACLE数据库越来越大,需要查看下数据库数据量占用大的原因。
1、查看ORACLE表空间及表数据大小
Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents group By Segment_Name order by Sum(bytes)/1024/1024 desc;
2、从返回的结果看,有一个segment名为"SYS_LOB0000053810C00004$$"的对象占用了大量的空间;即LOB(BLOB和CLOB)对象占用的大小对象
3、根据segment_name,就可以从 dba_lobs 表里查到是哪个表,哪个字段;
select * from dba_lobs where segment_name like 'your_segment_name';
里面显示的TABLE_NAME和COLUMN_NAME为表名和字段名。
手工释放表空间
alter table cbsd_log_t enable row movement;
alter table cbsd_log_t shrink space
查看数据库表的对象脚本
SQL> select dbms_metadata.get_ddl('TABLE','TABLE_NAME','SCHEMA') from dual;
PCTUSE需要设置为40,如果是0会导致delete语句不释放表空间
========================================================================
最近,项目上ORACLE数据库越来越大,需要查看下数据库数据量占用大的原因。
1、查看ORACLE表空间及表数据大小
Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents group By Segment_Name order by Sum(bytes)/1024/1024 desc;
2、从返回的结果看,有一个segment名为"SYS_LOB0000053810C00004$$"的对象占用了大量的空间;即LOB(BLOB和CLOB)对象占用的大小对象
3、根据segment_name,就可以从 dba_lobs 表里查到是哪个表,哪个字段;
select * from dba_lobs where segment_name like 'your_segment_name';
里面显示的TABLE_NAME和COLUMN_NAME为表名和字段名。