oracle刪除表後,磁碟如何釋放

2021-04-30 06:40:38 字數 3408 閱讀 1521

1樓:匿名使用者

如果是system表空間的話,基本上沒有辦法變小了。(按照你的說法,就是釋放磁碟空間)

就算你刪除了表,但是資料檔案(就是物理存在於磁碟上的檔案)是不會變小的。而且system表空間非常**,裡面存有所有的基表,所以resize不要想了。而且轉移表空間神馬的,用在其他表空間還可以,system也不可能,如果你真的把所有的表(這個表是指你建立的表)都刪除了,那麼就乾脆重新建庫吧,把原來的庫刪了,這樣就可以了。

反正據我所知,如果是system表空間的話(system表空間資料檔案所佔空間大小),不重新建庫是隻能變大不能變小的。

如果是其他表空間的話,複製表空間,然後刪除什麼的可以考慮。

最後給你一個建議啊,你的儲存應該是自動擴充套件的吧,那每個檔案最大值最好不要太大,oracle這個東西是有多少佔多少,然後再說其他,如果你給的太多,那麼他就會一直佔用新的。

2樓:oracle九叔

你好的!

一般來說,重建一個表空間!

把所有當前表空間的表都move 到新表空間中!

完後刪除原來的表空間並刪除相關的物理檔案。

oracle 的shrink 表空間不怎麼實用!

在oracle資料庫中刪除表後,怎樣把佔用的磁碟空間釋放出來?

3樓:

sql> alter table table_name move;

sql> analyze table table_name compute statistics;

執行上述語句,然後再看看,如果不行再用下面的那個

sql> alter table table_name enable row movement;

sql> alter table table_name shrink space;

sql> analyze table table_name compute statistics;

4樓:匿名使用者

你是用drop命令刪除的嗎?drop命令是不**表空間的,只是吧表對應的記錄從資料字典中抹掉,也不會**高水位。

truncate才會直接**表空間

5樓:匿名使用者

使用: truncate table tablename drop storage;

解釋: 直接刪除表,並且釋放儲存空間。truncate的意思是清空表資料, 「drop storage」是釋放儲存空間。

6樓:匿名使用者

試試 alter database datafile 'c:\oradata\test\mytablespace01.dbf' resize 50m

oracle資料表刪除一部分資料後,如何釋放表空間? 20

7樓:

db2的表 是存放在表空間裡的,刪除表就不會增加磁碟空間,而要要修改表空間,表空間又有一個或多個容器。如果你只是想增加磁碟空間,建議你還是想其他辦法吧。

8樓:匿名使用者

analyze table itemlog compute statistics;

或者把資料exp出來..drop掉表.在imp進去...

9樓:匿名使用者

你重新啟動過資料庫沒有,可能臨時表空間裡的資料,重新啟動下就ok,不會的再聯絡我。

10樓:匿名使用者

alter table enable row movement;

alter table shrink space;

oracle刪除一些表資料,然後釋放表空間的儲存過程

11樓:匿名使用者

create or replace procedure ttt is

begin

delete from bbb where。。。。。。 ;

commit;

execute immediate 'create table aaa as select * from bbb';

commit;

--刪除表bbb所有資料

execute immediate 'truncate table bbb';

commit;

--將臨時表aaa的資料轉移到bbb表中

insert into bbb select * from aaa;

commit;

--刪除臨時表aaa

execute immediate 'drop table aaa';

commit;

end;

順便說一句,你之前為什麼要delete表bbb裡的資料呢?還有,你儲存過程裡沒end

---------補充------

||是用來區分普通欄位和變數欄位的

他那個寫法不和我這個一樣嗎?

他那個只不過把我單引號裡的sql設定成了一個變數,叫str

12樓:匿名使用者

我以前也這樣寫過,告訴你,儲存過程裡面只能放動態的sql,不能直接放create 這種東西的。估計truncate也是不能放的。

不管你是10g還是9i,都是不能的。

看我以前寫的,以及人家的回答

13樓:匿名使用者

||是連線字串的符號,如果你table name和欄位名沒有用變數就不用連線,直接寫成:

str:='create table test(aa varchar2(10),bb number)';

execute immediate str;

其中test是你要建立的表名,aa和bb是欄位名,這個請用你自己的表名和欄位名替換.

14樓:為戰而生在死

str:= 'create table '||tname|| '('||c1||' char,'||c2||' char) ';

execute immediate str;

等同於execute immediate( 'create table t_name ' || '(c1 char,c2 char)');

15樓:一柒球寶寶

將你要執行的語句拼好賦給一個varchar2變數sql_str,然後execute immediate sql_str;commit;

這樣就好了,記住每一次execute後都commit一下,要不有的事務是沒提交的。

16樓:匿名使用者

|| 是連線兩個字串的操作。

17樓:匿名使用者

||相當於連線字串的意思!

oracle表空間磁碟邏輯壞塊怎麼處理

有2種通用的辦法 1 blockrecover 2 dbms repair 注意 第二種辦法會丟棄壞塊中的所有資料。所以事先確定邏輯壞塊中是否有資料,資料是否有備份。oracle dba神器 prm災難恢復工具,schema級別資料恢復。prm for oracle database schema級...

oracle刪除使用者下的表的sql語句是什麼啊

drop user username cascade這個是刪除使用者的我要的是刪除一個使用者下的所有表,但不刪除使用者 在oracle中如何刪除一個使用者下所有該使用者所建的表?刪除使用者的語法是 drop user user name 如果要刪除該使用者模式的包含物件 比如表 就要在要刪除得使用者...

怎樣清理磁碟空間,電腦磁碟空間不夠如何刪除多餘的東西

右擊c盤 屬性 磁碟清理 或者是使用一些第三方軟體,比如什麼什麼衛士的 電腦磁碟空間不夠如何刪除多餘的東西 1 在電腦桌面上找到 計算機 標識 2 滑鼠左鍵雙擊開啟,進入我的電腦內,找到 本地磁容盤 c 滑鼠右鍵單擊,在下拉選單中選擇 屬性 單擊屬性,彈出對話方塊 3 在彈出的對話方塊裡找到 磁碟清...