拨开迷雾:关于resize datafile理解的错误

黄廷忠(网名:认真就输)

云和恩墨技术专家

个人博客:http://www.htz.pw/

resize数据文件的时候,常常会报ORA-03297错误,也许很多人会认为通过在相同表空间move一下对象,就会自动使用最小的未使用的空间,其实并不是这样的,在MOS文件中遇到ORA-03297错误是直接给出的DROP对象,那么为什么不能使用move,表空间的对象究竟是如何存储的呢?今天我们通过实验一起来认识。

数据库版本

查询表空间中对象的大小

这里可以看到对象总的大小为271974400

然后看到表空间中总分配的空间远远大于271974400

查询需要MOVE的对象

查看表空间中的数据文件系统

原来以为表空间中使用数据文件是均匀的使用,但是后面的测试并不是这样的,下面这样的SQL是之前以后均匀的使用数据文件而写的

由于查询dba_extents需要消耗大量的时间,特别是数据库越大的时候,所以这里我们通过一次性查询出来,并生成一个表来实现只查询一次dba_extents。

创建表

MOVE对象

多次MOVE后,查看当前表空间使用情况

这里看到两个数据文件中分配给对象的最大块的BLOCK_ID相差太多了,也说明数据文件中并不是平均使用数据文件的

这里看到表空间分配的大小还是远远大于表空间中对象使用的大小

查询对表块的分布情况

通过上面信息得到,中间其它有很多块并没有使用,并且相隔还很大

dump数据文件位图块

通过上面的信息可以得到每一个位图块都对应数据文件中一段连续的空间,在分配空间的时候,并不是依次使用位图块,而是同时在多个位图块中使用位图块,估计是为了减少块的挣用,提高并发性。

MOVE到其它表空间

其实通过MOS文档可以发现,ORACLE官方并没有说通过MOVE方式,而是通过DROP方式来实现,下面我们通过MOVE到其它的表空间来使用。

RESIZE数据文件

查询数据分配给对象的最大块的位置

这里看到已经除下面了

已经resize成功

将对象MOVE回来

查看当前数据文件分配的大小

再次通过操作系统查看

----the end

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-09-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

设计Go API的管道使用原则

管道是并发安全的队列,用于在Go的轻量级线程(Go协程)之间安全地传递消息。总的来讲,这些原语是Go语言中最为称道的特色功能之一。这种消息传递范式使得开发者可以...

3496
来自专栏企鹅FM

形形色色的锁2

synchronized关键字提供了一套非常完整的java内置锁实现,简单易用通过块语句控制锁的范围,而且性能不低,隐藏了偏向锁,轻量、重量锁等复杂的概念,对程...

1354
来自专栏刘君君

JMM学习笔记

要出现 May observer r2 == 2,r1 == 1 线程执行顺序应该是如下所示:

772
来自专栏深度学习与计算机视觉

TensorFlow 队列与多线程的应用

深度学习的模型训练过程往往需要大量的数据,而将这些数据一次性的读入和预处理需要大量的时间开销,所以通常采用队列与多线程的思想解决这个问题,而且TensorFlo...

28610
来自专栏腾讯Bugly的专栏

Android 平台 Native 代码的崩溃捕获机制及实现

一、背景 在Android平台,native crash一直是crash里的大头。native crash具有上下文不全、出错信息模糊、难以捕捉等特点,比jav...

5577
来自专栏开发 & 算法杂谈

基于Lockset的数据竞争检测方法汇总(四)

     今天讲的这篇文论中提到的Lockset方法同样也是和Happens-Before结合来进行动态数据竞争检测,这篇论文中使用的Happens-Befor...

1254
来自专栏大眼瞪小眼

Java线程:概念与使用

Java线程大总结 原文章地址:一篇很老的专栏,但是现在看起来也感觉深受启发,知识点很多,很多线程特点我没有看,尴尬。但是还是整理了一下排版,转载一下。

562
来自专栏高性能服务器开发

libevent源码深度剖析二 Reactor模式

(1)libevent源码深度剖析一 序 (2)libevent源码深度剖析二 Reactor模式 (3)libevent源码深度剖析三 libevent基本使...

922
来自专栏何俊林

阿里、华为、腾讯Java技术面试题精选

1125
来自专栏tkokof 的技术,小趣及杂念

Sweet Snippet系列 之 TCP数据接收

  虽说仍然是Sweet Snippet,不过本篇并没有代码,纯粹是自己觉得有点趣味,就索性一记了~

521

扫码关注云+社区