2010-02-13

目的:

1、 了解数据块转储

2、 简单认证数据在ORACLE文件的存储

测试环境:

VM+Win2003+Oracle11g

DB_BLOCK_SIZE 8k

C:\Documents and Settings\Administrator>sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 2月 13 21:03:38 2012

Copyright (c) 1982, 2010, Oracle. All rights reserved.

SQL> conn / as sysdba

已连接。

SQL> create tablespace test1 datafile 'E:\app\Data\orcl\test1' size 20M ;

表空间已创建。

SQL> Create user firefox identified by qwe123 temporary tablespace temp default tablespace test1 quota unlimited on test1;

用户已创建。

SQL> select extent_management,allocation_type,segment_space_management from dba_tablespaces where tablespace_name='TEST1';

EXTENT_MAN ALLOCATIO SEGMEN

---------- --------- ------

LOCAL SYSTEM AUTO

SQL> grant create session to firefox;

授权成功。

SQL> grant Create table to firefox;

授权成功。

SQL> grant insert any table to firefox;

授权成功。

SQL> conn firefox/qwe123

已连接。

SQL> create table firefoxTest1(id number(5) not null ,testVchar varchar2(20),testChar char(2));

表已创建。

SQL> insert into firefoxTest1(id,testVchar,testchar) values (1,'我是一个中国人!','Do');

已创建 1 行。

SQL> commit;

提交完成。

SQL> conn / as sysdba

已连接。

SQL> select owner,segment_name,tablespace_name,file_id,extent_id,blocks from dba_extents where segment_type='TABLE' and segment_name='FIREFOXTEST1';

OWNER SEGMENT_NAME TABLESPACE_NAME FILE_ID EXTENT_ID BLOCK_ID BLOCKS

--------------- -------------------- ------------------------------ ---------- ---------- ---------- ----------

FIREFOX FIREFOXTEST1 TEST1 6 0 128 8

新建表只有一条记录,故从上面的查询可以确认,数据保存在128的Block到135 Block中的一个块中。

SQL> alter system dump datafile 6 block min 128 block max 135;

系统已更改。

Start dump data blocks tsn: 6 file#:6 minblk 128 maxblk 135

Block dump from cache:

Dump of buffer cache at level 4 for tsn=6, rdba=25165952

BH (0x353E7CCC) file#: 6 rdba: 0x01800080 (6/128) class: 8 ba: 0x350E2000

set: 3 pool 3 bsz: 8192 bsi: 0 sflg: 1 pwc: 407,28

dbwrid: 0 obj: 73149 objn: 73149 tsn: 6 afn: 6 hint: f

hash: [0x44374E78,0x44374E78] lru: [0x353E7CA4,0x353E7E4C]

ckptq: [NULL] fileq: [NULL] objq: [0x41AA9154,0x353E7CBC]

st: XCURRENT md: NULL tch: 1

flags: block_written_once redo_since_read

LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [1]

cr pin refcnt: 0 sh pin refcnt: 0

Block dump from disk:

……..

Block dump from cache:

Dump of buffer cache at level 4 for tsn=6, rdba=25165955

BH (0x353E836C) file#: 6 rdba: 0x01800083 (6/131) class: 1 ba: 0x350F2000

set: 3 pool 3 bsz: 8192 bsi: 0 sflg: 1 pwc: 407,28

dbwrid: 0 obj: 73149 objn: 73149 tsn: 6 afn: 6 hint: f

hash: [0x3A7F1258,0x443C6D08] lru: [0x353E8344,0x353E84EC]

ckptq: [NULL] fileq: [NULL] objq: [0x353E7BE8,0x353E8504]

st: XCURRENT md: NULL tch: 3

flags: block_written_once redo_since_read

LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [1]

cr pin refcnt: 0 sh pin refcnt: 0

Block dump from disk:

buffer tsn: 6 rdba: 0x01800083 (6/131)

scn: 0x0000.000d1ac2 seq: 0x01 flg: 0x06 tail: 0x1ac20601

frmt: 0x02 chkval: 0x9ccc type: 0x06=trans data

Hex dump of block: st=0, typ_found=1

Dump of memory from 0x0DA52200 to 0x0DA54200

