oracle查询表实际大小,简要分析估算oracle表的大小
查询oracle表的大小有几种方法,笔者简要分析下他们的异同
环境,newsadmin.newlog,原本有244,459,078条记录,delete后,现在只有51,109,919记录。
一、segments
select bytes/1024/1024/1024 from dba_segments where segment_name='NEWLOG';
结果是27.26GB这个结果和
select sum(blokcs)*8/1024/1024 from dba_segments where segment_name='NEWLOG';
是完全一致的。
这个结果就是我们说的,该表在tablespace中实际占的大小。
二、show_space
并非oracle自带的一个procedure,而是thomas写的一个脚本,非常好用,可以前往
http://www.itpub.net/thread-239697-1-1.html
下载安装
begin
sys.show_space(p_segname => 'NEWLOG',p_owner => 'NEWSADMIN');
end;
这样可以看到一个分析结果
Segments................................NEWLOG
Segments Type...........................TABLE
Partition Name..........................
Unformatted Blocks .....................0
FS1 Blocks (0-25) .....................5
FS2 Blocks (25-50) .....................4336
FS3 Blocks (50-75) .....................12537
FS4 Blocks (75-100).....................2834583
Full Blocks .....................718526
Total Blocks............................3574016
Total Bytes.............................29278339072
Unused Blocks...........................0
Unused Bytes............................0
Last Used Ext FileId....................16
Last Used Ext BlockId...................924672
Last Used Block.........................128
解释下,FS1 Blocks (0-25)是指,空闲度为0-25%的块,所以从这里可以看见75-100和full blocks占得比例十分惊人,这就说明HWM非常高。我们可以粗略计算一下:
(2834583*2+12537*4+4336*6+5*8)/1024/1024=5.48GB,这是估算的实际表的大小。而上面显示的Total Bytes.............................29278339072就是之前我们查询到的,BLOCKS*db_block_size的大小。
笔者用exp不带索引不带触发器的导出,大小为5.75GB和预估基本一致。
C:\Documents and Settings\yantaiwanhua15>exp user/password@remote file=d:\1.dmp tables=newsadmin.newlog triggers=n indexes=n
三、expdp
大家都知道expdp有个功能就是导出前预估大小,笔者博客之前有介绍过
5. ESTIMATE
指定估算被导出表所占用磁盘空间分方法.默认值是BLOCKS
ESTIMATE={BLOCKS | STATISTICS}
设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据最近统计值估算对象占用空间
Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS DIRECTORY=dump DUMPFILE=a.dump
第一种是根据blocks计算,就和前文描述的一致,是一种在HWM较低的情况下相对准确的方法。STATISTICS是根据表的统计信息进行估计,相对来说准确多。
但是使用expdp备份时,尽量不要使用estimate参数,因为这个额外操作是非常消耗资源的。
oracle查询表实际大小,简要分析估算oracle表的大小相关推荐
- oracle计算表的大小,简要分析估算oracle表的大小
查询oracle表的大小有几种方法,笔者简要分析下他们的异同 环境,newsadmin.newlog,原本有244,459,078条记录,delete后,现在只有51,109,919记录. 一.seg ...
- Oracle如何预估将要创建的索引和表的大小
Oracle如何预估将要创建的索引和表的大小 1. 对于表和索引空间的预估,可以使用DBMS_SPACE包的CREATE_TABLE_COST和CREATE_INDEX_COST存储过程,虽然没有看这 ...
- 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小
2019独角兽企业重金招聘Python工程师标准>>> 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小 其实本来只想找一个方法能查询一下 数据库 的大小,没 ...
- php检测表大小,查询mysql数据库、表的大小
一.关于mysql表数据大小 mysql存储数据文件一般使用表空间存储 : 当mysql使用innodb存储引擎的时候,mysql使用表存储数据分为共享表空间和独享表空间两种方式 .共享表空间:Inn ...
- mysql查看数据库表大小语句_MySQL查看数据库表容量大小的命令语句讲解
MySQL查看数据库表容量大小的命令语句讲解 发布时间:2020-04-27 14:17:23 来源:亿速云 阅读:180 作者:三月 本文主要给大家介绍MySQL查看数据库表容量大小的命令语句讲解, ...
- oracle查询表的字段类型有哪些,oracle中查询表的信息,包括表名,字段名,字段类型,主键(精)...
通过搜索摸索,总结了一下 oracle 中查询表的信息,包括表名,字段名,字段类型,主键, 外键唯一性约束信息,索引信息查询 SQL 如下,希望对大家有所帮助: 1.查询出所有的用户表 select ...
- Oracle查询表结果添加到另一张表中
转自:https://blog.csdn.net/lx870576109/article/details/78336695 把每一个知识点进行积累:Oracle数据库中将查询一张表的结果添加到另一张表 ...
- oracle查询表占用空,查询dba_tables 为啥有的表的表空间为空
谢谢大家的回复,版主和我同事回复一样 我查了不是分区表,我查新部署的数据库也会有这样的情况,挺奇怪的 查询部分结果见下面: 属主 表名 表空间名 SYS ...
- oracle查询表字段sql语句怎么写,oracle联合查询并更新一个表字段的sql语句
更新某一个字段写起来简单,也容易理解: UPDATE tablea A SET A.name=(select name from tableb B where A.id=B.id) 更新多个字段就显得 ...
最新文章
- VC中基于 Windows 的精确定时
- 【Python基础教程】变量的作用域详解
- Gartner:移动设备在工作场所中的使用尚未成熟
- 带有Swagger的Spring Rest API –集成和配置
- 篡改referer_HTTP_REFERER的用法及伪造
- long类型20位示例_Java Long类lowerOneBit()方法与示例
- java 发送数据_用JAVA模拟POST发送数据
- 恢复 混淆后的 stacktrace 文件
- nearly,about,almost的区别
- SHELL判断文件是否包含某个字串
- KB2999226-x64.msu 此更新不适合你的计算机VC++2015 redistributable安装出错
- Jenkins linux 操作系统一键部署多节点
- 2022华为机试社招OD高频考试真题【9, 10月份Q2, Q3考试新编程题目】
- 一年后反思我的围棋经历
- ReplicaSet
- 微pe安装原版win10怎么装|wepe安装原版win10 1803教程
- 如何15分钟快速入门LaTeX公式?
- Mysql大表数据清理方案
- mac VirtualBox安装旧版ubuntu
- Nginx负载均衡讲解