关于位图数据位和系统管理区大小-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实现 蓝桥杯 历届真题 稍大的串
串可以按照字典序进行比较.例如: abcd 小于 abdc 如果给定一个串,打乱组成它的字母,重新排列,可以得到许多不同的串,在这些不同的串中,有一个串刚好给定的串稍微大一些.科学地说:它是大于已知串 ...
- excel表 更改后缀名 xlsx转成csv csv转换xlsx
excel 转成CSV 步骤: 1.打开你需要转换的Excel表格.这里特别介绍一下多个数字的现象,我们知道,像身份证这些多位数字,在正常表格里都是会加上一个'来使其显示的,或者换成"文本& ...
- java实现自行车行程
** 自行车行程** 计算行程 低碳生活,有氧运动.骑自行车出行是个好主意.小明为自己的自行车装了个计数器,可以计算出轮子转动的圈数.在一次骑车旅行中,出发时计算器的示数为begin,到达目的地时的示 ...
- Linux笔记(第二天)
tail -1 /etc/passwd 显示最后一行 一.用户类型: 超级用户:root 超级管理员 ID=0 普通用户:系统用户:uid:1~999(centos7) 1~499(centos6 ...
- Java培训Day02——制作疫情地图(一)
一.前言 此次培训,是为期三天的网上培训.最终的目的是制作出疫情地图.首先我们来看看主要的讲课内容大纲. Day1 |-Java语法学习(个人感觉讲得还可以,主要围绕本次培训作出的讲解,没有像网上的基 ...
- Java虚拟机性能调优(一)
Java虚拟机监控与调优,借助Java自带分析工具. jps:JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程 jstat:JVM Statistics M ...
- @bzoj - 3711@ [PA2014]Druzyny
目录 @description@ @solution@ @accepted code@ @details@ @description@ 体育课上,n个小朋友排成一行(从1到n编号),老师想把他们分成若 ...
- RANK()的对比(SQL, Minitab, Excel)
RANK()的对比(SQL, Minitab, Excel)也不是想来做什么对比的,只是顺便写此文,想学习一下Minitab的应用以便用它分析解决实际的问题. 回顾 May 23文章“开窗函数_ROW ...
- Shell编译安装nginx
环境及规划 [root@nginx-node01 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) ID 主机名 ip ...
- (七)logback 异步输出日志
<!-- 异步输出 --> <appender name="ASYNC-INFO" class="ch.qos.logback.classic.Asyn ...