oracle 表空间 碎片,Oracle表空间碎片整理
作为影响数据库性能的一个因素,数据库表空间碎片,应当引起DBA的重视,及时发现并整理碎片是DBA基本维护内容,以提高数据库性能。
Oracle数据库表空间、段、区、块简述
表空间(tablesapce)
表空间是数据库中的基本逻辑结构,一组数据文件的集合。一个表空间可以包含多个数据文件,但是一个数据文件只能属于一个表空间。
段(segment)
段是对象在数据库中占用的空间,虽然段和数据库对象是一一对应的,但段是从数据库存储的角度来看的。一个段只能属于一个表空间,一个表空间可以有多个段。
表空间和数据文件是物理存储上的一对多的关系,表空间和段是逻辑存储上的一对多的关系,段不直接和数据文件发生关系。一个段可以属于多个数据文件(段可以跨数据文件)。从dba_segments视图中,可以比较清楚看清数据段的结构。
常用的段可以分为以下四种:
数据段(Data Segment)
索引段(Index Segment)
回滚段(Rollback Segment)
临时段(Temporary Segment)
区间(Extent)
在一个段中可以存在多个区间,区间是为数据一次性预留的一个较大的存储空间,直到那个区间被用满,数据库会继续申请一个新的预留存储空间,即新的区间,一直到段的最大区间数(Max Extent)或没有可用的磁盘空间可以申请。区不可以跨数据文件。视图dba_extents(或者all_extents、user_extents)查看分区结构和存储构成。
数据块(Block)
Oracle最基本的存储单位,Oracle的操作都是以块为基本单位,一个区间可以包含多个块。块的大小在建立数据库时候指定,可以查看DB_BLOCK_SIZE参数,根据实际需要,设置为 4K、8K、16K、32K、64K等几种大小。
理想的情况是在表空间中有一个大的空闲区段(extent)。表空间中的空闲空间越多,就越有可能遇到碎片问题。free extent的大小也非常重要。如果有很多小区段(对于下一个区段大小太小),但是空闲空间的总字节数很大,那么可能需要考虑碎片整理。
表空间碎片的产生
一个段包含多个区的情况是普遍存在的,没有任何措施可以保证这些区是相邻存储的。当要满足一个空间分配要求时,数据库不再合并相邻的free space(除非别无选择),而是寻找表空间中最大的自由范围来使用。这样将逐渐形成越来越多的离散的、分隔的、较小的自由空间,即碎片。
表空间碎片的影响
1)导致系统性能减弱
当要满足一个空间要求时,数据库将首先查找当前最大的free space,而 " 最大 " 自由范围逐渐变小,要找到一个足够大的自由范围已变得越来越困难,从而导致表空间中的速度障碍,使数据库的空间分配愈发远离理想状态;
2)浪费大量的表空间
尽管有一部分自由范围(如表空间的pctincrease为非0)将会被SMON(系统监控)后台进程周期性地合并,但始终有一部分自由范围无法得以自动合并,浪费了大量的表空间。
查看表空间碎片的方法
1)由空间碎片是由几部分组成,如范围数量、最大范围等,我们可用 FSFI--Free Space Fragmentation Index (自由空间碎片索引)值来体现。
FSFI=100*SQRT(max(extent)/sum(extents))*1/SQRT(SQRT(count(extents)))
FSFI的最大可能值为100(一个理想的单文件表空间)。随着范围的增加,FSFI值缓慢下降,而随着最大范围尺寸的减少, FSFI值会迅速下降。数字越小,表空间碎片较多,当小于30%的时候说明碎片程度严重,就需要做碎片整理了。
select a.tablespace_name,
sqrt(max(a.blocks) sum(a.blocks)) *
(100 / sqrt(sqrt(count(a.blocks)))) FSFI
from dba_free_space a, dba_tablespaces b
where a.tablespace_name = b.tablespace_name
and b.contents not in ('TEMPORARY', 'UNDO')
group by a.tablespace_name
order by 2;
2)dba_free_space 显示的是有free空间的tablespace,如果一个tablespace的free 空间不连续,那每段free空间都会在dba_free_space中存在一条记录。如果一个tablespace有好几条记录,说明表空间存在碎片,当采用字典管理的表空间碎片超过500就需要对表空间进行碎片整理。
SELECT a.tablespace_name, COUNT (1) 碎片量
FROM dba_free_space a, dba_tablespaces b
WHERE a.tablespace_name = b.tablespace_name
AND b.contents NOT IN ('TEMPORARY', 'UNDO', 'SYSAUX')
GROUP BY a.tablespace_name
HAVING COUNT (1) > 20
ORDER BY 2;
表空间的碎片整理
1)表空间的 pctincrease 值为非 0
对于ASSM管理的表空间,一般都是由smon(系统监控)进程自动整理,前提是表空间的pctincrease值为非0,可以将表空间的缺省存储参数pctincrease改为非0,一般将其设为1。如修改test表空间的pctincrease属性:alter tablespace test default storage(pctincrease 1); 这样就可以自动整理表空间级别的碎片整理了。
2)手工合并自由范围:
如果对于字典管理的表空间,可以用下面的命令进行整理:
sql> alter tablespace collesce;
oracle 表空间 碎片,Oracle表空间碎片整理相关推荐
- oracle+怎么清理碎片,oracle 收缩表、清理碎片,释放空间
可以用来收缩段,消除空间碎片的方法有两种: 1.alter table table_name move 需要注意: 1)move操作会锁表.(如果是很小的表,可以在线做.如果是大表一定要注意,会长时间 ...
- oracle sysaux表空间不足,sysaux 表空间不足问题处理
sysaux 表空间不足问题处理 一现场,备份库alter 日志出现错误 ORA-1688: unable to extend table SYS.WRH$_SQLSTAT partition WRH ...
- Oracle 数据库、实例、表空间、用户、数据库对象
Oracle是一种数据库管理系统,是一种关系型的数据库管理系统.通常情况了我们称的"数据库",包含了物理数据.数据库管理系统.内存.操作系统进程的组合体,就是指这里所说的数据库管理 ...
- oracle创建表不在对应表空间,oracle创建表空间
创建表空间参数详解 语法描述: CREATE [UNDO] TABLESPACE tablespace_name [DATAFILE datefile_spec1 [,datefile_spec2] ...
- Oracle 创建表空间,创建表、数据增删改
Oracle 创建表空间,创建表.数据增删改 创建表空间 创建用户 用户授权 表的创建.修改与删除 创建表 数据类型 创建表的同时指定表空间 修改表 删除表 数据增删改 插入数据 修改数据 删除数据 ...
- oracle创建本地表空间,本地管理表空间——大家继续讨论!
本地管理表空间 Locally Managed Tablespace 一.概述 1.理解本地管理表空间的由来 2.理解什么是字典管理表空间及工作原理 3.理解本地管理表空间的优势(为什么要使用本地管理 ...
- oracle如何收缩表空间文件,ORACLE 收缩表空间的数据文件
方法一: 在实际的应用中经常会遇到TRUNCATE或者DELETE表中的数据后发现表空间并没有将空间进行释放,磁盘空间被告占用感觉空间白白被浪费掉了. 通过下面的SQL语句查看表空间总大小及实用大小, ...
- oracle表空间 设置,oracle表空间的设置与管理(代码实例)
1.创建大小为50mb的永久表空间test,禁止自动扩展数据文件 create tablespace test logging datafile 'e:\orc\test01.dbf' size 50 ...
- mysql 表空间收缩_mysql表碎片清理和表空间收缩
mysql表碎片清理和表空间收缩(即清理碎片后report_site_day.ibd文件磁盘空间减小,该方案基于独立表空间存储方式) OPTIMIZETABLE [tablename],当然这种方式只 ...
最新文章
- 进入Xcode4,选择菜单“Product”-“Profile”,快捷键Command+I 监测内存泄露
- 实时获取vuex更新的新数据_三网运营商大数据实时截流,网站手机号获取
- [转]一个典型的软件项目的WBS评析
- numpy基本矩阵操作
- Scapy学习笔记一
- ExtJS入门之一 类与继承
- [半翻] 设计面向DDD的微服务
- Taro+react开发(75):taro简介
- Unity3d—做一个年月日选择器(Scroll Rect拖动效果优化)— 无限滚动 + 锁定元素...
- mysql bundle 安装_阿里云服务器下安装MySQL (Bundle压缩包 安装)
- 2010计算机知识点总结,2010年全国职称计算机考试:知识点笔记第一章
- 7、STC12C5A60S2核心芯片说明文档
- file上传代码 ios_自己动手写一个 iOS 网络请求库(四)——快速文件上传
- 盘点一道窗口函数的数据分析面试题
- 天气预报接口_JMeter 接口自动化测试篇 26
- 需要了解的常用Webpack插件配置-loader加载器
- MFC之CMFCColorBar 在添加后控件显示为灰色解决方案
- 【SCIR笔记】ACL2020表格预训练工作速览
- 中国科学技术大学计算机研究生在哪个校区,中国科学技术大学有几个校区及校区地址 哪个校区最好...
- android 获取sn序列号
热门文章
- restful get不传参数404_flask-restful编写上传图片api
- exe文件解包_如何获取别人微信小程序的源文件?
- java求数组和值_用java编写数组求和,array[]和ArrayList()?
- MogDB/openGauss 手动部署(非OM工具)单机、主备、主备级联架构
- MySQL 开源工具集合
- 资源放送丨《Oracle 12C~19C统计信息的最佳实践》PPT视频
- 实践GoF的23的设计模式:SOLID原则(下)
- 支撑1300+矿井监控,华为云数据库助力打造智能矿山
- 图像处理中提取中间特征是干什么_PyTorch提取中间层特征?
- sizeof 在C语言的作用,union 与sizeof的作用??