我的编程空间,编程开发者的网络收藏夹
学习永远不晚

oracle 表碎片整理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

oracle 表碎片整理

又是一年双11,双十一对从事电商的it人员来说是一场噩梦,这个只是前奏,下面说重点:
表碎片整理,首先收集那些表需要做碎片整理:
1.1根据统计信息检查表碎片:

SELECT table_name,
ROUND ( (blocks 8), 2) "高水位空间 k",
ROUND ( (num_rows
avg_row_len / 1024), 2) "真实使用空间 k",
ROUND ( (blocks 10 / 100) 8, 2) "预留空间(pctfree) k",
ROUND ( ( blocks 8 - (num_rows avg_row_len / 1024) - blocks 8 10 / 100), 2) "浪费空间 k"
FROM user_tables
WHERE temporary = 'N'
ORDER BY 5 DESC;

1.2. 是和业务开发人员沟通那些主要的业务表做了大量的delete、update操作,确定要整理的表范围。

2.1.下面是碎片整理步骤:

alter table app_info enable row movement; --打开行移动
alter table app_info shrink space cascade; --压缩表及相关数据段并下调HWM (此步骤会影响业务)
alter table app_info shrink space compact; --只压缩不下调HWM
alter table app_info shrink space ; --下调HWM (此步骤会影响业务)
alter table app_info disable row movement; --关闭行移动

其中alter table app_info shrink space compact; alter table app_info shrink space ; 两个步骤等于alter table app_info shrink space cascade; 操作

注意:
IOT索引组织表、用rowid创建的物化视图的基表、带有函数索引的表、SECUREFILE 大对象、压缩表不能使用Shrink 操作。
3.1 整理完碎片后最好重新收集统计信息:

begin
dbms_stats.gather_table_stats(ownname => 'chunqiu',tabname => 'app_info',cascade => true);
end;

4.1下面为写在plsql语句块中的参考,为下面脚本准备:
begin
EXECUTE IMMEDIATE 'alter table app_info shrink space ';
EXECUTE IMMEDIATE 'alter table app_info disable row movement ';
end;

5.1如果表很多怎么办?,特备是最后的下调高水位线基本上都需要在晚上业务低峰期操作,甚至有的会申请挂免战牌,下面写个脚本批量处理加上定时任务,可以让dba们节约时间好好休息下:
create table T_TABALE
(
table_name VARCHAR2(200) not null,
compact_status NUMBER default 0 not null,
shrink_status NUMBER default 0 not null
);
alter table T_TABALE add constraint PK_T_TABALE primary key (TABLE_NAME);
把要整理的表名字插入到该表。

5.1.先开启row movement:
BEGIN
FOR i IN (select table_name from T_TABALE ) LOOP
EXECUTE IMMEDIATE 'alter table ' || i.table_name ||' enable row movement ' ;
END LOOP;
END;

5.2.整理碎片:

BEGIN
FOR i IN (select table_name from T_TABALE where compact_status = 0 ) LOOP
begin
EXECUTE IMMEDIATE 'alter table ' || i.table_name ||' shrink space compact ' ;
update T_TABALE set status = 1 where table_name = i.table_name ;
commit;
EXCEPTION WHEN OTHERS THEN null;
END;
END LOOP;
END;
5.3.降低高水位,步骤最好结合定时任务放在晚上执行:
这个可以写个定时任务,晚上执行
BEGIN
FOR i IN (select table_name from T_TABALE where compact_status = 0 ) LOOP
begin
EXECUTE IMMEDIATE 'alter table ' || i.table_name ||' shrink space ' ;
update T_TABALE set shrink_status = 1 where table_name = i.table_name ;
commit;
EXCEPTION WHEN OTHERS THEN null;
END;
END LOOP;
END;

5.5 关闭row movement:
BEGIN
FOR i IN (select table_name from T_TABALE ) LOOP
BEGIN
EXECUTE IMMEDIATE 'alter table ' || i.table_name ||' disable row movement ' ;
END LOOP;
END;

6.1 最后别忘了收集下统计信息,收集统计信息的批量脚本自己实现吧。

突然想起来了,供参考:
BEGIN
FOR i IN (select blocks*8/1024/1024 ,table_name from dba_tables where table_name in(select table_name from pacs.T_TABALE where status = 11 ) order by 1 ) LOOP
begin
EXECUTE IMMEDIATE 'begin dbms_stats.gather_table_stats(ownname =>' || '''pacs'''|| ', tabname => ''' || i.table_name || '''' || ' ,cascade => true) ; end; ' ;
update pacs.T_TABALE set status = 12 where table_name = i.table_name ;
commit;
-- EXCEPTION WHEN OTHERS THEN null;
END;
END LOOP;
END;

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

oracle 表碎片整理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Win 2000磁盘碎片整理

电脑使用久了,磁盘上保存了大量的文件,这些文件并非保存在一个连续的磁盘空间上,而是把一个文件分散的放在许多地方,这些零散的文件被称作“磁盘碎片”,这些碎片会降低整个Windows的性能NMWzHbHwpN。于是Win
2023-05-23

MySQL InnoDB表的碎片量化和整理(data free能否用来衡量碎片?)

网络上有很多MySQL表碎片整理的问题,大多数是通过demo一个表然后参考data free来进行碎片整理,这种方式对myisam引擎或者其他引擎可能有效(本人没有做详细的测试).对Innodb引擎是不是准确的,或者data free是不是可以参考,还是值得商
MySQL InnoDB表的碎片量化和整理(data free能否用来衡量碎片?)
2021-08-24

SQL级别索引碎片整理

SQL级别索引碎片整理是指对数据库中的索引进行整理、优化,以提高数据库查询性能和减少存储空间的过程。索引碎片是指索引中的数据并非按照物理存储顺序排列的情况,造成查询效率低下,整理索引碎片可以提高查询效率和减少存储空间的占用。索引碎片整理可
SQL级别索引碎片整理
2024-08-03

win10如何整理磁盘碎片

本篇内容介绍了“win10如何整理磁盘碎片”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!win10磁盘碎片的整理步骤1、双击打开“此电脑”,
2023-07-01

win7磁盘碎片怎么整理

这篇文章主要介绍“win7磁盘碎片怎么整理”,在日常操作中,相信很多人在win7磁盘碎片怎么整理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win7磁盘碎片怎么整理”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-28

ubuntu磁盘碎片如何整理

在Ubuntu中,可以使用e4defrag命令来整理磁盘碎片。e4defrag是ext4文件系统的碎片整理工具。首先,打开终端(Ctrl + Alt + T)。然后,使用以下命令安装e4defrag工具:```sudo apt update
2023-08-24

win7磁盘如何整理碎片

小编给大家分享一下win7磁盘如何整理碎片,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!整理方法:首先点击页面底部的“开始”菜单按钮,在弹出的菜单栏中点击“所有程
2023-06-15

win10磁盘碎片如何整理

这篇文章主要介绍“win10磁盘碎片如何整理”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win10磁盘碎片如何整理”文章能帮助大家解决问题。win10磁盘碎片整理教程删除临时文件:1、在任务栏上的
2023-01-29

Linux上没有磁盘碎片清理功能怎么整理磁盘碎片

这篇文章主要介绍“Linux上没有磁盘碎片清理功能怎么整理磁盘碎片”,在日常操作中,相信很多人在Linux上没有磁盘碎片清理功能怎么整理磁盘碎片问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux上没有磁
2023-06-13

编程热搜

目录