TRUNCATE TABLE后 SEGMENT_SIZE没变 ?
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,测试环境中,历史的交易表可以清空,仅需保留表结构。于是想通过TRUNCATE清理空间,结果发现TRUNCATE 之后,SEGMENT 的大小并没有改变。查询发现,是由于该表的INITIAL_EXTEN
千家信息网最后更新 2025年01月22日TRUNCATE TABLE后 SEGMENT_SIZE没变 ?
测试环境中,历史的交易表可以清空,仅需保留表结构。
于是想通过TRUNCATE清理空间,结果发现TRUNCATE 之后,SEGMENT 的大小并没有改变。
查询发现,是由于该表的INITIAL_EXTENT本来就很大
SQL> select TABLE_NAME,INITIAL_EXTENT from dba_tables where TABLE_NAME='TRANLOG_201610';TABLE_NAME INITIAL_EXTENT------------------------------ --------------TRANLOG_201610 1409286144TRANLOG_201610 65536
那到底是为什么这个INITIAL_EXTENT这么大呢?
查询了一下该表的建表语句
select dbms_metadata.get_ddl('TABLE','TRANLOG_201610','ECITY') mb from dual; CREATE TABLE "ECITY"."TRANLOG_201610" ( "MERID" CHAR(3) NOT NULL ENABLE, "ORDERNO" VARCHAR2(64) NOT NULL ENABLE, ....... USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 226492416 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "TS_ECITYDB" ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 1409286144 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "TS_ECITYDB"
可以看到,建表的时候,这个INITIAL 设置太大了
SQL> select 1409286144/1024/1024 from dual;1409286144/1024/1024-------------------- 1344SQL> ALTER TABLE ECITY.TRANLOG_201610 MOVE STORAGE(INITIAL 65536 NEXT 65536);Table altered.SQL> select TABLE_NAME,INITIAL_EXTENT/1024/1024 MB from dba_tables where TABLE_NAME='TRANLOG_201610';TABLE_NAME MB------------------------------ ---------------TRANLOG_201610 0TRANLOG_201610 0SQL>
进行这个操作之后,会让索引失效,记得要重建索引。所以生产环境上慎用!!!
案例测试:
create table t1 (x int CONSTRAINT pk_t primary key,y number) STORAGE(INITIAL 1409286144 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "TS_ECITYDB";create table t1 (x int CONSTRAINT pk_t primary key,y number) STORAGE(INITIAL 1409286144 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "TS_ECITYDB"SQL> insert into t1 values (1,1);SQL> insert into t1 values (2,1);SQL> insert into t1 values (3,2);SQL> COMMITSQL> SELECT B.index_name,B.table_owner,B.table_name,B.status FROM DBA_INDEXES B where table_owner='ECITY' and table_name='T1'; INDEX_NAME TABLE_OWNER TABLE_NAME STATUS---------------------------------------- -------------------- ---------- ------------------------PK_T ECITY T1 VALIDT1_Y ECITY T1 VALIDSQL> ALTER TABLE ECITY.T1 MOVE STORAGE(INITIAL 65536 NEXT 65536);Table altered.SQL> SELECT B.index_name,B.table_owner,B.table_name,B.status FROM DBA_INDEXES B where table_owner='ECITY' and table_name='T1'; INDEX_NAME TABLE_OWNER TABLE_NAME STATUS---------------------------------------- -------------------- ---------- ------------------------PK_T ECITY T1 UNUSABLET1_Y ECITY T1 UNUSABLESQL> SQL> SELECT B.index_name,B.table_owner,B.table_name,B.status FROM DBA_INDEXES B where table_owner='ECITY' and table_name='T1';INDEX_NAME TABLE_OWNER TABLE_NAME STATUS---------------------------------------- -------------------- ---------- ------------------------PK_T ECITY T1 VALIDSQL> ALTER TABLE ECITY.T1 MOVE STORAGE(INITIAL 65536 NEXT 65536);Table altered.SQL> SELECT B.index_name,B.table_owner,B.table_name,B.status FROM DBA_INDEXES B where table_owner='ECITY' and table_name='T1';INDEX_NAME TABLE_OWNER TABLE_NAME STATUS---------------------------------------- -------------------- ---------- ------------------------PK_T ECITY T1 UNUSABLESQL>SELECT B.index_name,B.table_owner,B.table_name,B.status FROM DBA_INDEXES B where status='UNUSABLE' and table_owner='ECITY';SELECT DISTINCT 'ALTER INDEX ' || INDEX_NAME || ' REBUILD;' FROM DBA_INDEXES B where status='UNUSABLE' and table_owner='ECITY';
环境
索引
查询
测试
很大
仅需
历史
大小
时候
案例
空间
结构
结果
语句
交易
生产
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
从不同文件导入数据库
脑血管病公共数据库
3d打样软件开发教程
电脑可以开网络技术服务费发票吗
macm1管理云端服务器
db2数据库视频
学术数据库免费使用案例
学校网络安全教育宣传报道
2020年国家网络安全时间
银川网络技术是什么
软件开发应届生自我介绍
重庆大数据软件开发大概多少钱
服务器如何设置账号密码
对网络安全设备进行poc测试
网络安全找什么部门
机械臂软件开发公司
葫芦岛系统软件开发
一年一度网络安全周
web中链接数据库
数据库管理系统和应用软件哪个好
虚拟机安装什么服务器
大青云连接数据库失败
hp服务器硬件
软件开发用平面设计吗
城阳区安卓软件开发哪家好
四川电视墙服务器怎么安装
荒野行动用什么编程软件开发的
石狮软件开发有限公司
云数据库如何管理
异地数据库会卡吗