oracle数据库修改表空间数据文件大小,优化存储

oracle数据修改表空间数据⽂件⼤⼩,优化存储
查询数据⽂件存储使⽤情况霞石粉
/**  ⽰例1 只查询*/
select b.file_id  ⽂件ID,
  b.tablespace_name  表空间,
  b.file_name     物理⽂件名,
  b.bytes /1024/1024       总字节数,
  (b.bytes -sum(nvl(a.bytes, 0))) /1024/1024   已使⽤,
  sum(nvl(a.bytes, 0)) /1024/1024        剩余,
  round(sum(nvl(a.bytes, 0)) / (b.bytes) *100, 2)  剩余百分⽐  from dba_free_space a,
dba_data_files b   where a.file_id= b.file_id  group by b.tablespace_name,
b.file_name,
b.file_id,
b.bytes   order by b.tablespace_name;
/** ⽰例2 附带查询压缩脚本*/
select a.file#,
a.name,
a.bytes /1024/1024 CurrentMB,
ceil(HWM * a.block_size) /1024/1024 ResizeTo,
(a.bytes - HWM * a.block_size) /1024/1024 ReleaseMB,
'alter database datafile '''|| a.name ||''' resize '||
ceil(HWM * a.block_size) /1024/1024||'M;' ResizeCmd
from v$datafile a,
(SELECT file_id, MAX(block_id + blocks -1) HWM
FROM DBA_EXTENTS
GROUP BY file_id) b
where a.file# = b.file_id(+)
And (a.bytes - HWM * a.block_size) >0
and rownum <10
修改数据⽂件容量语句
alter database datafile 'D:\DSINSTALL\ORACLE\ORADATA\ORCL\USERS_DATA01.DBF' resize 10M;
汽车覆盖件模具楼主在此处遇见了⼀个问题,在清理了⼀⼤批数据后,发现表空间的存储⼤⼩基本没变,强⾏修改数据⽂件⼤⼩也不⾏,会提⽰“资源正在占⽤”,后⾯了解到,在删除数据时最好使⽤下列语句:
/* 清空表i数据*/
truncate table table_name;
注:不要使⽤delete删除,由于oracle⾃带回滚机制或者oracle处于数据保护机制,使⽤delete删除的数据oracle会临时保存,类似于假删除/回收站
/* 删除⽤户及附属数据*/
drop user user_name descade;
如果数据表曾经存在⼤数据情况下,还需要修改表的初始化STORAGE值,语句如下,该语句的含义是修改表/索引的初始值为64k,每次增长的幅度为32k
--表
select'ALTER TABLE '||owner||'.'||table_name||' MOVE TABLESPACE '||tablespace_name||' STORAGE(INITIAL 64K NEXT 32K);'
from dba_tables
where owner='AA'and initial_extent>65536
--索引
select'ALTER INDEX '||owner||'.'||index_name||' REBUILD STORAGE(INITIAL 64K NEXT 32K);'
from dba_indexes
where owner='AA'and initial_extent>65536
--分区表
肩垫select'ALTER table '||table_owner||'.'||table_name||' MOVE PARTITION '||PARTITION_NAME||' STORAGE(INITIAL 64K NEXT 32K);'
from DBA_tab_PARTITIONS
where table_owner='AA'and initial_extent>65536
--分区索引
硅片清洗
select'ALTER INDEX '||index_owner||'.'||index_name||' REBUILD PARTITION '||PARTITION_NAME||' STORAGE(INITIAL 64K NEXT 32K);'
from DBA_ind_PARTITIONS
where index_owner='AA'and initial_extent>65536
清空当前⽤户数据库表下存储⼤于1M的表数据脚本查询语句
石墨舟
select
'truncate table '|| segment_name||';',
bytes/1024/1024 MB,
u.*
from user_extents u
where bytes/1024/1024>1
查询数据库中各个表的实际数据存储使⽤情况select储热式电暖器
segment_name, sum(bytes)/1024/1024 MB
from user_extents u
group by segment_name

本文发布于:2024-09-21 02:47:14,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/224462.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   语句   修改
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议