标准的 Oracle 数据文件最多可以包含 4194303 个 Oracle 数据块。所以这也表示单个数据文件大小的上限取决于所用的 Oracle 块大小。

(MOS ID 112011.1)

SQL> SELECT TO_CHAR (4194303 * VALUE, '999,999,999,999')MAX_BYTES,TO_CHAR (TRUNC (4194303 * VALUE / 1024), '999,999,999') || ' Kb'MAX_KB,TO_CHAR (TRUNC (4194303 * VALUE / 1024 / 1024), '999,999') || ' Mb'MAX_MBFROM v$parameterWHERE name = 'db_block_size';  2    3    4    5    6    7    8  MAX_BYTES                    MAX_KB                        MAX_MB
------------------------------------------------ --------------------------------------------- ---------------------------------34,359,730,176                   33,554,424 Kb                 32,767 Mb

8k最大为32,767 Mb。DB_BLOCK_SIZE与文件最大值的对应关系如下:

 DB_BLOCK_SIZE    File Max Mb
~~~~~~~~~~~~~     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2048             8191 M4096            16383 M8192            32767 M16384           65535 M

尝试修改下数据文件的大小:

SQL> select file_id,file_name,bytes/1024/1024 mb from dba_data_files;   FILE_ID FILE_NAME                         MB
---------- --------------------------------------------- ----------4 /u01/oradata/prodb/users01.dbf            106.253 /u01/oradata/prodb/sysaux01.dbf          2702 /u01/oradata/prodb/undotbs01.dbf         6051 /u01/oradata/prodb/system01.dbf          6305 /u01/oradata/prodb/example01.dbf         1006 /u01/oradata/prodb/test_01.dbf           2006 rows selected.SQL> alter database datafile 6 resize 33G;
alter database datafile 6 resize 33G
*
ERROR at line 1:
ORA-01144: File size (4325376 blocks) exceeds maximum of 4194303 blocks

报错,不能超过4194303 blocks限制。

标准数据文件中的4194303块数从哪里来的呢?

普通数据文件数据的详细地址是由Base64编码的18位rowid组成,形式如下:

OOOOOOFFFBBBBBBRRR
OOOOOO:6位,data object id
FFF:   3位,relative_fno
BBBBBB:6位,data block number
RRR:   3位,row number

查询表中某一行的信息:

SELECT SUBSTR (ROWID, 1, 6)  "object",SUBSTR (ROWID, 7, 3)  "file",SUBSTR (ROWID, 10, 6) "block",SUBSTR (ROWID, 16, 3) "row"FROM hr.employeesWHERE ROWNUM = 1;       "object" "file" "block" "row"
AAAMg6   AAF    AAAABY  ABD 

也可以使用DBMS_ROWID:

SELECT DBMS_ROWID.rowid_object (ROWID)       obj#,DBMS_ROWID.rowid_relative_fno (ROWID) rfile#,DBMS_ROWID.rowid_block_number (ROWID) block#,DBMS_ROWID.rowid_row_number (ROWID)   row#,FROM hr.employeesWHERE ROWNUM = 1;

rowid转换为2进制数为:
32bit obj# + 10bit file# + 22bit block# + 16bit row#

由此我们可以得出以下结论:
一个库最大obj数=2^32=4G
一个表空间最大file数=2^10=1024(除去file_id=0的数据文件,共1023)
一个数据文件最大block数=2^22=4M=4194303
一个块最大的数据行数=2^16=64K

限制请参考:https://docs.oracle.com/cd/B19306_01/server.102/b14237/limits.htm#REFRN004

oracle 10g推出了大文件表空间,可以突破以上文件大小限制。
在大文件表空间中,一个表空间仅包含一个文件,rowid中3位relative_fno不再需要保存相对文件号信息,全部扩展到block,rowid变为OOOOOO.BBBBBBBBB.RRR.
rowid转换为2进制数为:
32bit obj# + 32bit block# + 16bit row#
一个数据文件最大block数=2^32=4G
因此,对于同样的是8K的数据块,大文件表空间的的文件容量上限为32TB。

大文件表空间的文件号以1024开始。
大文件表空间不支持UNDO,TEMPORARY和SYSTEM表空间。

转载于:https://blog.51cto.com/hunt1574/2134628

