邏輯結構之表空間
create tablespace tbs_test20140819
blocksize 16k
datafile 'e:/oracle/oradata/plmdemo/tbs_test0819.dbf' size 20m
autoextend on
next 5m maxsize 100m
extent management local
uniform seize 5m
segment space management auto;
這樣呢,一個測試表空間建好了,那麼如何監控表空間呢,下面來介紹。select a.tablespace_name "tablespace",trunc(a.total) "allocated(M)",ceil((1-b.free/a.total)*100) "Usage %",
trunc(b.free) " free space(M)" from
(select tablespace_name, sum(nvl(bytes,0))/1024/1024 total from dba_data_files group by tablespace_name) a,
(select tablespace_name, sum(nvl(bytes,0))/1024/1024 free from dba_free_space group by tablespace_name) b
where a.tablespace_name=b.tablespace_name order by 3 desc;
這段代碼咋一看很複雜,其實就是兩個表dba_data_files和dba_free_space,一個是存儲表空間總大小,一個是存儲free空間,具體表的參數可以desc查看。SELECT D.TABLESPACE_NAME,d.file_name,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS,
USED_SPACE "USED_SPACE(M)",ROUND(NVL(USED_SPACE,0)/SPACE*100,2) "USED_RATE(%)",
NVL(FREE_SPACE,0) "FREE_SPACE(M)"
FROM
(SELECT TABLESPACE_NAME,file_name,file_id,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS
FROM DBA_TEMP_FILES
GROUP BY TABLESPACE_NAME,file_name,file_id) D,
(SELECT TABLESPACE_NAME,file_id,ROUND(SUM(BYTES_USED)/(1024*1024),2) USED_SPACE,
ROUND(SUM(BYTES_FREE)/(1024*1024),2) FREE_SPACE
FROM V$TEMP_SPACE_HEADER
GROUP BY TABLESPACE_NAME,file_id) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) and d.file_id=f.file_id(+);
alter database DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\PLMDEMO\SYSTEM01.DBF' autoextend on next 50m maxsize unlimited; ---普通表空間
alter database tempfile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\PLMDEMO\TEMP01.DBF' autoextend on next 50m maxsize unlimited; --臨時表空間
擴展: alter DATABASE DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\PLMDEMO\SYSTEM01.DBF' RESIZE 9000m; --普通表空間
alter DATABASE tempFILE 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\PLMDEMO\TEMP01.DBF' RESIZE 200m; --臨時表空間
增加文件: alter tablespace SYSTEM add datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\PLMDEMO\SYSTEM01.DBF' size 1g;------普通表空間
alter tablespace TEMP add tempfile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\PLMDEMO\TEMP02.DBF' size 10m;-------臨時表空間
當然對於一些特定的表空間,一些有資深dba對我們有一些建議,表空間儘量避免自動擴展,儘可能大。對於回滾表空間儘量規劃大,自動管理;對於臨時表空間,最好使用臨時表空間組;而業務表空間要根據業務分類進行配置,即時監控表空間使用情況。
drop tablespace tablespacename including contents and datafiles;
如果是linux類系統,那麼使用這句代碼直接就刪除數據文件,但是win下面得手動刪除。alter system set undo_tablespace=undo scope=both/memory/spfile;
6.切換臨時表空間alter user test temporary tablesapce temp1;
--改變數據庫的臨時表空間 alter database default temporary tablespace temp1;