Oracle 缩容量方法 --转发 https://www.modb.pro/db/1873006442018521088?utm_source=index_ai

news/2025/2/11 10:56:56/文章来源:https://www.cnblogs.com/zclzc/p/18709358

 

1.系统表空间清理

SYSAUX表空间被称为系统辅助表空间,主要的目的是为SYSTEM表空间减负。

 

1.1 表空间的使用率

比如大表大部分都是AUD$和WRH$开头的AWR基表,
AUD$使用SYSTEM表空间,
AWR的基表使用SYSAUX表空间。

SELECT df.tablespace_name, COUNT (*) datafile_count,
ROUND (SUM (df.BYTES) / 1048576) size_mb,
ROUND (SUM (free.BYTES) / 1048576, 2) free_mb,
ROUND (SUM (df.BYTES) / 1048576 - SUM (free.BYTES) / 1048576, 2 ) used_mb,
ROUND (MAX (free.maxbytes) / 1048576, 2) maxfree,
100 - ROUND (100.0 * SUM (free.BYTES) / SUM (df.BYTES), 2) pct_used,
ROUND (100.0 * SUM (free.BYTES) / SUM (df.BYTES), 2) pct_free
FROM dba_data_files df,
(SELECT tablespace_name, file_id, SUM (BYTES) BYTES, MAX (BYTES) maxbytes FROM dba_free_space GROUP BY tablespace_name, file_id) free
WHERE df.tablespace_name = free.tablespace_name(+)
AND df.file_id = free.file_id(+)
and df.tablespace_name IN ('SYSAUX','SYSTEM')
GROUP BY df.tablespace_name

使用SYSTEM和SYSAUX表空间的比较大的表有哪些呢?

select * from (
select segment_name,sum(bytes)/1024/1024 total_mb,tablespace_name from dba_segments where tablespace_name in
('SYSTEM','SYSAUX')
group by segment_name,tablespace_name order by 2 desc)
where rownum <=20;

SELECT occupant_name "Item",
space_usage_kbytes / 1048576 "Space Used (GB)",
schema_name "Schema",
move_procedure "Move Procedure"
FROM v$sysaux_occupants
ORDER BY 1 ;

 

1.2 AUD$清理

先清理审计的数据,一般先迁移表空间即可,
如果空间不够,可以清空AUD$

--清空表
TRUNCATE TABLE SYS.AUD$ reuse storage;

--迁移审计表空间
BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
audit_trail_location_value => 'TBS_AUDIT');
END;
/

BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,
audit_trail_location_value => 'TBS_AUDIT');
END;
/

SELECT table_name, tablespace_name
FROM dba_tables WHERE table_name IN ('AUD$', 'FGA_LOG$')
ORDER BY table_name;

select bytes/1024/1024
from dba_segments
where segment_name='AUD$';

--自动清理策略
BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY
(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
audit_trail_property => DBMS_AUDIT_MGMT.OS_FILE_MAX_SIZE,
audit_trail_property_value => 102400 /* 100MB*/ \
);
END;
/
BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY
(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
audit_trail_property => DBMS_AUDIT_MGMT.OS_FILE_MAX_AGE,
audit_trail_property_value => 5 /* days */
);
END;
/

 

1.3 AWR的基表清理

SYSAUX表空间过多的大部分都是AWR的基表,这样只要删除部分AWR数据理论上就可以回收一部分SYSAUX表空间。


清理WRH$_ACTIVE_SESSION_HISTORY和
WRH$_EVENT_HISTOGRAM两张表

1.清理WRH$_ACTIVE_SESSION_HISTORY
通常AWR的数据都会设置保留期限
select * from dba_hist_wr_control;
select count(*) from
WRH$_ACTIVE_SESSION_HISTORY;


AWR表未根据sys.wrm$_wr_control中的设置进行清除。
因此,表正在积累越来越多的行,与这些表关联的段变得非常大
见Doc ID 387914.1


使用DBMS_WORKLOAD_REPOSITORY包
清理过期或者不需要的AWR数据,可以回收这部分空间
select min(snap_id),max(snap_id)
from wrh$_active_session_history;

exec DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE
(
low_snap_id =>1,
high_snap_id => 30000
);

--回收分区水位线
SELECT owner,
segment_name,
partition_name,
segment_type,
bytes/1024/1024/1024 Size_GB
FROM dba_segments
WHERE segment_name='WRH$_ACTIVE_SESSION_HISTORY';

分区进行MOVE操作,来回收空间:
alter table WRH$_ACTIVE_SESSION_HISTORY
move partition WRH$_ACTIVE_SESSION_HISTORY_3996260375_4090;

分区表进行MOVE之后,需要重建索引
select index_name
from dba_indexes
where table_name='WRH$_ACTIVE_SESSION_HISTORY';

select partition_name from dba_ind_partitions
where index_name='WRH$_ACTIVE_SESSION_HISTORY_PK';

