标准的甲骨文数据文件最多可以包含4194303个Oracle数据块。所以这也表示单个数据文件大小的上限取决于所用的甲骨文块大小。
112011.1 (MOS ID)
引用><代码>完成;选择TO_CHAR(4194303 *价值,' 999999999999 ') MAX_BYTES, TO_CHAR (TRUNC(4194303 *值/1024),' 999999999 ')| |“知识库” MAX_KB, TO_CHAR (TRUNC(4194303 *值/1024/1024),' 999999 ')| |“m” MAX_MB 从v参数 name=' db_block_size ';2 3 4 5 6 7 8 MAX_BYTES MAX_KB MAX_MB - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 34359730176 33554424 Kb 32767 Mb 代码>8 k最大为32767 Mb.DB_BLOCK_SIZE与文件最大值的对应关系如下:
<代码> DB_BLOCK_SIZE马克斯Mb的文件 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 2048 8191 4096 16383 8192 32767 16384年65535 代码>尝试修改下数据文件的大小:
<代码>完成;选择file_id、file_name字节/1024/1024从dba_data_files mb; FILE_ID FILE_NAME MB - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4/u01/oradata/prodb/users01。dbf 106.25 3/u01/oradata/prodb/sysaux01。dbf 270 2/u01/oradata/prodb/undotbs01。dbf 605 1/u01/oradata/prodb/system01。dbf 630 5/u01/oradata/prodb/example01。dbf 100 6/u01/oradata/prodb/test_01。dbf 200 6行选择。 完成;修改数据库数据文件6调整33 g; 修改数据库数据文件6调整33 g * 误差在1号线: ora - 01144:文件大小(4325376块)超过最多4194303块代码>报错,不能超过4194303块限制。
标准数据文件中的4194303块数从哪里来的呢?
普通数据文件数据的详细地址是由Base64编码的18位rowid组成,形式如下:
<代码> OOOOOOFFFBBBBBBRRR OOOOOO: 6位,数据对象id FFF: 3位,relative_fno BBBBBB: 6位,数据块编号 存款准备金率:3位,行号代码>查询表中某一行的信息:
<代码>选择SUBSTR (ROWID (1,6)“对象”, SUBSTR (ROWID 7 3)“文件”, SUBSTR (ROWID 10 6)“块”, SUBSTR (3) ROWID, 16日“行” 从hr.employees ROWNUM=1; “对象”“文件”“块”“行” AAAMg6空军联队AAAABY ABD 代码>也可以使用DBMS_ROWID:
<代码>选择DBMS_ROWID。rowid_object (ROWID) obj #, DBMS_ROWID。rowid_relative_fno (ROWID) rfile #, DBMS_ROWID。rowid_block_number (ROWID)块#, DBMS_ROWID。rowid_row_number (ROWID)行#, 从hr.employees ROWNUM=1; 代码>rowid转换为2进制数为:
<代码> 32位obj # + 10位文件# + 22位块# + 16位行# 代码>由此我们可以得出以下结论:
一个库最大obj数=2 ^ 32=4 g
一个表空间最大文件数=2 ^ 10=1024(除去file_id=0的数据文件,共1023)
一个数据文件最大块数=2 ^ 22=4 m=4194303
一个块最大的数据行数=2 ^ 16=64 k限制请参考:https://docs.oracle.com/cd/B19306_01/server.102/b14237/limits.htm REFRN004
引用>oracle 10 g推出了大文件表空间,可以突破以上文件大小限制。
在大文件表空间中,一个表空间仅包含一个文件,rowid中3位relative_fno不再需要保存相对文件号信息,全部扩展到块,rowid变为OOOOOO.BBBBBBBBB.RRR。
rowid转换为2进制数为:
<代码> 32位obj # + 32位块# + 16位行# 代码>
一个数据文件最大块数=2 ^ 32=4 g
因此,对于同样的是8 k的数据块,大文件表空间的的文件容量上限为32结核病。大文件表空间的文件号以1024年开始。
大文件表空间不支持撤销,临时和系统表空间。甲骨文文件大小的限制