最近正在看老白的《DBA的思想天空》,了解数据块结构,想通过dump data block验证oracle对于行尾的NULL,是不占用存储空间的。

我们先来看一下怎样dump数据块:

1.在数据库级别dump数据库,oracle提供了命令支持

ALTER SYSETM DUMP DATAFILE absolute_file_number
BLOCK block_number;
ALTER SYSETM DUMP DATAFILE absolute_file_number
BLOCK MIN minimum_block_number
BLOCK MAX maximum_block_number;
ALTER SYSETM DUMP DATAFILE 'file_name'
BLOCK block_number;

如果需要强制dump出来的数据以十六进制显示,需要设置event 10289

ALTER SESSION SET EVENTS
'10289 trace name context forever, level 1';

然后再dump数据块,使用下列命令关闭10289

ALTER SESSION SET EVENTS
'10289 trace name context off';

需要注意的是:

  • dump是,如果忽略block参数,将dump整个数据文件
  • 使用文件号(absolute_file_number)是,数据库必须处于OPEN状态,并且数据文件也要求ONLINE;
  • 使用文件号,dump信息来自Buffer Cache,而不是磁盘
  • 使用文件名,dump信息来自磁盘,因此实例在NOMOUNT状态也可以dump

2.通过操作系统工具dump

dd if=/s01/app/oracle/oradata/MYAPP/users01.dbf of=b527.dmp bs= skip= count=

OK,补充了dump的知识,让我们来跟随老白的实验,验证null是不占用存储空间的。

CREATE TABLE TEST1 (A INTEGER,B VARCHAR2(100),C VARCHAR2(100);
INSERT INTO TEST1 VALUES (1,null,'aaaa');
INSERT INTO TEST1 VALUES (2,null,'bbbb');
INSERT INTO TEST1 VALUES (1,'',null);

然后查找这个extent所在的位置:
SELECT extent_id,file_id,block_id from dba_extents where segment_name='TEST1' and owner='SCOTT';

EXTENT_ID FILE_ID BLOCK_ID
---------- ---------- ----------
0               4             520

然后我们查询TEST1表的ROWID

SQL> select dbms_rowid.rowid_block_number('AAASwvAAEAAAAIPAAA') block# from dual;

BLOCK#
---------------------------------------------------
527

通过dd命令可以看到这三条数据。

选中部分2C 01 02:02代表长度。这里也可以验证数据块里的数据是从下往上分布的。

或者alter system dump datafile:

block_row_dump:
tab 0, row 0, @0x1f8c
tl: 12 fb: --H-FL-- lb: 0x1 cc: 3
col 0: [] c1 02
col 1: *NULL*
col 2: [] 61 61 61 61
tab 0, row 1, @0x1f80
tl: 12 fb: --H-FL-- lb: 0x1 cc: 3
col 0: [] c1 03
col 1: *NULL*
col 2: [] 62 62 62 62
tab 0, row 2, @0x1f74
tl: 12 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 2] c1 02
col 1: [ 5] 31 31 31 31 31
end_of_block_dump
End dump data blocks tsn: 4 file#: 4 minblk 527 maxblk 527

可以看到 INSERT INTO TEST1 VALUES (1,'11111',null); dump出来只有两列数据,NULL是不占用空间的。