DA52200 0000A206 01800083 000D1AC2 06010000 [................]

DA52210 00009CCC 00000001 00011DBD 000D1AC0 [................]

DA52220 00000000 0032F802 01800080 00030003 [......2.........]

DA52230 00000310 00C001D3 00190119 00002001 [............. ..]

DA52240 000D1AC2 00000000 00000000 00000000 [................]

DA52250 00000000 00000000 00000000 00000000 [................]

DA52260 00000000 00010100 0014FFFF 1F6A1F7E [............~.j.]

DA52270 00001F6A 1F7E0001 00000000 00000000 [j.....~.........]

DA52280 00000000 00000000 00000000 00000000 [................]

Repeat 501 times

DA541E0 012C0000 02C10203 CAD2CE10 B8BBD2C7 [..,.............]

DA541F0 B9D0D6F6 A3CBC8FA 6F4402A1 1AC20601 [..........Do....]

Block header dump: 0x01800083

Object id on Block? Y

seg/obj: 0x11dbd csc: 0x00.d1ac0 itc: 2 flg: E typ: 1 - DATA

brn: 0 bdba: 0x1800080 ver: 0x01 opc: 0

inc: 0 exflg: 0

Itl Xid Uba Flag Lck Scn/Fsc

0x01 0x0003.003.00000310 0x00c001d3.0119.19 --U- 1 fsc 0x0000.000d1ac2

0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000

bdba: 0x01800083

data_block_dump,data header at 0xda52264

===============

tsiz: 0x1f98

hsiz: 0x14

pbl: 0x0da52264

76543210

flag=--------

ntab=1

nrow=1

frre=-1

fsbo=0x14

fseo=0x1f7e

avsp=0x1f6a

tosp=0x1f6a

0xe:pti[0] nrow=1 offs=0

0x12:pri[0] offs=0x1f7e

block_row_dump:

tab 0, row 0, @0x1f7e

tl: 26 fb: --H-FL-- lb: 0x1 cc: 3

col 0: [ 2] c1 02

col 1: [16] ce d2 ca c7 d2 bb b8 f6 d6 d0 b9 fa c8 cb a3 a1

col 2: [ 2] 44 6f

end_of_block_dump

当然可以通过以下的也可以简便快速的导出。

SQL> select dbms_rowid.rowid_relative_fno(rowid) file_id,dbms_rowid.rowid_block_number(rowid) block_id from firefox.firefoxtest1;

FILE_ID BLOCK_ID

---------- ----------

6 131

SQL> alter system dump datafile 6 block 131;

系统已更改。

计算 131*8K ====> 1073152=0x106000

76+(itc-1)*24=100 ====> 64

0x1f7e+64 =0x1fe2

0x106000+0x1fe2=0x107FE2

验证数据是否在Test1.dbf那个位置。

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL>

用文件打开该数据文件,数据确实保存在该位置。

SQL> create tablespace testmanual datafile 'E:\app\Data\orcl\testmanual' size 20M segment space management manual;

表空间已创建。

SQL> alter user firefox default tablespace testmanual;

用户已更改。

SQL> alter user firefox quota unlimited on testmanual;

用户已更改。

SQL> conn firefox/qwe123

已连接。

SQL> create table testM(id number(2),testmanaul varchar2(20));

表已创建。

SQL> insert into testm(id,testmanaul) values (1,'上海');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select dbms_rowid.rowid_relative_fno(rowid) file_id,dbms_rowid.rowid_block_number(rowid) block_id from TestM;

FILE_ID BLOCK_ID

---------- ----------

7 129

SQL> alter system dump datafile 7 block 129;

alter system dump datafile 7 block 129

*

第 1 行出现错误:

ORA-01031: 权限不足

SQL> conn / as sysdba

已连接。

SQL> alter system dump datafile 7 block 129;

系统已更改。

*** 2012-02-13 22:34:47.472

Start dump data blocks tsn: 7 file#:7 minblk 129 maxblk 129

Block dump from cache:

Dump of buffer cache at level 4 for tsn=7, rdba=29360257

BH (0x37FE3C34) file#: 7 rdba: 0x01c00081 (7/129) class: 1 ba: 0x37C46000

set: 3 pool 3 bsz: 8192 bsi: 0 sflg: 1 pwc: 242,28