alter index WRH$_ACTIVE_SESSION_HISTORY_PK
rebuild partition WRH$_ACTIVE_SESSION_HISTORY_3996260375_4090;

2.清理WRH$_EVENT_HISTOGRAM
select partition_name
from dba_tab_partitions
where table_name='WRH$_EVENT_HISTOGRAM';

分区进行MOVE操作,来回收空间
alter table WRH$_EVENT_HISTOGRAM
move partition WRH$_EVENT_HISTOGRAM_3996260375_4090;

分区表进行MOVE之后,需要重建索引
select index_name
from dba_indexes
where table_name='WRH$_EVENT_HISTOGRAM';

select partition_name from dba_ind_partitions
where index_name='WRH$_EVENT_HISTOGRAM_PK;

alter index WRH$_EVENT_HISTOGRAM_PK
rebuild partition WRH$_EVENT_HISTO_MXDB_MXSN;

 

 

1.4 统计信息保留时间

修改统计信息的保持时间,默认为31天,这里修改为7天,过期的统计信息会自动被删除

select
dbms_stats.get_stats_history_retention
from dual;

exec
dbms_stats.alter_stats_history_retention(7);

 

 

2. 降低水位线

水位线影响查询速度,因为这样的表本身比较大,索引也会很大,查询会很慢。消耗资源,因为表和索引都很大,查询时会消耗很多I/O资源,空间占用,所以要定期来降低水位线。

 

 

2.1 缩小数据文件

set verify off
column file_name format a50 word_wrapped
column smallest format 999,990 heading "Smallest|Size|Poss."
column currsize format 999,990 heading "Current|Size"
column savings format 999,990 heading "Poss.|Savings"
break on report
compute sum of savings on report
column value new_val blksize
select value from v$parameter where name = 'db_block_size';
/
select file_name,
ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest,
ceil( blocks*&&blksize/1024/1024) currsize,
ceil( blocks*&&blksize/1024/1024) -
ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings
from dba_data_files a,
( select file_id, max(block_id+blocks-1) hwm
from dba_extents
group by file_id ) b
where a.file_id = b.file_id(+) order by savings desc
/

alter
database
datafile '/oracle/app/oradata/ORCL/data01.dbf'
resize 3800M;

如果低于HWM,则会出现以下报错
ORA-03297: file contains used data beyond requested RESIZE value

 

2.2 Shrink

1)Enable row movement.
ALTER TABLE scott.emp ENABLE ROW MOVEMENT

2)Recover space and amend the high water mark (HWM).
ALTER TABLE scott.emp SHRINK SPACE

3)Recover space, but don't amend the high water mark (HWM)
ALTER TABLE scott.emp SHRINK SPACE COMPACT

4)Recover space for the object and all dependant objects.
ALTER TABLE scott.emp SHRINK SPACE CASCADE

--收缩LOB
ALTER TABLE table_name MODIFY LOB(lob_column) (SHRINK SPACE);
ALTER TABLE table_name MODIFY LOB(lob_column) (SHRINK SPACE CASCADE);

 

 

2.3 LOB move表空间

将MOVE到相同的表空间
ALTER TABLE lob_tab MOVE LOB(data)
STORE AS (TABLESPACE users);

 

 

3. 索引重建

3.1 分区及非分区重建索引

--分区
alter index xx.xxx rebuild partition xxx online parallel 4;
ALTER INDEX xx.xxx NOPARALLEL;

--非分区
alter index xx.xxx rebuild online parallel 4;
ALTER INDEX xx.xxx NOPARALLEL;

 

 

3.2 清理索引创建失败信息

declare
isClean boolean;
begin
isClean := FALSE;
while isClean=FALSE loop
isClean := dbms_repair.online_index_clean(dbms_repair.all_index_id,
dbms_repair.lock_wait);
dbms_lock.sleep(2);
end loop;
exception
when others then
RAISE;
end;
/

 

 

4.LOB字段

4.1 收缩

ALTER TABLE
table_name MODIFY LOB(lob_column) (SHRINK SPACE);
ALTER TABLE table_name
MODIFY LOB(lob_column) (SHRINK SPACE CASCADE);

 

4.2 移动表空间

ALTER TABLE
lob_tab MOVE LOB(data) STORE AS (TABLESPACE users);

 

总结

Oracle数据库的“瘦身”通常指的是通过各种手段来减少数据库的存储占用,提高存储利用率,从而提升数据库的性能和稳定性。

在进行数据库瘦身之前,首先需要明确瘦身的目标和需求。这可能包括减少存储占用、提高查询性能、优化备份和恢复过程等。明确目标有助于制定合适的瘦身策略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/882006.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

轻松上手!小白必看:在你的个人电脑上安装DeepSeek R1 大模型