oracle dump数据库的更多相关文章

  1. 【转帖】循序渐进Oracle:数据库的字符集和字符集文件

    循序渐进Oracle:数据库的字符集和字符集文件 https://blog.csdn.net/Enmotech/article/details/100869162 2019年09月15日 18:23: ...

  2. Oracle 11G 数据库迁移【expdp/impdp】

    转自:http://www.th7.cn/db/Oracle/201802/263773.shtml 0x01 环境 A 机器,操作系统 CentOS7.3,Oracle版本:11G,IP地址:192 ...

  3. oracle 11g 数据库恢复技术 ---02 控制文件

    oracle 11g 数据库恢复技术 ---02 控制文件 SYS@ orcl >show parameter control_file NAME TYPE VALUE ------------ ...

  4. Oracle创建数据库

    Oracle创建数据库有三种方式:一.使用DBCA(Database Configuration Assistant 数据库配置助手):二.使用 create database指令:三.在安装数据库软 ...

  5. jsp+oracle实现数据库内容以表格形式在前台显示(包含分页)

    jsp+oracle实现数据库内容以表格形式在前台显示(包含分页) 在文件夹内新增list_emp.jsp 代码如下: <%@ page contentType="text/html& ...

  6. DBCP连接Oracle,数据库重启后现OALL8 is in an inconsistent state异常

    最近,DBCP连接Oracle,数据库重启后现OALL8 is in an inconsistent state异常. 版本说明 commons-dbcp-1.4.jar commons-pool-1 ...

  7. 在Windows 10上安装Oracle 11g数据库出现的问题及解决

    在Windows 10上安装Oracle 11g数据库,并且很多次出现过:当安装的进度条进行到快要结束的时候弹出一个提示框.如下: [Java(TM)2 Platform Standard Editi ...

  8. oracle 数据恢复,只有oradata文件夹里的文件,没有备份文件的数据库恢复,重装系统后,oracle 10g数据库恢复

    格式化重装系统后,才想起来oracle 10g 数据库没有做备份,开始以为很麻烦,没想到数据库恢复的还挺顺利的 恢复方法: 1,把原来的数据库文件备份,(D:\oracle\product\10.2. ...

  9. 完美完全卸载Oracle 11g数据库

    Oracle 11g可在开始菜单中卸载,然后同时需要删除注册表中相关内容. 操作系统:windows10专业版. 卸载步骤: 1.停用oracle服务:进入计算机管理,在服务中,找到oracle开头的 ...

随机推荐

  1. Mysql完全手册(笔记二,使用数据与性能优化)

    一.使用数据 1.使用变量 MySQL也可以让我们以用户自定义的变量来存储select查询的结果,以便在将来select查询中使用.它们只会在客户会话期间存在,但是它们提供一个方便有效的方法来连接查询 ...

  2. 做中学(Learning by Doing)之背单词-扇贝网推荐

    做中学(Learning by Doing)之背单词-扇贝网推荐 看完杨贵福老师(博客,知乎专栏,豆瓣)的「继续背单词,8个月过去了」,我就有写这篇文章的冲动了,杨老师说: 有时候我会感觉非常后悔,如 ...

  3. .Net Core Linux centos7行—发布程序到生产环境

    实验demo现在需要发布到生产环境,发现在发布的时候要考虑到不一致的几个地方. 1.各类配置文件线下,线上不一致. 2.绑定的url不一致,可能是域名不一致,也可能是schema不一致(http,ht ...

  4. Equal Sides Of An Array

    参考:http://stackoverflow.com/questions/34584416/nested-loops-with-arrays You are going to be given an ...

  5. mongodb安装启动遇到的问题

    好不容易下载到了mongodb,配置的时候遇到了不少问题. 下载的是解压包,不是官网的,有一个bin目录,解压到一个自己想要的目录,如d:\mongo,首先把bin复制进来,然后创建data目录,da ...

  6. 【poj2409】 Let it Bead

    http://poj.org/problem?id=2409 (题目链接) 题意 一个n个珠子的项链,每个珠子可以被染成t种颜色.项链可以翻转和旋转,问不同的染色方案数. Solution Pólya ...

  7. BZOJ1303 [CQOI2009]中位数图

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  8. 面对bug和困难的心态

    遇到bug了? 作为程序员,会面对各种各样的bug,我们在编写代码的时候,也是生产bug的过程.在公司总会遇到老同事留下的代码,这些代码出现问题了该怎么办?最常见的想法就是, 老同事怎么考虑这么不周到 ...

  9. Nginx 颁发自签证书

    首先,确保安装了OpenSSL库,并且安装Nginx时使用了–with-http_ssl_module参数. 1:进入生成证书的目录 cd /usr/local/nginx/conf 2:使用open ...

  10. jQuey知识点三 解析json数据

    1.解析简单数据 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="vie ...