逻辑结构之表空间
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;