在精彩刺激又些许无聊的运维生活中,有可爱呆萌的师弟师妹,也是为工作增添了一些色彩。正在午休的时候, 尚未毕业的小师弟在悄悄问小师妹,为什么数据库中查出来的数据量有100G,expdp导出的dump文件只有60G,还有40G去哪了?小师妹还没从犯困中走出,是啊,为什么呢?

这时候我是日渐后移的发际线给了我勇气去打破空气中弥漫的那一丝安静。我和小师弟唠了起来…… 我们通过导出日志看看oracle的数据泵到底在导出的时候做了什么?

从日志中我们只有看到表导出的记录详细信息,那么只导出表数据块呢?

从统计结果看到,数据库内部占用空间的数据类型大致分为索引两大类。

问题的结症在于,为什么表数据导出而索引只导出ddl的sql,而不是导出具体索引数据?

从oracle官方的《Database Concepts》中找到data segment和index segment的定义如下:

我难道不知道索引的segment里面放的是索引,数据的segment里面放的是数据!!!

01

看来只能动手去segment里面一看究竟了。还是拿oracle的scott用户下的dept表和对应的索引来下手。查看scott.dept表上一条数据所在的block信息

返回信息解读如下:

scott.dept.deptno=10 所属的对象号87106,文件号4,block号135,对应的行号0

02

那查看scott.dept呢

看到deptno字段类型是number(2)

03

查看索引的对象号

04

查看生产的trace如下,可以看到页块和块地址以及块上的索引条目信息

05

根据trace的内容,通过以下语句获取索引所在的文件和块号

06

查看trace,摘取核心的信息如下:

从块dump的trace文件中,我们可以获取很多信息,比如块类型,大小,定位信息等。重点截取后面部分可以看到该索引块上有4 row 的行目录(row directory),该信息是针对row的描述信息,是一个指针数组,指向对应块中的寻址信息

[8021]-[8010]可以计算出偏移量为11,也就是一行记录占用了11位,一行有1个字段,字段长度为2

01 00 00 87 00 00 假设为16进制,我们转换为二进制

0000 0001 0000 0000 0000 0000 1000 0111 0000 0000 0000 0000

前部加粗的10位转换为十进制为4

中部未加粗22位转换为十进制为135

后部加粗的16位转换为十进制为0

看到4/135/0这是不是有有些眼熟,就是对scott.dept.deptno=10上rowid拆解出来的文件号,块号,行号。到这,我们明白了,在索引块中,存储的是索引字段的rowid号。当我们通过导入导出迁移数据的时候,在导入时,是没有办法保证数据所在的文件号块号行号是完全一致的,也就意味着导出索引块是无意义的。这也是通过导入导出的另一个好处:可以将稀疏的表在迁移的过程中重建,从而达到对表数据的整理。讲到这,大伙都明白了,抬头一看,身边都同事已经一头扎进精彩刺激又些许无聊的运维工作中去。

