create or replace procedure drop_all as cursor cur_obj is select uo.OBJECT_NAME, uo.OBJECT_TYPE from user_objects uo where uo.OBJECT_NAME not in ('DROP_ALL') and uo.OBJECT_TYPE not in ('LOB'); /* cursor cur_tablespace is select ut.TABLESPACE_NAME from user_tablespaces ut where ut.TABLESPACE_NAME not in ('SYSTEM', 'SYSAUX', 'UNDOTBS1', 'TEMP', 'USERS');*/ v_obj_name user_objects.OBJECT_NAME%type; v_obj_type user_objects.OBJECT_TYPE%type; /* v_tablespaces_name user_tablespaces.TABLESPACE_NAME%type;*/ sql_str1 varchar2(2000); /* sql_str2 varchar2(2000);*/ begin open cur_obj; loop fetch cur_obj into v_obj_name, v_obj_type; exit when cur_obj%notfound; sql_str1 := 'drop ' || v_obj_type || ' ' || v_obj_name; execute immediate sql_str1; end loop; close cur_obj; /* open cur_tablespace; loop fetch cur_tablespace into v_tablespaces_name; exit when cur_tablespace%notfound; sql_str2 := 'drop tablespace ' || v_tablespaces_name || ' including contents'; execute immediate sql_str2; end loop; close cur_tablespace;*/ end drop_all; 這個存儲過程可以一把刪掉用戶下幾乎所有的對象。注釋里的東西釋放出來就能刪除表空間了。這個過程不能回滾,絕對不要在生產環境或者有用的環境上使用。我不對這個過程執行的結果負任何責任。 這個腳本適合在那種刪除用戶不是很方便的時候使用。 更簡單的辦法就是刪掉用戶再重建用戶。