oracle对数据块的存取,简单了解数据在Oracle文件中的存储
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文件中的存储相关推荐
- 向HBase中导入数据3:使用MapReduce从HDFS或本地文件中读取数据并写入HBase(增加使用Reduce批量插入)
前面我们介绍了: 向HBase中导入数据1:查询Hive后写入 向HBase中导入数据2:使用MapReduce从HDFS或本地文件中读取数据并写入HBase(只使用Map逐条查询) 为了提高插入效率 ...
- c语言实现文件数据删除视频,如何用c语言实现删除文件中指定的数据;例如
匿名用户 1级 2012-05-21 回答 你的描述不清晰,B1和B2两个结构数组,到底要删除哪个?B[2]是肯定不对的,这两个数组的长度都是2,下标只能是0和1,即B1[0], B1[1], B2[ ...
- 简单了解数据在Oracle文件中的存储
2010-02-13 目的: 1. 了解数据块转储 2. 简单认证数据在ORACLE文件的存储 测试环境: VM+Win2003+Oracle11g DB_BLOCK_SIZE 8k C:\Docum ...
- oracle remap语句格式,oracle通过expdp的remap_data实现简单的数据脱敏
oracle 11g开始,在impdp/expdp中提供remap_data参数,实现对导入或导出操作时转换数据.如果生产库数据要导出给测试库使用,并需要转换敏感数据,可以考虑通过remap_data ...
- c语言数据块写入函数,C语言数据块读写函数:fread和fwrite
在前面曾经介绍过C语言中的各种读写函数,首先是最简单的读写一个字符的函数fputc和fgetc,在这个基础上又出现了putw和getw.fgets和fputs,此外还说过格式化读写函数fprintf和 ...
- [云炬python3玩转机器学习笔记] 3-12 数据加载和简单的数据探索
读取数据和简单的数据探索 In [1]: import numpy as np In [2]: import matplotlib as mpl import matplotlib.pyplot as ...
- 【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )
文章目录 一.学生管理系统 二.代码示例 一.学生管理系统 前两篇博客 [C 语言]文件操作 ( 将结构体写出到文件中并读取结构体数据 | 将结构体数组写出到文件中并读取结构体数组数据 ) [C 语言 ...
- php 把查询数据转json格式,php将从数据库查询到的数据转化为json格式,并写入json文件中...
1.主要是对数据进行编码 $str=json_encode($jarr);//将数组进行json编码 2.其次是写入json文件中 $file = fopen("../../code/myC ...
- 网站数据是怎么存取在mysql_数据是怎么存储在mysql?
我们都知道mysql数据库能存储大量数据,但是你知道数据是怎么存储在mysql中的吗? 一般将数据保存到MySQL中有两种方式,同步模式和异步模式. 同步模式 同步模式是采用SQL语句,将数据插入到数 ...
最新文章
- 有必要做 Code Review 吗???
- DeepMind、哈佛造出了 AI「小白鼠」,从跑、跳、觅食、击球窥探神经网络的奥秘...
- Ensure that you have installed a JDK (not just a JRE) and configured your JAVA_HOME system variable
- 使用OpenGL绘制圆环体(Torus)
- C++ SYN攻击源码
- CVTE2016校招试题摘选
- IOS开发(104)之程序执行状态更改
- html对定位图片的某一部分_某系统存任意文件上传
- 坚持练字一年是什么样的体验?
- linux系统怎么安装小小输入法,CentOS 7.0下安装小小输入法
- 编译安装wpa_supplicant
- 一阶系统开环传递函数表达式_自动控制总结:第五章、线性系统的校正方法
- DNSPOD实现DDNS动态域名解析功能
- 电脑蓝屏显示(你的电脑遇到问题,需要重新启动,你可以重新启动)
- SpringCloud基础学习
- 大数据毕设 - 大数据二手房数据分析与可视化(python 爬虫)
- 刀根さん、御光臨を歓迎します。
- UNITY 5.4.0发行说明中文版(不包含bug修正部分)
- Jenkins自动化构建vue项目然后发布到远程服务器
- 计算机操作系统计算题及答案(5),5计算机操作系统练习题及答案.doc