oracle文件大小的限制相关推荐

  1. oracle 文件大小为零,windows Oracle数据文件大小为0的恢复case

    本站文章除注明转载外,均为本站原创: 转载自love wife love life -Roger 的Oracle技术博客 本文链接地址: windows Oracle数据文件大小为0的恢复case 一 ...

  2. Redhat 中裸设备(raw) 的配置和oracle中使用

    1.对磁盘进行分区 fdisk -l 查看磁盘情况 fdisk /dev/sdb 进行分区操作 2.配置裸设备(修改/etc/udev/rules.d/60-raw.rules文件) 在redhat5 ...

  3. oracle设置大表空间,Oracle怎样设置表空间数据文件大小

    这篇文章主要介绍了Oracle如何设置表空间数据文件大小,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下 Oracle数据文件默认大小上限是32G,如果要数据文件大于32G,需要在 ...

  4. 修改oracle日志大小,修改Oracle重做日志文件大小

    修改Oracle重做日志文件大小 1.创建3个新的日志组 SQL> ALTER DATABASE ADD LOGFILE GROUP 4 ('/u01/app/oracle/oradata/or ...

  5. SQLSERVER 和 ORACLE 查询数据库文件大小

    SQLSERVER: SQLSERVER一个库的文件分为数据文件(行数据)和日志文件两个文件,详情可以在数据库的属性->文件中查看. 在资源管理器中打开文件所在路径可以直接看到这两个文件 但是, ...

  6. oracle 增加ora容量_案例:Oracle报错ORA-01144 详解数据文件大小32GB的限制的原因

    天萃荷净 Oracle数据文件大小的限制,运维DBA在向Oracle数据库添加一个32G的数据文件的时候报错ORA-01144,分析原因为数据库针对文件有32G限制 1.添加数据文件报错ORA-011 ...

  7. oracle日志文件大小规则,在线重做Oracle日志文件大小

    下面为您介绍的方法用于实现在线重做Oracle日志文件大小,如果您在Oracle日志文件方面遇到过类似的问题的话,不妨一看. 1.创建2个新的日志组 alter database add logfil ...

  8. oracle trace 文件名,限制oracle trace 文件大小

    限制oracle trace 文件大小 2007-10-10 17:34:55|  分类: oracle |  标签:|字号 max_dump_file_size参数在oracle数据库中用来限制 o ...

  9. 10g数据库入门与实践 oracle_修改oracle数据文件大小 报错:ORA-03297

    修改oracle数据文件大小 报错:ORA-03297 数据库中SXSJ的表空间SXS文件在创建的时候由于达到最大块空间,增加了一个SXSJ1的数据文件,但是增加时直接给的文件大小是30G,过于占用空 ...

最新文章

  1. python画卡通人物用什么_干啥啥不行,吹牛第一名——Python头像动漫化,快来用女朋友照片生成一个动漫头像吧...
  2. VS2005的depends工具 (分析EXE)
  3. C语言数理逻辑题目,数学逻辑推理题整理,看看你能答对多少
  4. mysql参数之innodb_buffer_pool_size大小设置
  5. 计算机管理 网络延时打开,如何解决网络延时-如何解决局域网访问延迟问题?通过局域网访问网内机子,有时候半天没 爱问知识人...
  6. 最后2天!快去登录你的百度网盘,不然。。。
  7. python获取文件列表失败_python – Pytesseract没有这样的文件或目录错误
  8. Windows Server 2008 RC1标准版
  9. 原子结构示意图全部_原子结构示意图全部-原子结构示意图规律口诀-前20号元素的原子结构示意图...
  10. Linux批量修改文件名称
  11. 手机端网页-微信授权登录
  12. C#学习笔记:GDI图形高级编程(1)——如何将图形画到控件上
  13. 广州移动MGV3001_ZG_S905L3_UWE5621DS_线刷固件包
  14. 软件工程3 软件开发过程
  15. 卫生事业单位计算机科学与技术,2021年卫生事业单位考试计算机科学与技术知识点-20210417090636.doc-原创力文档...
  16. 计算机文字输入原理,也谈计算机汉字键盘设计“三原理”
  17. [No0000C8]英特尔快速存储IRST要不要装
  18. 少年,下班后你都做什么?
  19. 如何卸载阿里云ECS服务器的阿里云盾和安骑士
  20. win10 系统自带画图工具 mspaint

热门文章

  1. Spring的AOP原理
  2. POI导出excel日期格式
  3. Java程序员从笨鸟到菜鸟之(九)——数据库有关知识补充(事务、视图、索引、存储过程)
  4. Facebook 工程师是如何高效工作的?
  5. tornado异步请求非阻塞
  6. Java LinkedHashMap类源码解析
  7. 【C++多线程系列】【四】将类的成员函数作为线程启动函数
  8. iOS 延迟1.5s 执行方法
  9. 关于.NET参数传递方式的思考
  10. Linux之DNS服务器搭建及常见DNS***和防御