Oracle修改表空間大小,以及引數設定
阿新 • • 發佈:2018-12-02
- 問題描述
在向orale資料庫匯入資料的時候報 ORA-01658: 無法為表空間 XXX中的段建立 INITIAL 區錯誤。
這是由於表空間對應的資料檔案中資料量超過Oracle在建立表空間的時候資料檔案初始化大小值,當資料量達到這個值,再向資料庫中匯入資料就會報錯。 - 解決方案
解決辦法就是擴充套件表空間,可以選擇將表容量擴大,比如擴充套件到5000MB,或者當表空間不夠時每次自動增加一定的容量,如每次自增200M。
--查看錶空間大小
SELECT FILE_NAME as 資料檔案,TABLESPACE_NAME as 表空間名稱,AUTOEXTENSIBLE as 自動擴充套件,STATUS as 狀態,MAXBYTES as 可擴充套件最大值,USER_BYTES as 已使用大小,INCREMENT_BY as 自動擴充套件增量 FROM dba_data_files
- 1
- 2
--擴充套件空間,將資料檔案擴大至5000MB
alter database datafile 'D:\DataBase\Test.DBF' resize 5000m;
- 1
- 2
--自動增長,表空間不足時增加200MB,最大擴充套件5000MB
alter database datafile 'D:\DataBase\Test.DBF' autoextend on next 200m maxsize 5000m;
- 1
- 2
--擴充套件無限大空間
alter database DATAFILE 'D:\DataBase\Test.DBF' autoextend on maxsize unlimited;
- 1
- 2
- 3
- 注意表空間大小限制
表空間資料檔案容量與DB_BLOCK_SIZE有關,在初始建庫時,DB_BLOCK_SIZE要根據實際需要,設定為 4K,8K、16K、32K、64K等幾種大小,ORACLE的物理檔案最大隻允許4194304個數據塊(由作業系統決定)
即:
4k最大表空間為:16384M
8K最大表空間為:32768M
16k最大表空間為:65536M
32K最大表空間為:131072M
64k最大表空間為:262144M
所以將maxsize設定為unlimited也並非能無限擴充套件,還受限於區塊大小,即blocksize大小,如一般blocksize預設8k,資料檔案大小最大也只能擴充套件到32GB。當然可以設定bigfile(大檔案表空間),8k的blocksize表空間檔案理論上最大可以擴充套件32TB,但是實際上受作業系統的檔案系統限制。使用大檔案表空間(bigfile tablespace)可以大幅度增強Oracle資料庫的儲存能力,簡化資料庫管理工作。與此同時,付出的代價是增加備份與恢復的時間。如果是中小型專案,資料量在TB級以內,建議使用小檔案表空間。一個小檔案表空間(smallfile tablespace)最多可以包含1022個數據檔案(datafile)。詳細可看Oracle物理檔案限制大小表格Physical Database Limits
新增表空間資料檔案sql指令碼如下:
--增加資料檔案,TestTablespace是這裡測試使用的表空間名稱
alter tablespace TestTablespace add datafile 'D:\DataBase\Test2.DBF' size 1024m;