dbwrid: 0 obj: 73157 objn: 73157 tsn: 7 afn: 7 hint: f

hash: [0x363E639C,0x43BB0458] lru: [0x37FE3F5C,0x37FE3C0C]

ckptq: [NULL] fileq: [NULL] objq: [0x37FE42C4,0x4123CD4C]

st: XCURRENT md: NULL tch: 2

flags: block_written_once redo_since_read

LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [1]

cr pin refcnt: 0 sh pin refcnt: 0

Block dump from disk:

buffer tsn: 7 rdba: 0x01c00081 (7/129)

scn: 0x0000.000d343e seq: 0x05 flg: 0x06 tail: 0x343e0605

frmt: 0x02 chkval: 0xb60b type: 0x06=trans data

Hex dump of block: st=0, typ_found=1

Dump of memory from 0x08982200 to 0x08984200

8982200 0000A206 01C00081 000D343E 06050000 [........>4......]

8982210 0000B60B 00000001 00011DC5 000D3438 [............84..]

8982220 00000000 00030002 00000000 00000002 [................]

掠过………….

8984170 00100000 00740000 00120002 0025000B [......t.......%.]

8984180 C676FEBF 823F0021 0003002D 009D0000 [..v.!.?.-.......]

8984190 0021007D 00960006 7937001C 00A40105 [}.!.......7y....]

89841D0 0021DC40 006C0400 02B00089 32041A67 [@.!...l.....g..2]

