Oracle數據庫設置表空間自動擴展(解決因表空間不足引起的ORA-01653: unable to extend table錯誤)


近期學習進行壓力測試,由於大批量導入數據,Oracle數據庫產生ORA-01653: unable to extend table錯誤,原因是TABLESPACE沒有空間了。

從報錯信息可以很直觀的看出:CA_5531DATA表空間中的表無法擴展, 原因一般為:數據文件空間不足且未設置autoextend on屬性(自動擴展)或者用戶磁盤限額不足導致用戶的表無法擴展(也可不設置自動擴展,給夠充足空間的表空間數據文件)。

如果要查看當前用戶使用的表空間情況,使用如下命令:

select * from user_users

如果要查看oracle下面所有的表空間,使用如下命令:

select * from Dba_Tablespaces

查詢文件是否設置autoextend on屬性:

select file_name ,autoextensible,increment_by from dba_data_files; 

 注:這里是我修改之后截的圖,之前為NO,導致表空間不足

確定問題后,解決方法:將表空間的數據文件屬性改為自動擴展 autoextend on

設置表空間自動擴展SQL語句:

ALTER DATABASE DATAFILE <'your data_file'> AUTOEXTEND ON [NEXT <size>] [MAXSIZE <size/UNLIMITED>]

DATAFILE:要增加的表空間數據文件路徑

NEXT:每次自動擴展多少空間

MAXSIZE:最大擴展至多少空間

增加指定大小的數據文件:

ALTER TABLESPACE <your tablespace_name> ADD DATAFILE <'your data_file'> SIZE <size> [AUTOEXTEND ON] [NEXT <size>] [MAXSIZE <size/UNLIMITED>];

增加指定大小數據文件的同時也可將表空間設置為自動擴展。

 

1.數據文件自動擴展的好處
1)不會出現因為沒有剩余空間可以利用到數據無法寫入
2)盡量減少人為的維護
3)可以用於重要級別不是很大的數據庫中,如測試數據庫等

2.數據文件自動擴展的弊端
1)如果任其擴大,在數據量不斷變大的過程中會導致某個數據文件異常的大
2)沒有人管理的數據庫是非常危險的

 

注:自動擴展表空間也不是無限擴展的

表空間數據文件容量與DB_BLOCK_SIZE有關,在初始建庫時,DB_BLOCK_SIZE要根據實際需要,設置為 4K、8K、16K、32K、64K等幾種大小,ORACLE的物理文件最大只允許4194304個數據塊(由操作系統決定),表空間數據文件的最大值為 4194304×DB_BLOCK_SIZE/1024M。

如圖所示,當db_block_size為8192時,表空間最大只能擴展到32G。

在oracle11g中引進了bigfile表空間,他充分利用了64位CPU的尋址能力,使oracle可以管理的數據文件總量達到8EB。單個數據文件的大小達到128TB,即使默認8K的db_block_size也達到了32TB。

創建bigfile的表空間使用的sql語句和創建表空間的語句使用基本相同。

create bigfile tablespace···

需要注意的是使用bigfile表空間,它只能支持一個數據文件。也就是說這個文件的最大大小就是表空間最大大小,你不可能通過增加數據文件來擴大該表空間的大小。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM