首页 > 数据库 >Oracle表碎片分析

Oracle表碎片分析

时间:2023-08-03 22:14:41浏览次数:38  
标签:分析 1024 MB 碎片 SYS emp Oracle table

在Oracle运维的过程中,会经常遇到说表碎片严重的问题。表碎片严重会导致出现数据库的性能问题,在sql访问数据的时候需要消耗更多的资源,因此常常出现在数据库的优化中。想要获取表碎片的情况,计算方式和处理方式很重要。

1.计算表的碎片情况

  • 查看某个用户下表的碎片情况,查询信息的准确性依赖于统计信息的准确性,并不能反映表的碎片率。
set lines 199 pagesize 199
set COLSEP '|'
select d.owner,
       d.table_name,
       round((d.blocks * 8) / 1024, 2) "allocated MB",
       round((d.num_rows * d.avg_row_len / 1024 / 1024), 2) "used MB",
       round((d.blocks * 10 / 100) * 8 / 1024, 2) "reserved(d.pct_free) MB",
       round((d.blocks * 8 - (d.num_rows * d.avg_row_len / 1024) -d.blocks * 8 * 10 / 100) / 1024,2) "waste_MB"
  from dba_tables d
 where d.blocks * 8 / 1024 > 10
  -- and d.owner = 'SCOTT'
 order by 6 desc;
  • 使用脚本时替换上面注释掉的条件
OWNER   |TABLE_NAME     |allocated MB|   used MB|reserved(d.pct_free) MB|  waste_MB
--------|---------------|------------|----------|-----------------------|----------
SYS     |IDL_UB1$       |      266.02|        .9|                   26.6|    238.52
SYS     |IDL_UB2$       |       30.66|       .28|                   3.07|     27.32
SYS     |COLLECTION$    |       23.27|       .07|                   2.33|     20.87
SYS     |TYPE$          |       23.27|       .22|                   2.33|     20.72
SYS     |ATTRIBUTE$     |       23.27|       .73|                   2.33|     20.21
SYS     |RESULT$        |       18.03|       .13|                    1.8|      16.1
SYS     |METHOD$        |       18.03|       .18|                    1.8|     16.05
SYS     |PARAMETER$     |       18.03|       .69|                    1.8|     15.54
SYS     |JAVA$MC$       |       12.15|       .09|                   1.21|     10.85
SYS     |VIEWTRCOL$     |       11.15|         0|                   1.11|     10.03
SYS     |OPQTYPE$       |       11.15|       .01|                   1.11|     10.03

输出项说明如下:

"allocated MB"             代表实际的大小
 "used MB"                 真正使用的大小
 "reserved(d.pct_free) MB" 代表保留的大小,一般都是默认10%
 "waste_MB"                代表浪费的空间

如果想查看具体某张表的碎片情况,可以把where条件中的OWNER='SCOTT'换成table_name='表名’。

2.处理表空间的碎片问题

可以通过以下几种方式回收表的空闲空间。

第一种方式

alter table scott.emp move;
exec dbms_stats.gather_table_stats(ownname => 'SCOTT',tabname => 'EMP')
  • EMP换成需要回收的表名字
  • 回收之后需要重新收集表的统计信息,统计信息的收集方式可以参考
  • 统计信息收集完成之后,可以重启再重新检查一遍表碎片情况

第二种方式

alter table emp enable row  movement;
alter table emp shrink space cascade;
alter table emp disable row  movement;
exec dbms_stats.gather_table_stats(ownname => 'SCOTT',tabname => 'EMP')
  • EMP换成需要回收的表名字
  • 回收之后需要重新收集表的统计信息,统计信息的收集方式可以参考
  • 统计信息收集完成之后,可以重启再重新检查一遍表碎片情况

第三种方式

可以通过ctas的方式,重建碎片率高的表,如果创建过程中,源表有记录更改,那么数据可能存在不准确的情况

create table emp_temp as select * from emp;

标签:分析,1024,MB,碎片,SYS,emp,Oracle,table
From: https://www.cnblogs.com/shunqian/p/17604590.html

相关文章

  • Python 优化第一步: 性能分析实践 使用cporfile+gprof2dot可视化
    拿来主义:python-mcProfile-oprofile.pstatsto_profile.pygprof2dot-fpstatsprofile.pstats|dot-Tpng-oclick.png然后顺着浅色线条优化就OK了。 windows下:google下graphviz-2.38.msi,然后安装。dot命令需要。gitclone https://github.com/jrfonseca/gprof2dot.git......
  • 基于区块链技术结合联邦学习技术的安全医疗5.0系统 论文分析
    名词解释:IOMT(InternetofMedicalThings):医疗物联网,是将IOT技术应用到医疗保健领域的产物。其重点是连接医疗设备与系统,实现医疗信息和数据的可连接和交换。ML(MachineLearning):机器学习-典型的机器学习任务包括分类、回归、聚类等。常用算法有线性回归、决策树、支持......
  • Woreflint恶意软件c2分析
    WhatisTrojan:Win32/Woreflint.A!clinfection?InthisshortarticleyouwillcertainlydiscoverconcerningthedefinitionofTrojan:Win32/Woreflint.A!clandalsoitsnegativeeffectonyourcomputersystem.Suchransomwareareaformofmalwarethatiscl......
  • Backdoor:Win32/Noancooe 使用IDA进行恶意软件分析
    Backdoor:Win32/Noancooe先看下微软官方怎么说这个恶意软件:DetectedbyMicrosoftDefenderAntivirusAliases:Trojan-Ransom.Win32.Foreign.muyq(Kaspersky)SummaryWindowsDefenderdetectsandremovesthisthreat.Thisthreatcangiveamalicioushackerunauthorize......
  • 数据分析的提升,通过领羊QuickBI数据功能可以简化
    随着大数据时代的到来,越来越多的企业开始意识到数据分析的重要性。他们利用大数据分析来研究市场变化趋势,以调整并优化企业的发展策略。同时,根据市场数据的反馈,企业能够实时评估自己经营决策的效果,从而支持持续发展。在这种背景下,国内自主开发的数据处理工具,例如瓴羊QuickBI,引起了......
  • 【专题】2022年中国母婴用品行业分析报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=31424人口出生红利消失,以及后疫情时代的冲击,但消费升级将负面因素拉平,母婴消费市场总量持续稳步上升。"精致妈妈"的营销价值日益凸显。阅读原文,获取专题报告合集全文,解锁文末56份母婴行业相关报告。当母婴人群成为众多母婴及家庭消费品的重要入口群......
  • 销售分析III
    Table:Product+--------------+---------+|ColumnName|Type|+--------------+---------+|product_id|int||product_name|varchar||unit_price|int|+--------------+---------+Product_id是该表的主键。该表的每一行显示每个产品的名......
  • 三个实例演示 Java Thread Dump 日志分析
    jstackDump日志文件中的线程状态dump文件里,值得关注的线程状态有:死锁,Deadlock(重点关注) 执行中,Runnable  等待资源,Waitingoncondition(重点关注) Waitingonmonitorentry(重点关注)暂停,Suspended对象等待中,Object.wait()或TIMED_WAITING阻塞,Blocked(重点关注)......
  • nginx记录分析网站响应慢的请求(ngx_http_log_request_speed)
    nginx模块ngx_http_log_request_speed可以用来找出网站哪些请求很慢,针对站点很多,文件以及请求很多想找出哪些请求比较慢的话,这个插件非常有效.作者的初衷是写给自己用的,用来找出站点中处理时间较长的请求,这些请求是造成服务器高负载的很大根源.日志记录之后,在使用perl脚本分析......
  • 快餐数据分析--Python数据分析实例
    1、读取数据importpandasaspddf=pd.read_csv('快餐数据.tsv',sep='\t')print(df)2、查看基本信息查看前五条数据df.head()查看整体信息df.info()可以看到,一共有4622条数据,只有choice_description列有缺失值,item_price为object类型是因为价格前面有$符号。打印列名......