关于位图数据位和系统管理区大小-P6
1 背景
Vage大师的一段话。
还有一个问题,不知道大家有没考虑到。这个问题涉及统一区大小表空间的位图块。每个二进制位对应一个区的使用情况,这是没问题的,但系统管理区大小呢?就比如刚才创建的TABLE_LHB1表,前16个区大小为64KB,之后的区大小为1MB。区的大小不同,如何用二进制位来反映区的使用情况呢?
Oracle的处理方法是这样的,以64KB(也就是8个块)为准,每个二进制位对应64KB。1MB的区,对应16个二进制位。每分配一个1MB的区,Oracle将对应的16个二进制位(也就是两个字节)设置为1。释放一个区也同样,将16个二进制位设置为0。这样就解决了区大小不统一的问题,Oracle的解决方法还是很巧妙的!
2 验证
2.1 环境信息
SYS@zkm1> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
2.2 创建表空间tbs1
SYS@zkm1> drop tablespace tbs1 including contents and datafiles;
Tablespace dropped.
SYS@zkm1> create tablespace tbs1 datafile '+arch' size 1g autoextend on;
Tablespace created.
2.3 创建表段并拓展至16个区
SYS@zkm1> create table zkm.test as select rownum id from dual where rownum=1;
Table created.
SYS@zkm1> select SEGMENT_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BYTES,BLOCKS from dba_extents where owner='ZKM' and SEGMENT_NAME like 'TEST%';
SEGMENT_NAME EXTENT_ID FILE_ID BLOCK_ID BYTES BLOCKS
--------------- ---------- ---------- ---------- ---------- ----------
TEST 0 6 128 65536 8
SYS@zkm1> alter table zkm.test allocate extent (size 960k);
Table altered.
SYS@zkm1> select SEGMENT_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BYTES,BLOCKS from dba_extents where owner='ZKM' and SEGMENT_NAME like 'TEST%';
SEGMENT_NAME EXTENT_ID FILE_ID BLOCK_ID BYTES BLOCKS
--------------- ---------- ---------- ---------- ---------- ----------
TEST 0 6 128 65536 8
TEST 1 6 136 65536 8
TEST 2 6 144 65536 8
TEST 3 6 152 65536 8
TEST 4 6 160 65536 8
TEST 5 6 168 65536 8
TEST 6 6 176 65536 8
TEST 7 6 184 65536 8
TEST 8 6 192 65536 8
TEST 9 6 200 65536 8
TEST 10 6 208 65536 8
SEGMENT_NAME EXTENT_ID FILE_ID BLOCK_ID BYTES BLOCKS
--------------- ---------- ---------- ---------- ---------- ----------
TEST 11 6 216 65536 8
TEST 12 6 224 65536 8
TEST 13 6 232 65536 8
TEST 14 6 240 65536 8
TEST 15 6 248 65536 8
16 rows selected.
2.4 查看3号位图块信息
SYS@zkm1> select value from v$diag_info where name like 'De%';
VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/zkm/zkm1/trace/zkm1_ora_128094.trc
SYS@zkm1> exec dbms_space_admin.tablespace_dump_bitmaps('TBS1');
PL/SQL procedure successfully completed.
/////zkm1_ora_128094.trc文件信息
Header Control:
RelFno: 6, Unit: 8, Size: 131072, Flag: 9
AutoExtend: YES, Increment: 12800, MaxSize: 4194302
Initial Area: 126, Tail: 131071, First: 16, Free: 16352
Deallocation scn: 3.0
Header Opcode:
Save: No Pending Op
File Space Bitmap Block:
BitMap Control:
RelFno: 6, BeginBlock: 128, Flag: 0, First: 16, Free: 63472
FFFF000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000
...省略...
其中,FFFF即为1111 1111 1111 1111,刚好16个区。
接下去16号区(第17个),区有128个块,大小刚好为1M。按照Vage的说法,每个二进制位对应64KB(0-15号区每个区大小均为64K,所以16个二进制位即可),那么第16号区(第17个)大小位1M,需要1M*1024/64KB=16个二进制位。
那样,预计拓展到16号区(第17个)之后,会出现FFFFFFFF。
2.5 拓展16号区
SYS@zkm1> alter table zkm.test allocate extent (size 1k);
Table altered.
SYS@zkm1> select SEGMENT_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BYTES,BLOCKS from dba_extents where owner='ZKM' and SEGMENT_NAME like 'TEST%';
SEGMENT_NAME EXTENT_ID FILE_ID BLOCK_ID BYTES BLOCKS
--------------- ---------- ---------- ---------- ---------- ----------
TEST 0 6 128 65536 8
TEST 1 6 136 65536 8
TEST 2 6 144 65536 8
TEST 3 6 152 65536 8
TEST 4 6 160 65536 8
TEST 5 6 168 65536 8
TEST 6 6 176 65536 8
TEST 7 6 184 65536 8
TEST 8 6 192 65536 8
TEST 9 6 200 65536 8
TEST 10 6 208 65536 8
SEGMENT_NAME EXTENT_ID FILE_ID BLOCK_ID BYTES BLOCKS
--------------- ---------- ---------- ---------- ---------- ----------
TEST 11 6 216 65536 8
TEST 12 6 224 65536 8
TEST 13 6 232 65536 8
TEST 14 6 240 65536 8
TEST 15 6 248 65536 8
TEST 16 6 256 1048576 128
17 rows selected.
2.6 查看3号位图块信息
SYS@zkm1> select value from v$diag_info where name like 'De%';
VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/zkm/zkm1/trace/zkm1_ora_362.trc
SYS@zkm1> exec dbms_space_admin.tablespace_dump_bitmaps('TBS1');
PL/SQL procedure successfully completed.
/////zkm1_ora_362.trc文件信息
Header Control:
RelFno: 6, Unit: 8, Size: 131072, Flag: 9
AutoExtend: YES, Increment: 12800, MaxSize: 4194302
Initial Area: 126, Tail: 131071, First: 32, Free: 16336
Deallocation scn: 3.0
Header Opcode:
Save: No Pending Op
File Space Bitmap Block:
BitMap Control:
RelFno: 6, BeginBlock: 128, Flag: 0, First: 32, Free: 63456
FFFFFFFF00000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000
...省略...
正如预测那样子。
关于位图数据位和系统管理区大小-P6的更多相关文章
- 关于位图数据和标记位-P3
文章目录 1 背景 1.1 问题 2 问题1探究 2.1 没有区的情况 2.2 一个区的情况 2.3 两个区的情况 2.4 三个区的情况 2.5 四个区的情况 2.6 五个区的情况 3 问题2探究 3 ...
- 第14章 位图和位块传输_14.4 GDI位图对象(1)
14.4.1 创建DDB (1)创建 HBITMAP= CreateBitmap(cx,cy,cPlanes,cBitsPixel,lpBits); 参数 说明 cx,cy 指定位图宽度和高度,单位为 ...
- Oracle查询数据表结构(字段,类型,大小,备注)
作用:想要生成整个Oracle数据库所有表结构WORD文档(数据库设计说明书) Oracle数据库字典介绍 Oracle数据字典是有表和视图组成的,存储有关数据库结构信息的一些数据库对象.数据库 ...
- 利用union判断系统的大小端
int checkCPUendian()//返回1,为小端:反之,为大端: { union { unsigned int a; unsigned char b; }c; c.a = 1; return ...
- 64位Win8系统下安装Oracle12c
经过3个小时的折腾,终于在64位win8系统下成功安装了Oracle 12c.这篇文章主要把安装过程中遇到的一些问题总结一下,以便帮助后来人参考. 首先我把我的机器的主要配制情况列举出来: 1. 系统 ...
- 安卓下设置系统字体大小影响H5页面布局
问题描述: 调整好的h5页面,放在安卓app内嵌页面后布局正常,后来用户调整系统里面字体大小,后内嵌H5布局乱掉 问题分析: 因为用户调整了系统字体的大小,修改了根节点和body节点的font-siz ...
- AI,大数据,复杂系统 最精 40本大书单
AI,大数据,复杂系统 最精 40本大书单 原创 2017-10-30 Peter 混沌巡洋舰 如果这篇文的题目变成最全书单,那么这篇文会变得又臭又长,这个年代,关于人工智能和大数据的书,没有一万本也 ...
- Android默认系统声音/大小修改及配置【转】
本文转载自:http://blog.csdn.net/a8316124/article/details/60574859 在做定制需求的时候,需要修改系统通知的声音,将其禁用掉,避免第三方应用发送通知 ...
- win10 64位专业版系统中显示32位dcom组件配置的方法
word.excel是32位的组件,当用户64位系统在运行窗口中输入dcomcnfg命令时,在打开的组件服务管理窗口,是找不到Microsoft Excel.word程序的.另外,Windows 环境 ...
随机推荐
- Java实现 LeetCode 330 按要求补齐数组
330. 按要求补齐数组 给定一个已排序的正整数数组 nums,和一个正整数 n .从 [1, n] 区间内选取任意个数字补充到 nums 中,使得 [1, n] 区间内的任何数字都可以用 nums ...
- Java实现第十届蓝桥杯数列求值
试题 C: 数列求值 本题总分:10 分 [问题描述] 给定数列 1, 1, 1, 3, 5, 9, 17, -,从第 4 项开始,每项都是前 3 项的和.求 第 20190324 项的最后 4 位数 ...
- Java实现第八届蓝桥杯字母组串
字母组串 由 A,B,C 这3个字母就可以组成许多串. 比如:"A","AB","ABC","ABA","AA ...
- (数据科学学习手札86)全平台支持的pandas运算加速神器
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 随着其功能的不断优化与扩充,pandas已然成为 ...
- [leetcode] 股票问题
参考文章: [1] 团灭 LeetCode 股票买卖问题 [2] Most consistent ways of dealing with the series of stock problems 其 ...
- iOS-字典转模型(单模型)的实现
用模型取代字典的好处 使用字典的坏处 一般情况下,设置数据和取出数据都使用“字符串类型的key”,编写这些key时,编译器不会有任何友善提示,需要手敲, eg:dict[@"name&quo ...
- 【Flutter实战】移动技术发展史
老孟导读:大家好,这是[Flutter实战]系列文章的第一篇,这并不是一篇Flutter技术文章,而是介绍智能手机操作系统.跨平台技术的演进以及我对各种跨平台技术看法的文章. 智能手机操作系统 塞班( ...
- JVM内存结构详解
从java编程语言说起... 1. Java编程语言简介 1.1 编程语言概述 系统级和应用级 系统级:C,C++,go,erlang 应用级:C#,Java,Python,Perl,Ruby,php ...
- Jmeter(十) - 从入门到精通 - JMeter逻辑控制器 - 中篇(详解教程)
1.简介 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”. 意思 ...
- 01---eclipse使用
一.eclipse快捷键 1.alt+? 或 alt+/:自动补全代码或者提示代码,可用于main函数(main).输出函数(syso)等 2.ctrl+1:错误提示 3.ctrl+/:自动注释当前行 ...