导出一条数据_来自小师弟的灵魂拷问之数据泵导出丢失的那些数据量去哪了?...相关推荐

  1. eclipse.jsp文件放哪_来自小师弟的灵魂拷问之数据泵导出丢失的那些数据量去哪了?...

    在精彩刺激又些许无聊的运维生活中,有可爱呆萌的师弟师妹,也是为工作增添了一些色彩.正在午休的时候, 尚未毕业的小师弟在悄悄问小师妹,为什么数据库中查出来的数据量有100G,expdp导出的dump文件 ...

  2. wcf afterreceiverequest获取body数据_阿里面试官的灵魂拷问:究竟如何保证API接口数据安全?...

    前言 前后端分离的开发方式,我们以接口为标准来进行推动,定义好接口,各自开发自己的功能,最后进行联调整合.无论是开发原生的APP还是webapp还是PC端的软件,只要是前后端分离的模式,就避免不了调用 ...

  3. 取本地数据_深入理解Kafka服务端之Follower副本如何同步Leader副本的数据

    一.场景分析Kafka采用的是主写主读的方式,即客户端的读写请求都由分区的Leader副本处理,那么Follower副本要想保证和Leader副本数据一致,就需要不断地从Leader副本拉取消息来进行 ...

  4. echarts实时更新数据_虎牙为S10拼了8.0年度更新!随时回放实时数据,还能养柴犬...

    S10总决赛马上就要来临了,对于广大玩家来说,这真的是每年一度的狂欢盛宴.世界各地二十多支顶尖强队汇聚中国上海,直至决出最强者方才罢休. 作为英雄联盟中的世界杯,各大平台也都十分重视S10.尤其是虎牙 ...

  5. cesium 3dtiles 加载本地数据_深入echarts学习:加载跨域、异步、本地json数据的防坑录

    1 说明: ===== 1.1 推荐指数:★★★★ 1.2 网上这方面说明,大多模棱两可,坑很多,讲透彻的不多,故本人做一个小结. 1.3 我曾介绍echarts的简单基本用法: <Echart ...

  6. robomongo导入数据_关于robo3t:如何使用robomongo从Mongodb中导出json

    所以我对MongoDB不太了解. 我使用RoboMongo来连接到MongoDB. 我需要做的是-该MongoDB中有一个集合. 我想从该集合中导出数据,以便将其保存到文件中. 我使用该界面以文本形式 ...

  7. java 从excel中读取数据_在Java中读取Excel文件的内容和导出数据到Excel文件中

    转自www.chianjavaworld.net 原作者:SonyMusic 读:rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 在Java ...

  8. fox pro删除单条数据_删库之后不要着急跑路,教你神不知鬼不觉找回数据

    在工作中,我们误删数据或者数据库,我们一定需要跑路吗?我看未必,程序员一定要学会自救,神不知鬼不觉的将数据找回. 在 mysql 数据库中,我们知道 binlog 日志记录了我们对数据库的所有操作,所 ...

  9. spss练习数据_读硕博,为你推荐5本最实用的SPSS数据统计书

    SPSS (Statistical Product and Service Solutions),是由IBM公司所推出的一系列用于统计学分析运算.数据挖掘.预测分析和决策支持任务的软件产品.SPSS的 ...

最新文章

  1. Nmap安装和扫描(二:Nmap基本操作)
  2. redo log重做日志缓冲
  3. BigDecimal 加减乘除运算
  4. OpenShift 4.5 新特性 - 创建任务和定时任务
  5. 2014东师计算机应用基础离线作业,2014秋东师《计算机应用基础》离线作业及答案...
  6. 五种基于RGB色彩空间统计的皮肤检测算法
  7. IOS Video Tool Box后台解码失败
  8. html表白树代码程序怎么调,抖音表白弹窗vbs代码怎么制作 表白树特效程序代码教程详细介绍...
  9. numpy中相关系数
  10. Flutter gradle构建时报错:More than one variant of project :flutter matches the consumer attributes:
  11. P7961 [NOIP2021] 数列
  12. 苹果工具条_苹果承认错误:个人热点“断连” !iOS13.4或成救命稻草!
  13. Servlet+JSP一文完结
  14. linux软件保护,国产Linux违反《计算机软件保护条例》的说明
  15. 1.2RK3288积累
  16. 在Matlab中将一幅图片的中心设置为x-y轴坐标原点
  17. java 分权分域什么意思_基于云平台的分权分域系统分析与设计
  18. 安卓一键清理内存_一款强大的安卓手机内存清理软件吃掉内存
  19. Mac安装mysql数据库MySQL基础和MySQL在开发中常用的技术
  20. 服务器性能测试方法,服务器性能测试方法

热门文章

  1. 太慢不能忍!CPU 又拿硬盘和网卡开刀了!
  2. 16 分钟优化 mRNA 疫苗稳定性!百度 AI 算法 LinearDesign 为新冠疫苗研发提速
  3. 玩转 SpringBoot2.x 之缓存对象 | 原力计划
  4. 软件工程师的衰落与程序技术员的兴起
  5. 中国搜索 20 年:易守难攻、刚需不减!
  6. @程序员,我最多再等你两天!
  7. Spring Boot 2.2 正式发布,大幅性能提升 Java 13 支持 | CSDN 博文精选
  8. 你不是颠覆 IoT,就是被 IoT 颠覆!
  9. TensorFlow Lite 实现首次移植到 Arduino!
  10. Facebook 发币 Libra;谷歌十亿美金为穷人造房;第四代树莓派 Raspberry Pi 4 发布 | 开发者周刊...