在精彩刺激又些许无聊的运维生活中,有可爱呆萌的师弟师妹,也是为工作增添了一些色彩。正在午休的时候, 尚未毕业的小师弟在悄悄问小师妹,为什么数据库中查出来的数据量有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号。当我们通过导入导出迁移数据的时候,在导入时,是没有办法保证数据所在的文件号块号行号是完全一致的,也就意味着导出索引块是无意义的。这也是通过导入导出的另一个好处:可以将稀疏的表在迁移的过程中重建,从而达到对表数据的整理。讲到这,大伙都明白了,抬头一看,身边都同事已经一头扎进精彩刺激又些许无聊的运维工作中去。

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

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

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

  2. oracle数据泵导出csv文件,数据泵expdp导出遇到ORA-01555和ORA-22924问题的分析和处理...

    使用数据泵导出数据库数据时,发现如下错误提示: ORA-31693: Table data object "CAMS_CORE"."BP_EXCEPTION_LOG&qu ...

  3. oracle 数据泵_如何提升数据泵导出效率?

    expdp数据泵导出方式,是Orace dba日常运维工作中最常用的一种数据迁移工具.它适用于部分对象,单用户,多用户等导出场景.我们可以通过一定的优化方法,让expdp跑得更快,从而提高运维效率.本 ...

  4. jsp文件上传_文件上传

    一.文件上传的目的--脚本文件 文件上传的一共可造成三种危害,从低到高分别是,任意内容文件,html文件,脚本文件. 任意内容文件 任意内容文件指的是虽然文件后缀不可控,但是文件内容可控,比如我可以上 ...

  5. jsp文件上传_猿蜕变系列7——也说说springMVC上传姿势

    看过之前的蜕变系列文章,相信你对springMVC有了一定的认识.对springMVC的异常处理,也有了一定的认识.今天我们来开启新讨论,讲一讲web开发中会经常遇到的一个功能,文件上传. 猿蜕变同样 ...

  6. jsp文件命名规范_代码规范整理

    我喜欢优雅和高效的代码.代码逻辑应当直截了当,叫缺陷难以隐藏:尽量减少依赖关系,使之便于维护:依据某种分层战略完善错误处理代码:性能调至最优,省的引诱别人做没规矩的优化,高出一对混乱来.整洁的代码只做 ...

  7. dbeaver导出建表语句_细致入微:如何使用数据泵导出表的部分列数据

    编者按 云和恩墨大讲堂社群(本文底部有入群方式)里有人提出一个需求:一张表数据量很大,如何只导出其中一部分列?云和恩墨CTO.Oracle ACE总监.ACOUG核心专家杨廷琨老师使用了数据泵的方式, ...

  8. mysql 数据泵_数据泵导出/导入数据

    由于在oracle11g之后的某些版本中,采用exp方式导出数据会导致空表被漏掉,解决办法分为两种: 一.对空表进行插入操作,然后再删除数据. 二.采用数据泵的方式导出. 本文介绍第二种方式. 导出: ...

  9. java jsp 文件上传_用JSP编写文件上传

    用JSP编写文件上传 发布时间:2016-09-14 来源: 点击: 次 如果你曾用VB编写文件上传的组件的话,那么用JAVA编写文件上传的JAVABEAN十分容易. 下面的例子只是一个简版 pack ...

最新文章

  1. 卷积网络基础知识---Group Convolution分组卷积
  2. 可恶的MSSQL 内部 SQL Server 错误。(臭BUG)
  3. Js文本溢出自动添加省略号ellipsis
  4. 跨站请求伪造攻击(CSRF)
  5. [Python人工智能] 十.Tensorflow+Opencv实现CNN自定义图像分类案例及与机器学习KNN图像分类算法对比
  6. 机器学习相关知识 大佬博客整理
  7. spring学习(36):注入简单类型
  8. Android同屏或摄像头RTMP推送常用的数据接口设计探讨
  9. CentOS 7安装Development Tools 失败 报错 group tools does not exist. Maybe run: yum groups mark install
  10. Android-即时通训
  11. oracle有关游标的知识
  12. nginx 配置upstream实现负载均衡
  13. HTML特效代码大全(完整)
  14. 各个省份城市HTML,省份城市的三级联动.html
  15. python图片表格转excel表格_python提取图片内容并转换成对应表格的markdown代码
  16. java开发基础知识学习总结
  17. 电商积分体系存在的问题
  18. java面试详解-总有你能碰得到的
  19. 关于android6.0网络连接感叹号的问题
  20. 如何保持较长时间的专注

热门文章

  1. 算法工程师面试题【集锦cv/ml/dl】
  2. MySQL基础(二)数据库、表的创建及操作
  3. Handler原理分析
  4. 阿里云服务器被挖矿怎么解决
  5. Curator操作ZooKeeper
  6. PowerDesigner 中的name与comment转换(转)
  7. MVC上传文件受限制
  8. VC++ WIN32 sdk实现按钮自绘详解.
  9. [Android] Bitmap OOM解决办法一
  10. SpringCloud Alibaba-Nacos 的使用