1. 程式人生 > >Oracle修改表空間大小,以及引數設定

Oracle修改表空間大小,以及引數設定

  1. 問題描述 
    在向orale資料庫匯入資料的時候報 ORA-01658: 無法為表空間 XXX中的段建立 INITIAL 區錯誤。 
    這是由於表空間對應的資料檔案中資料量超過Oracle在建立表空間的時候資料檔案初始化大小值,當資料量達到這個值,再向資料庫中匯入資料就會報錯。
  2. 解決方案 
    解決辦法就是擴充套件表空間,可以選擇將表容量擴大,比如擴充套件到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;