89841E0 00284A04 00000007 00000017 00210010 [.J(...........!.]

89841F0 02012C40 0402C102 A3BACFC9 343E0605 [@,............>4]

Block header dump: 0x01c00081

Object id on Block? Y

seg/obj: 0x11dc5 csc: 0x00.d3438 itc: 2 flg: O typ: 1 - DATA

fsl: 0 fnx: 0x0 ver: 0x01

Itl Xid Uba Flag Lck Scn/Fsc

0x01 0x0002.000.00000320 0x00c0022c.0083.1f --U- 1 fsc 0x0000.000d343e

0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000

bdba: 0x01c00081

data_block_dump,data header at 0x898225c

===============

tsiz: 0x1fa0

hsiz: 0x14

pbl: 0x0898225c

76543210

flag=--------

ntab=1

nrow=1

frre=-1

fsbo=0x14

fseo=0x1f95

avsp=0x1f81

tosp=0x1f81

0xe:pti[0] nrow=1 offs=0

0x12:pri[0] offs=0x1f95

block_row_dump:

tab 0, row 0, @0x1f95

tl: 11 fb: --H-FL-- lb: 0x1 cc: 2

col 0: [ 2] c1 02

col 1: [ 4] c9 cf ba a3

end_of_block_dump

End dump data blocks tsn: 7 file#: 7 minblk 129 maxblk 129

SQL> select extent_management,segment_space_management, allocation_type from dba_tablespaces where tablespace_name='TESTMANUAL';

EXTENT_MAN SEGMEN ALLOCATIO

---------- ------ ---------

LOCAL MANUAL SYSTEM

计算 129*8K ====> 1056768=0x102000

MSSM:20+48+(itc-1)*24=92 ====> 5C

0x1f95+5c =0x1ff1

0x102000+0x1ff1=0x103FF1

了解MSSM和ASSM block内部offset的base的计算方法区别,请查阅Eygle博客日志http://www.eygle.com/rss/20100209.html

oracle对数据块的存取,简单了解数据在Oracle文件中的存储相关推荐

  1. 向HBase中导入数据3:使用MapReduce从HDFS或本地文件中读取数据并写入HBase(增加使用Reduce批量插入)

    前面我们介绍了: 向HBase中导入数据1:查询Hive后写入 向HBase中导入数据2:使用MapReduce从HDFS或本地文件中读取数据并写入HBase(只使用Map逐条查询) 为了提高插入效率 ...

  2. c语言实现文件数据删除视频,如何用c语言实现删除文件中指定的数据;例如

    匿名用户 1级 2012-05-21 回答 你的描述不清晰,B1和B2两个结构数组,到底要删除哪个?B[2]是肯定不对的,这两个数组的长度都是2,下标只能是0和1,即B1[0], B1[1], B2[ ...

  3. 简单了解数据在Oracle文件中的存储

    2010-02-13 目的: 1. 了解数据块转储 2. 简单认证数据在ORACLE文件的存储 测试环境: VM+Win2003+Oracle11g DB_BLOCK_SIZE 8k C:\Docum ...

  4. oracle remap语句格式,oracle通过expdp的remap_data实现简单的数据脱敏

    oracle 11g开始,在impdp/expdp中提供remap_data参数,实现对导入或导出操作时转换数据.如果生产库数据要导出给测试库使用,并需要转换敏感数据,可以考虑通过remap_data ...

  5. c语言数据块写入函数,C语言数据块读写函数:fread和fwrite

    在前面曾经介绍过C语言中的各种读写函数,首先是最简单的读写一个字符的函数fputc和fgetc,在这个基础上又出现了putw和getw.fgets和fputs,此外还说过格式化读写函数fprintf和 ...

  6. [云炬python3玩转机器学习笔记] 3-12 数据加载和简单的数据探索

    读取数据和简单的数据探索 In [1]: import numpy as np In [2]: import matplotlib as mpl import matplotlib.pyplot as ...

  7. 【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )

    文章目录 一.学生管理系统 二.代码示例 一.学生管理系统 前两篇博客 [C 语言]文件操作 ( 将结构体写出到文件中并读取结构体数据 | 将结构体数组写出到文件中并读取结构体数组数据 ) [C 语言 ...

  8. php 把查询数据转json格式,php将从数据库查询到的数据转化为json格式,并写入json文件中...

    1.主要是对数据进行编码 $str=json_encode($jarr);//将数组进行json编码 2.其次是写入json文件中 $file = fopen("../../code/myC ...

  9. 网站数据是怎么存取在mysql_数据是怎么存储在mysql?

    我们都知道mysql数据库能存储大量数据,但是你知道数据是怎么存储在mysql中的吗? 一般将数据保存到MySQL中有两种方式,同步模式和异步模式. 同步模式 同步模式是采用SQL语句,将数据插入到数 ...

最新文章

  1. 有必要做 Code Review 吗???
  2. DeepMind、哈佛造出了 AI「小白鼠」,从跑、跳、觅食、击球窥探神经网络的奥秘...
  3. Ensure that you have installed a JDK (not just a JRE) and configured your JAVA_HOME system variable
  4. 使用OpenGL绘制圆环体(Torus)
  5. C++ SYN攻击源码
  6. CVTE2016校招试题摘选
  7. IOS开发(104)之程序执行状态更改
  8. html对定位图片的某一部分_某系统存任意文件上传
  9. 坚持练字一年是什么样的体验?
  10. linux系统怎么安装小小输入法,CentOS 7.0下安装小小输入法
  11. 编译安装wpa_supplicant
  12. 一阶系统开环传递函数表达式_自动控制总结:第五章、线性系统的校正方法
  13. DNSPOD实现DDNS动态域名解析功能
  14. 电脑蓝屏显示(你的电脑遇到问题,需要重新启动,你可以重新启动)
  15. SpringCloud基础学习
  16. 大数据毕设 - 大数据二手房数据分析与可视化(python 爬虫)
  17. 刀根さん、御光臨を歓迎します。
  18. UNITY 5.4.0发行说明中文版(不包含bug修正部分)
  19. Jenkins自动化构建vue项目然后发布到远程服务器
  20. 计算机操作系统计算题及答案(5),5计算机操作系统练习题及答案.doc

热门文章

  1. minicom配置及使用方法
  2. 校验码中码距与纠错能力的关系
  3. 驱动?Linux驱动?到底什么是驱动?
  4. 怎么在电脑上打开epub格式电子书
  5. mtk,展讯等手机平台知识杂烩
  6. EMC VNX 中端存储系统控制器更换常见问题探讨
  7. 转:VNX存储下,连接各平台主机的Failover Mode 设置的参数
  8. 数字信号处理Matlab求解离散系统单位脉冲相应,幅频特性相频特性。
  9. 电源设计中电容的工作原理及选用
  10. iastora怎么改成ahci_如何把这个BIOS的设置从SATA设置成AHCI(附图片)