学习自EYGLE循序渐进ORACLE及官方文档。
本地管理表空间中设置不同大小的db_block_size时数据文件头保留空间对应如下:
db_block_size=2KB,文件头保留32个数据块,即64KB。
db_block_size=4KB,文件头保留16个数据块,即64KB。
db_block_size=8KB,文件头保留8个数据块,即64KB。
db_block_size=16KB,文件头保留4个数据块,即64KB。
db_block_size=32KB,文件头保留4个数据块,即128KB。
默认是db_block_size=8KB,此时 ORACLE数据文件头的8个数据块作用是:
数据块1和2记录数据文件头信息。3-8用于记录extent-区间的位图信息  --11G中要保留到128个块???
################################
Oracle数据库中的数据文件的最大数量是有限的(通常为64K文件)。--来自官方文档

表空间支持的最大数据文件大小的算法:

分两种情况:smallfile tablespace与bigfile tablespace
smallfile tablespace的ROWID
记录存储所在数据文件(file#),所属数据库对象,所在数据块中的行号,这些属性合并起来构成了ORACLE ROWID.
ORACLE ROWID分为物理ROWID,逻辑ROWID。
索引组织表(IOTs)使用逻辑ROWID,其它类型的表使用物理ROWID。
ROWID可以惟一标识一条记录,所以索引中存储了ROWID的值,通过访问索引,得到ROWID,再定位到记录。

ROWID采用Base64编码,共18位代表80位二进制数,占用10个字节。
每组字符代表不同的含义,18位最大寻址空间“32G”。。
对一条行ID的解析:OOOOOO.FFF.BBBBBB.RRR   --其中.是为了方便观看手动增加
OOOOOO: 1-6位:对象id
FFF:    7-9位:文件id
BBBBBB: 10-15位:块id
RRR:    16-18位:行id
对于Base64编码,共18位代表80位二进制数,计算方法是:
32bit obj# + 10bit file#  + 22bit block#  +  16bit row#
通过ROWID计算数据块的相关信息,详见:http://blog.csdn.net/q947817003/article/details/11490051
根据small file tablespace的ROWID,计算出表空间、数据文件、BOOCK中行最大数如下:
根据ROWID的构成:          ---注:2^10这种写法代表2的10次方,等于1024.
每个表空间最大文件数:      2^10 1024 ,去掉全0和全1 通常1022个  ---实验测试出是1023个,见:数据文件个数大于1024时ORACLE数据文件FILE_ID及RELATIVE_FNO的变化示例
每数据文件最大数据块数量:filesize=block_size*2^22   ,也就是4M个ORACLE BLOCK
每个BLOKC中行数是:       2^16   65536,也就是每个BLOCK最多65536条记录

每个数据库最多65536个-64K个数据文件(实验测试出是65534----官方文档上是65533-http://docs.oracle.com/cd/B19306_01/server.102/b14237/limits002.htm#i287915),最多支持64K个表空间,因为每个表空间最少需要包含一个数据文件。引出新问题:如果数据库有大于1024个数据文件,ORACLE如何通过ROWID定位数据文件呢? --详见:数据文件个数大于1024时ORACLE数据文件FILE_ID及RELATIVE_FNO的变化示例

更详细的数据库限制见官方文档:http://docs.oracle.com/cd/B19306_01/server.102/b14237/limits.htm#REFRN004
smallfile tablespace设置不同大小的db_block_size时数据文件允许的最大大小
db_block_size=2KB,2KB*4M=8192M      8G
db_block_size=4KB,4KB*4M=16384M     16G
db_block_size=8KB,8KB*4M=32768M     32G     8*1024*4M=8*4G=32G
db_block_size=16KB,16KB*4M=65536M   64G
db_block_size=32KB,32KB*4M=131072M   128G
#########################################################
BIGFILE表空间的ROWID
因为大文件表空间只能包含一个文件,所以ROWID中不需要file#-文件ID。
大文件表空间的ROWID格式为:
OOOOOO.LLLLLLLLL.RRR
OOOOOO: 1-6位:对象id
LLLLLLLLL: 7-15位:块id
RRR:    16-18位:行id
L代表BLOCK号,代替了小文件表空间中ROWID中的file#  +  block#的位置.
这样大文件表空间的数据文件支持的BLOCK数量最多是:2bit. 2^32=4G. 
bigfile tablespace设置不同大小的db_block_size时数据文件允许的最大大小
db_block_size=2KB,2KB*4G= 8T
db_block_size=4KB,4KB*4G= 16T
db_block_size=8KB,8KB*4G= 32T        8*1024*4G=8*4TB=32TB
db_block_size=16KB,16KB*4G= 64T
db_block_size=32KB,32KB*4G=128TB
本文引用:https://blog.csdn.net/haibusuanyun/article/details/16847005

数据文件头块保留大小、ROWID、数据文件最大大小等数据库限制的说明相关推荐

  1. 分享:bbed修改数据文件头推进scn与其他数据文件相同

    2019独角兽企业重金招聘Python工程师标准>>> 场景简介: 物理copy表空间数据文件,数据库发生完全检查点,删除该表空间下的数据文件,使该表空间数据文件头的scn与其他数据 ...

  2. 修改oracle的表空间文件scn,分享:bbed修改数据文件头推进scn与其他数据文件相同...

    场景简介: 物理copy表空间数据文件,数据库发生完全检查点,删除该表空间下的数据文件,使该表空间数据文件头的scn与其他数据文件不一致. 场景构造: 1.创建测试表空间 SYS@orser> ...

  3. oracle恢复指定数据文件,Oracle特殊恢复-BBED修改某个数据文件头

    Oracle数据文件头中的scn要与控制文件中的scn一致,数据库才可以open,在open过程中我们可以通过bbed来修改某个数据文件头的scn,来欺骗oracle,来open库. 1.环境如下 使 ...

  4. 使用BBED恢复数据文件头

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/31018075 @@@@@@@利用BBED模拟损坏5文件1号块(文件头) BBED> ...

  5. oracle scn与数据恢复,Oracle数据恢复:数据文件头的SCN与时间校验

    Oracle数据恢复:数据文件头的SCN与时间校验 SQL> alter database open; alter database open * ERROR at line 1: ORA-01 ...

  6. oracle 录制响应文件格式_ORACLE 11G 数据文件头格式

    11G版本 BBED> print kcvfh struct kcvfh, 860 bytes                     @0 struct kcvfhbfh, 20 bytes  ...

  7. oracle 文件头格式,ORACLE 11G 数据文件头格式

    11G版本 BBED> print kcvfh struct kcvfh, 860 bytes @0 struct kcvfhbfh, 20 bytes @0 ub1 type_kcbh @0 ...

  8. Oracle数据文件scn不一致,控制文件与数据文件头SCN不一致导致数据库无法启动故障处理...

    环境说明 OS操作系统:WINDOWS 2012 64位 数据库版 本:ORACLE 11.2.0.1 故障问题描述 客户反映数据库无法启动,报ORA-01589:要打开数据库必须使用RESETLOG ...

  9. oracle 查询重复数据并且删除, 只保留一条数据

    数据库操作中,经常会因为导数据造成数据重复,需要进行数据清理,去掉冗余的数据,只保留正确的数据 一:重复数据根据单个字段进行判断 1.首先,查询表中多余的数据,由关键字段(name)来查询. sele ...

最新文章

  1. JavaScript语言标准
  2. java将输出结果写入csv文件_如何在Java中将数据写入.csv文件?
  3. mysql 源码安装 5.6.21_Mysql5.6.21源码安装
  4. LaunchScreen.xib 设置启动图
  5. 10玩rust_C++工程师的Rust迁移之路(5)- 继承与组合 - 下
  6. 手把手教你用ECharts画折线图
  7. 09_期望极大法EM2_统计学习方法
  8. MyEclipse激活步骤
  9. 我关注的那些程序员大佬
  10. magento 客户表相关_第9章 相关性分析
  11. 用库仑计方法来计量电池容量
  12. java实现socket网络编程
  13. 激光条纹中心线提取算法总结和复现
  14. Java Excel导出动态自定义单元格样式
  15. 开源课设-宠物诊所管理系统
  16. POJ 1265 Area(Pick定理)
  17. 技巧 | 使用基础绘图系统绘制「森林图」
  18. 南京湖南路学计算机哪家好,南京“最好吃餐厅排行榜”,去过8个,你就是超级美食达人......
  19. java基于Springboot+vue的校园二手闲置商品交易平台系统 element
  20. 使用Python下载电影

热门文章

  1. Fire Emblem Echoes oj
  2. Mac端wps耗电快的原因及解决方式
  3. IE-LAB网络实验室:5G和WIFI6,还傻傻的分不清吗?(3)
  4. MATLAB 绘制三维坐标系下的矩形框
  5. Vue----单文件组件
  6. 全球区块链第22周看点 | b1账号成RAM首富,EOS神秘新产品即将发布
  7. 配置webpack中externals来减少打包后vendor.js的体积
  8. 读《张爱玲:她从海上来》有感
  9. 2246xt u盘开卡详细教程_炫龙x8 plus如何使用bios设置u盘启动【图文教程】
  10. iOS14 Widget开发踩坑(五)定位与地图的使用