[20121114]Oracle資料檔案大小限制.txt
[20121114]Oracle資料檔案大小限制.txt
SQL> show parameter db_block_size
NAME TYPE VALUE
-------------- ----------- ------
db_block_size integer 8192
8 rows selected.
--我使用的資料檔案都是smallfile,可以發現最大檔案大小MAXBYTES=34359721984,最大允許的塊MAXBLOCKS=4194302。
--4194302 *8192 正好等於 34359721984。
而
SQL> select 34359721984/1024/1024/1024 from dual ;
34359721984/1024/1024/1024
--------------------------
31.9999847
並沒有達到32G。為什麼呢?
主要是由於在Oracle的Rowid中使用22位來代表Block號,這22位最多隻能代表2^22-1(4194303)個資料塊.
[補充一點,每個資料檔案的第一個塊(block 0 )是OS block header,在資料庫中查詢不到資訊,記錄的是OS資訊,以及檔案大小的等資訊]
$ ls -l /u01/app/oracle11g/oradata/test/test01.dbf
-rw-r----- 1 oracle11g oinstall 67117056 Nov 14 00:06 /u01/app/oracle11g/oradata/test/test01.dbf
--可以發現ls -l看到的與dba_data_files查詢到的存在差異! 67117056 - 67108864 = 8192.正好相差1個塊。
--也就是如果你建立一個64M的資料檔案,實際上的os看檔案的大小是64*1024*1024+8192=67117056.
--從v$datafile檢視也可以發現:
這樣實際上2^22-2=4194302.也就是最大允許的資料塊是4194302。實際8k資料塊資料檔案最大從OS看就是34359721984+8192=34359730176.
SQL> show parameter db_block_size
NAME TYPE VALUE
-------------- ----------- ------
db_block_size integer 8192
SQL> SELECT file_name, file_id, tablespace_name, BYTES, blocks, status, relative_fno, maxbytes, maxblocks, online_status FROM dba_data_files;
FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO MAXBYTES MAXBLOCKS ONLINE_
---------------------------------------------- ---------- -------------------- ---------- ---------- --------- ------------ ---------------------- ---------- -------
/u01/app/oracle11g/oradata/test/system01.dbf 1 SYSTEM 807403520 98560 AVAILABLE 1 34359721984 4194302 SYSTEM
/u01/app/oracle11g/oradata/test/sysaux01.dbf 2 SYSAUX 880803840 107520 AVAILABLE 2 34359721984 4194302 ONLINE
/u01/app/oracle11g/oradata/test/undotbs01.dbf 3 UNDOTBS1 1073741824 131072 AVAILABLE 3 34359721984 4194302 ONLINE
/u01/app/oracle11g/oradata/test/users01.dbf 4 USERS 687865856 83968 AVAILABLE 4 34359721984 4194302 ONLINE
/u01/app/oracle11g/oradata/test/example01.dbf 5 EXAMPLE 104857600 12800 AVAILABLE 5 34359721984 4194302 ONLINE
/u01/app/oracle11g/oradata/test/rman01.dbf 6 RMAN 67108864 8192 AVAILABLE 6 34359721984 4194302 ONLINE
/u01/app/oracle11g/oradata/test/tools01.dbf 7 TOOLS 67108864 8192 AVAILABLE 7 34359721984 4194302 ONLINE
/u01/app/oracle11g/oradata/test/test01.dbf 8 TEST 67108864 8192 AVAILABLE 8 34359721984 4194302 ONLINE
8 rows selected.
--我使用的資料檔案都是smallfile,可以發現最大檔案大小MAXBYTES=34359721984,最大允許的塊MAXBLOCKS=4194302。
--4194302 *8192 正好等於 34359721984。
而
SQL> select 34359721984/1024/1024/1024 from dual ;
34359721984/1024/1024/1024
--------------------------
31.9999847
並沒有達到32G。為什麼呢?
主要是由於在Oracle的Rowid中使用22位來代表Block號,這22位最多隻能代表2^22-1(4194303)個資料塊.
[補充一點,每個資料檔案的第一個塊(block 0 )是OS block header,在資料庫中查詢不到資訊,記錄的是OS資訊,以及檔案大小的等資訊]
$ ls -l /u01/app/oracle11g/oradata/test/test01.dbf
-rw-r----- 1 oracle11g oinstall 67117056 Nov 14 00:06 /u01/app/oracle11g/oradata/test/test01.dbf
--可以發現ls -l看到的與dba_data_files查詢到的存在差異! 67117056 - 67108864 = 8192.正好相差1個塊。
--也就是如果你建立一個64M的資料檔案,實際上的os看檔案的大小是64*1024*1024+8192=67117056.
--從v$datafile檢視也可以發現:
SQL> SELECT block1_offset,name FROM v$datafile;
BLOCK1_OFFSET NAME
------------- --------------------------------------------------
8192 /u01/app/oracle11g/oradata/test/system01.dbf
8192 /u01/app/oracle11g/oradata/test/sysaux01.dbf
8192 /u01/app/oracle11g/oradata/test/undotbs01.dbf
8192 /u01/app/oracle11g/oradata/test/users01.dbf
8192 /u01/app/oracle11g/oradata/test/example01.dbf
8192 /u01/app/oracle11g/oradata/test/rman01.dbf
8192 /u01/app/oracle11g/oradata/test/tools01.dbf
8192 /u01/app/oracle11g/oradata/test/test01.dbf
8 rows selected.
這樣實際上2^22-2=4194302.也就是最大允許的資料塊是4194302。實際8k資料塊資料檔案最大從OS看就是34359721984+8192=34359730176.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-749176/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- apache上傳檔案大小限制Apache
- PbootCMS上傳檔案大小限制boot
- php檔案上傳大小限制PHP
- 限制檔案大小及顯示檔案大小(正規表示式
- JavaScript限制上傳檔案的大小JavaScript
- 禪道檔案大小限制-nginx 調整Nginx
- 限制 Apache日誌檔案大小的方法Apache
- Nginx 調整檔案上傳大小限制Nginx
- [20190530]oracle Audit檔案管理.txtOracle
- Oracle 資料檔案回收Oracle
- Android Intent 傳遞資料大小限制AndroidIntent
- SQLSERVER匯出TXT文字檔案,ORACLE SQL LOADER匯入TXT文字檔案SQLServerOracle
- 修改SharePoint上傳檔案大小限制(Changing Maximum Upload Size)
- [20230508]crack oracle執行檔案.txtOracle
- [20181203]改變檔案大小與檢查點.txt
- [20180319]windows批處理檔案大小比較.txtWindows
- [20190410]dg建立臨時表檔案資料檔案.txt
- Linux: 如何分割檔案,不再被 4G 大小限制了Linux
- vue ElementUI upload上傳檔案時對檔案格式、大小和寬高的限制VueUI
- [20191129]oracle Audit檔案管理3.txtOracle
- [20191128]oracle Audit檔案管理2.txtOracle
- Oracle資料檔案和臨時檔案的管理Oracle
- oracle資料庫的配置檔案Oracle資料庫
- oracle 線上rename資料檔案Oracle
- [20220826]ls顯示檔案不區分大小寫.txt
- 修改Oracle資料檔名及資料檔案存放路徑Oracle
- [20181102]資料檔案改名與awr.txt
- Python提取文字檔案(.txt)資料的方法Python
- [20230224]改動資料檔案小技巧.txt
- Oracle資料庫限制訪問IPOracle資料庫
- oracle徹底刪除資料檔案Oracle
- oracle uncatalog資料庫備份檔案Oracle資料庫
- [20180718]拷貝資料檔案從dg庫.txt
- [20221014]資料檔案2的小疑問.txt
- [20201218]資料檔案OS頭的修復.txt
- 關於Oracle 10g ASM磁碟大小的限制Oracle 10gASM
- [20210622]logrotate清除oracle aud檔案的問題.txtlogrotateOracle
- 如何限制ip訪問Oracle資料庫Oracle資料庫
- oracle dg庫資料檔案空間不足Oracle