天天看點

為ORACLE表空間或臨時表空間增加資料檔案

背景:當通過ORACLE中的create table ... as select 語句建立一張新表時,新表的資料量為比較大,如10億,這時SQL*Plus很可能就會提示“ORA-01653: ...”錯誤資訊。這個錯誤資訊暗示表空間大小不夠,需要為表空間增加資料檔案。

分析:

1. 查詢表空間剩餘位元組大小

SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024 AS "FREE SPACE(M)"

FROM DBA_FREE_SPACE

WHERE TABLESPACE_NAME = '&tablespace_name'

GROUP BY TABLESPACE_NAME;

注:如果是臨時表空間,請查詢DBA_TEMP_FREE_SPACE

SELECT TABLESPACE_NAME, FREE_SPACE/1024/1024 AS "FREE SPACE(M)"

FROM DBA_TEMP_FREE_SPACE

WHERE TABLESPACE_NAME = '&tablespace_name';

2. 如果不知道表空間資料檔案目錄規劃,可以先查詢出表空間所有資料檔案

SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, BYTES/1024/1024 AS "BYTES(M)"

FROM DBA_DATA_FILES

注:如果是臨時表空間,請查詢DBA_TEMP_FILES

SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, BYTES/1024/1024 AS "SPACE(M)"

FROM DBA_TEMP_FILES

3. 為空間不足的表空間增加資料檔案

ALTER TABLESPACE &tablespace_name ADD DATAFILE '&datafile_name' SIZE 2G;

注:如果要為臨時表空間擴容,使用下面的語句

ALTER TABLESPACE &tablespace_name ADD TEMPFILE '&datafile_name' SIZE 2G;