一、表的重命名
flashback table test2 to before drop rename to test3;--【to test3】將表重命名
drop table test3 purge; --徹底刪除表
二、清除表中的數據
truncate操作 同沒有where條件的delete操作十分相似,只是把表里的信息全部刪除,但是表依然存在。
例如:truncate table XX
Truncate不支持回滾,並且不能truncate一個帶有外鍵的表,如果要刪除首先要取消外鍵,然后再刪除。
truncate table 后,有可能表空間仍沒有釋放,可以使用如下語句:
alter table 表名稱 deallocate UNUSED KEEP 0;
注意如果不加KEEP 0的話,表空間是不會釋放的。
例如:
alter table F_MINUTE_TD_NET_FHO_B7 deallocate UNUSED KEEP 0;
或者:
TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE才能釋放表空間。
例如: truncate table test1 DROP STORAGE;
三、查詢分區表存在哪些分區:
查詢分區表的情況,可以在USER_TAB_PARTITIONS中查詢。例如:
select 'alter table '||t.table_name ||' truncate partition ' || t.partition_name from USER_TAB_PARTITIONS t where t.table_name like 'F_%'
清除指定某個分區表的分區數據:
alter table 表名稱 truncate partition 分區名稱;
四、清除分區表占用的空間:
alter table 表名稱 DROP partition 分區名稱;
例如:
alter table F_HOUR_TD_NET_MPVOICE DROP partition P_09121913;
五、查詢表空間信息
可以利用如下語句查詢各表在存儲空間的使用分情況:
SELECT TABLESPACE_NAME,TO_CHAR(SUM(BYTES)/(1024*1024),'999G999D999') CNT_MB FROM DBA_EXTENTS WHERE OWNER='&OWNER' AND SEGMENT_NAME='&TABLE_NAME' AND SEGMENT_TYPE LIKE 'TABLE%' GROUP BY TABLESPACE_NAME;
可以使用如下語句,查詢存儲空間情況:
Select Tablespace_Name, Sum(bytes)/1024/1024 From Dba_Segments group By Tablespace_Name
六、查詢用戶下的表
如果你的用戶權限不是DBA:
那你用
select * from user_tables;
可以查詢到當前用戶所擁有的表。
如果是DBA用戶:
select * from dba_tables;
七、刪除指定空間下的所有表
declare vsql varchar2(200); cursor c1 is select 'drop table '||table_name||' cascade constraints' v_name ,tablespace_name from user_tables where tablespace_name='$tablename'; BEGIN for i in c1 loop vsql:=i.v_name; execute immediate vsql; end loop; end;
本篇文章來源於 Linux公社網站(www.linuxidc.com) 原文鏈接:http://www.linuxidc.com/Linux/2010-12/30353p2.htm