ORA-1653 oracle單個資料檔案最大限制
早上開發反映無法向資料庫表中填寫日誌,提示資料庫ORA-1653錯誤。
查詢資料庫告警日誌,報錯如下:
ORA-1653: unable to extend table CMTSMAIN.T0501_LOG by 128 in tablespace CMTSMAIN_TS
ORA-1653: unable to extend table CMTSMAIN.T0501_LOG by 8192 in tablespace CMTSMAIN_TS
ORA-1653: unable to extend table CMTSMAIN.T0502_LOG by 128 in tablespace CMTSMAIN_TS
ORA-1653: unable to extend table CMTSMAIN.T0502_LOG by 8192 in tablespace CMTSMAIN_TS
查詢資料庫表空間使用率,如下
SQL> select total.tablespace_name,round(total.MB,2) as Total_MB,round(total.MB-free.MB, 2) as Used_MB,round((1-free.MB/total.MB)*100, 2) as Used_Pct from (select tablespace_name, sum(bytes)/1024/1024 as MB from dba_free_space group by tablespace_name) free,(select tablespace_name, sum(bytes)/1024/1024 as MB from dba_data_files group by tablespace_name) total where free.tablespace_name=total.tablespace_name;
TABLESPACE_NAME TOTAL_MB USED_MB USED_PCT
------------------------------ ---------- ---------- ----------
CMTSMAIN_TS 32757.06 32730 99.92
表空間使用率為99.92%。
查詢表空間的資料檔案,及自動擴充套件屬性
SQL> select TABLESPACE_NAME, FILE_NAME,AUTOEXTENSIBLE from dba_data_files;
TABLESPACE_NAME FILE_NAME AUT
------------------------------ ---------------------------------------- ---
CMTSMAIN_TS /u01/data/orcl/CMTSMAIN_TS01.dbf YES
此表空間只包含一個資料檔案,檔案大小已經達到oracle單個資料檔案的最大限制。
因此, 新增資料檔案
SQL> alter tablespace CMTSMAIN_TS add datafile '/u01/data/orcl/CMTSMAIN_TS02.dbf' size 3G autoextend on;
和研發人員溝通後,此表空間有兩張表進行大量資料插入,因此增大資料檔案至30G
SQL> alter database datafile '/u01/data/orcl/CMTSMAIN_TS02.dbf' resize 30G;
同時繼續增加兩個資料檔案
SQL> alter tablespace CMTSMAIN_TS add datafile '/u01/data/orcl/CMTSMAIN_TS03.dbf' size 30G autoextend on;
SQL> alter tablespace CMTSMAIN_TS add datafile '/u01/data/orcl/CMTSMAIN_TS04.dbf' size 30G autoextend on;
檢視資料庫表空間使用率
SQL> select total.tablespace_name,round(total.MB,2) as Total_MB,round(total.MB-free.MB, 2) as Used_MB,round((1-free.MB/total.MB)*100, 2) as Used_Pct from (select tablespace_name, sum(bytes)/1024/1024 as MB from dba_free_space group by tablespace_name) free,(select tablespace_name, sum(bytes)/1024/1024 as MB from dba_data_files group by tablespace_name) total where free.tablespace_name=total.tablespace_name;
TABLESPACE_NAME TOTAL_MB USED_MB USED_PCT
------------------------------ ---------- ---------- ----------
CMTSMAIN_TS 124917.06 34269 27.43
涉及知識點,單個資料檔案大小最大為32G,原理如下
A smallfile tablespace is a traditional Oracle tablespace, which can contain 1022 datafiles or tempfiles, each of which can contain up to approximately 4 million (2^22) blocks.
資料庫資料塊是大小是8k ,
SQL> show parameter block
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 8192
那麼能建立的最大的資料檔案大小是:2^22*8K=32G,而單個資料檔案已經達到32G了,超過限制了,無法擴充套件,所以報錯。而2^22是由於Oracle的Rowid中使用22位來代表Block號,這22位最多隻能代表2^22-1(4194303)個資料塊。
又及:為了擴充套件資料檔案的大小,Oracle10g中引入了大檔案表空間,在大檔案表空間下,Oracle使用32位來代表Block號,也就是說,大檔案表空間下每個檔案最多可以容納4G個Block。
那麼也就是說當Block_size為8k時,資料檔案可以達到32T 。
查詢資料庫告警日誌,報錯如下:
ORA-1653: unable to extend table CMTSMAIN.T0501_LOG by 128 in tablespace CMTSMAIN_TS
ORA-1653: unable to extend table CMTSMAIN.T0501_LOG by 8192 in tablespace CMTSMAIN_TS
ORA-1653: unable to extend table CMTSMAIN.T0502_LOG by 128 in tablespace CMTSMAIN_TS
ORA-1653: unable to extend table CMTSMAIN.T0502_LOG by 8192 in tablespace CMTSMAIN_TS
查詢資料庫表空間使用率,如下
SQL> select total.tablespace_name,round(total.MB,2) as Total_MB,round(total.MB-free.MB, 2) as Used_MB,round((1-free.MB/total.MB)*100, 2) as Used_Pct from (select tablespace_name, sum(bytes)/1024/1024 as MB from dba_free_space group by tablespace_name) free,(select tablespace_name, sum(bytes)/1024/1024 as MB from dba_data_files group by tablespace_name) total where free.tablespace_name=total.tablespace_name;
TABLESPACE_NAME TOTAL_MB USED_MB USED_PCT
------------------------------ ---------- ---------- ----------
CMTSMAIN_TS 32757.06 32730 99.92
表空間使用率為99.92%。
查詢表空間的資料檔案,及自動擴充套件屬性
SQL> select TABLESPACE_NAME, FILE_NAME,AUTOEXTENSIBLE from dba_data_files;
TABLESPACE_NAME FILE_NAME AUT
------------------------------ ---------------------------------------- ---
CMTSMAIN_TS /u01/data/orcl/CMTSMAIN_TS01.dbf YES
此表空間只包含一個資料檔案,檔案大小已經達到oracle單個資料檔案的最大限制。
因此, 新增資料檔案
SQL> alter tablespace CMTSMAIN_TS add datafile '/u01/data/orcl/CMTSMAIN_TS02.dbf' size 3G autoextend on;
和研發人員溝通後,此表空間有兩張表進行大量資料插入,因此增大資料檔案至30G
SQL> alter database datafile '/u01/data/orcl/CMTSMAIN_TS02.dbf' resize 30G;
同時繼續增加兩個資料檔案
SQL> alter tablespace CMTSMAIN_TS add datafile '/u01/data/orcl/CMTSMAIN_TS03.dbf' size 30G autoextend on;
SQL> alter tablespace CMTSMAIN_TS add datafile '/u01/data/orcl/CMTSMAIN_TS04.dbf' size 30G autoextend on;
檢視資料庫表空間使用率
SQL> select total.tablespace_name,round(total.MB,2) as Total_MB,round(total.MB-free.MB, 2) as Used_MB,round((1-free.MB/total.MB)*100, 2) as Used_Pct from (select tablespace_name, sum(bytes)/1024/1024 as MB from dba_free_space group by tablespace_name) free,(select tablespace_name, sum(bytes)/1024/1024 as MB from dba_data_files group by tablespace_name) total where free.tablespace_name=total.tablespace_name;
TABLESPACE_NAME TOTAL_MB USED_MB USED_PCT
------------------------------ ---------- ---------- ----------
CMTSMAIN_TS 124917.06 34269 27.43
涉及知識點,單個資料檔案大小最大為32G,原理如下
A smallfile tablespace is a traditional Oracle tablespace, which can contain 1022 datafiles or tempfiles, each of which can contain up to approximately 4 million (2^22) blocks.
資料庫資料塊是大小是8k ,
SQL> show parameter block
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 8192
那麼能建立的最大的資料檔案大小是:2^22*8K=32G,而單個資料檔案已經達到32G了,超過限制了,無法擴充套件,所以報錯。而2^22是由於Oracle的Rowid中使用22位來代表Block號,這22位最多隻能代表2^22-1(4194303)個資料塊。
又及:為了擴充套件資料檔案的大小,Oracle10g中引入了大檔案表空間,在大檔案表空間下,Oracle使用32位來代表Block號,也就是說,大檔案表空間下每個檔案最多可以容納4G個Block。
那麼也就是說當Block_size為8k時,資料檔案可以達到32T 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26972107/viewspace-774143/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle資料檔案個數限制Oracle
- 注意資料檔案最大塊數限制
- oracle資料檔案大小限制Oracle
- Oracle資料檔案大小的限制Oracle
- Oracle資料檔案最大值Oracle
- oracle 資料檔案(Datafile ) 大小 限制 說明Oracle
- oracle 下最大資料檔案能建立多大Oracle大資料
- 資料檔案頭塊保留大小、ROWID、資料檔案最大大小等資料庫限制的說明資料庫
- 各檔案系統對單個檔案大小的限制
- Oracle資料庫資料檔案small file的最大值Oracle資料庫
- 誰控制資料檔案最大數限制是 db_files還是控制檔案中的maxdatafiles??
- ORACLE中資料檔案大小及數量限制初探Oracle
- [20121114]Oracle資料檔案大小限制.txtOracle
- 關於資料庫檔案最大數資料庫
- 老是搞忘,資料檔案最大值修改,記一個!!
- 各種檔案系統的允許的單個檔案最大大小
- ORACLE物理檔案大小的限制(轉)Oracle
- 【Datafile】Oracle單個datafile大小的限制Oracle
- Oracle 資料檔案回收Oracle
- oracle資料庫移動資料檔案、日誌檔案和控制檔案Oracle資料庫
- 設定oracle資料庫IP訪問限制(IP白名單黑名單)Oracle資料庫
- 給oracle新增裸裝置資料檔案(AIX單機)OracleAI
- oracle 線上rename資料檔案Oracle
- Oracle 刪除資料檔案Oracle
- oracle 資料檔案遷移Oracle
- 收縮Oracle資料檔案Oracle
- oracle刪除資料檔案Oracle
- oracle 關於-資料檔案Oracle
- oracle資料檔案遷移Oracle
- ORACLE移動資料檔案Oracle
- ORACLE 收縮資料檔案Oracle
- oracle中移動控制檔案、資料檔案、日誌檔案Oracle
- Oracle資料檔案和臨時檔案的管理Oracle
- Oracle單個資料檔案損壞,在Rman命令裡設定表空間、資料檔案offline方式來恢復最方便Oracle
- [Git命令]上傳單個檔案到GitHub專案已有資料夾Github
- oracle資料庫的配置檔案Oracle資料庫
- oracle 資料檔案offlineOracle
- oracle資料檔案驗證工具Oracle