--查詢表空間
SELECT * FROM Dba_Data_Files ddf WHERE ddf.tablespace_name = 'USERS';

--新建表空間 指定數據文件
create tablespace T1_TS 
datafile '/data/oracle/oradata/orcl/T1_TS01.dbf' size 10240M --存儲地址 初始大小
autoextend on next 1024M maxsize unlimited   --每次擴展,無限制擴展
EXTENT MANAGEMENT local  autoallocate
segment space management auto;

--新建臨時表空間 指定數據文件
create temporary tablespace T1_TS_TMP   
tempfile '/data/oracle/oradata/orcl/T1_TS_TMP01.dbf'  
size 50m autoextend on next 50m maxsize 20480m   
extent management local;  

--新建用戶
create user szyl identified by szyl default tablespace T1_TS temporary tablespace T1_TS_TMP
grant dba to szyl

--修改表空間數據文件可擴展大小
ALTER DATABASE DATAFILE '/data/oracle/oradata/orcl/T1_TS01.DBF' AUTOEXTEND ON NEXT 100M MAXSIZE 24000M;

--收縮表空間,因為可能表刪除了釋放了空間。但只能收縮數據文件末尾的連續的沒有使用的存儲塊。想刪除中間的,需要移動數據表索引
alter database   datafile '/data/oracle/oradata/orcl/T1_TS01.DBF'  resize 23000M;
--查詢數據文件實際存儲的數據大小,當前總擴展大小,可收縮空間大小
SELECT a.tablespace_name,
file_name,
c.VALUE / 1024 "Blk. size(Kb)",
CEIL ((NVL (hwm, 1) * c.VALUE) / 1024 / 1024) "smallest(Mb) - HWM",
CEIL (blocks * c.VALUE / 1024 / 1024) "currsize(Mb)",
CEIL (blocks * c.VALUE / 1024 / 1024) - CEIL ((NVL (hwm, 1) * c.VALUE) / 1024 / 1024) "savings(Mb)"
FROM dba_data_files a,
(SELECT file_id, MAX (block_id + blocks - 1) hwm
FROM dba_extents
GROUP BY file_id) b,
(SELECT VALUE
FROM v$parameter
WHERE NAME = 'db_block_size') c
WHERE a.file_id = b.file_id(+)
and a.status !='INVALID';

--增加表空間數據文件
alter tablespace T1_TS add datafile '/home/oracle/oradata/orcl/T1_TS02.DBF' size 500M AUTOEXTEND on next 100m MAXSIZE 20480M;

--刪除表空間數據文件,前提是還沒有存儲數據(空數據文件)
Alter tablespace T1_TS drop datafile '/home/oracle/oradata/orcl/T1_TS03.DBF';

--脫機表空間數據文件,但這并不是刪除。若將數據文件物理刪除了,還需要數據字典信息等刪除(未驗證),或脫機暫不管它
ALTER DATABASE DATAFILE '/home/oracle/oradata/orcl/T1_TS02.DBF' offline drop;

--刪除整個表空間包括數據文件
drop tablespace T1_TS including contents and datafiles cascade constraint;

--查詢回收站
SELECT t.object_name,t.type ,t.original_name FROM user_recyclebin t;

--回收站清理
purge recyclebin ;