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 在彈出的對話方塊裡找到 磁碟清...