deepseek本地化部署,小白教程,让你的个人电脑也能安装运行大模型!一、deepseek简介 DeepSeek是一个强大的工具,它就像一个聪明的助手,能帮我们处理和分析大量信息。它适用于各种场合,比如理解文字、识别图片,还能根据你的喜好推荐东西。 这个工具很灵活,就像乐高积木,…

macOS Sequoia 15.3.1 (24D70) 正式版 ISO、IPSW、PKG 下载

macOS Sequoia 15.3.1 (24D70) 正式版 ISO、IPSW、PKG 下载macOS Sequoia 15.3.1 (24D70) 正式版 ISO、IPSW、PKG 下载 iPhone 镜像、Safari 浏览器重大更新和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接:https://sysin.org/blog/macOS-Sequoia/…

macOS Sequoia 15.3.1 (24D70) Boot ISO 原版可引导镜像下载

macOS Sequoia 15.3.1 (24D70) Boot ISO 原版可引导镜像下载macOS Sequoia 15.3.1 (24D70) Boot ISO 原版可引导镜像下载 iPhone 镜像、Safari 浏览器重大更新和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接:https://sysin.org/blog/macOS-Sequoi…

如何利用看板工具,让项目进度一目了然?

使用看板评估项目进度需要经历准备、实施、评估与分析以及持续改进与优化等多个阶段。通过合理利用看板工具,团队可以更加高效地管理项目进度,提高项目管理的透明度和协作效率。看板工具最早起源于20世纪50年代的日本丰田生产系统,如今已被广泛应用于软件开发、产品管理、市…

ABB IRB360并联机器人|abb蜘蛛手维修

ABB IRB360并联机器人(也被称为蜘蛛手机器人)发挥着极为重要的作用。然而,如同所有的机械设备一样,它也会面临需要维修的情况。对ABB IRB360并联机器人进行有效的维修不仅能延长其使用寿命,还能确保工业生产的高效进行。一、ABB IRB360并联机器人的结构与常见故障1. 结构特…

为何焦点已从 AI 代理转向AI辅助人类工作模式

前言:随着AI技术的发展,AI行业从AI代理转向了‘AI辅助人类工作模式’。虽然AI代理在演示中很有潜力,但在实际使用时,它的准确性和可靠性远低于人类,限制了它的应用。相反,‘AI辅助人类工作模式’通过将复杂任务拆分成小步骤,帮助人类更高效地完成工作,推动了数据整理和…

CentOS7 离线安装docker环境

1、系统要求 首先需要确定 CentOS7 的内核版本号,因为 docker 安装要求 Linux 内核版本在 3.10 及以上。查看内核版本号: uname -r查看系统名称: cat /etc/redhat-release2、下载Docker Docker官网:Docker: Accelerated Container Application Development Docker引擎安装说…

烟草行业如何用低代码+ BI 实现数字化转型?

在数字经济的大潮中,烟草行业正迎来重大的发展契机。国家层面的政策引导和战略规划为行业的数字化转型提供了明确的方向。《数字中国》的愿景逐步变为现实,国家信息化发展战略的深入推进,为烟草行业的智能化、网络化发展提供了强劲的动力。基于全国烟草工作会议重点的指导方…

鸿蒙开发 - 支持导出,跨文件使用的自定义样式 AttributeModifier

我们在自定义组件的时候,无论是用 @Styles 还是 @Extend,都很难真正做到独立的封装样式,因为这两者都不支持导出,不可以跨文件调用 这篇文章主要介绍一个接口 AttributeModifier,它很好的解决了这些弊端,可以实现样式的集中管理和复用,支持跨文件调用封装好的样式类 Att…

滑坡监测识别摄像机

滑坡监测摄像机能够24小时不间断地拍摄特定区域,并将实时画面传输到控制中心。这一功能确保了对潜在滑坡区域的持续关注,可以第一时间发现异常情况。通过集成深度学习算法,这些摄像机可以自动分析捕捉到的视频数据。例如,当检测到土壤位移或岩石崩落时,系统会立即发出警报…

『玩转Streamlit』--会话状态管理

在Web应用开发中,会话管理是一个至关重要的概念,它能够帮助开发者追踪用户在应用中的行为和状态,从而为用户提供更加个性化、连贯且高效的交互体验。 Streamlit作为一个简单而强大的用于快速构建和部署数据科学和机器学习项目,也提供了强大的会话状态管理功能,即st.sessio…

深度学习四大名著-蜥蜴书-《机器学习实战:基于Scikit-Learn、Keras和TensorFlow 原书第3版 中文版+英文版》PDF、EPUB免费下载

深度学习四大名著全新升级版,为机器学习落地实践提供翔实指导,Keras之父鼎力推荐。 这本机器学习畅销书基于TensorFlow 2和Scikit-Learn的新版本进行了全面更新,通过具体的示例、非常少的理论和可用于生产环境的Python框架,从零帮助你直观地理解并掌握构建智能系统所需要的…