如何刪除掉乙個使用者下的所有物件

2021-09-08 02:20:37 字數 1522 閱讀 2698

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;

這個儲存過程可以一把刪掉使用者下幾乎所有的物件。注釋裡的東西釋放出來就能刪除表空間了。這個過程不能回滾,絕對不要在生產環境或者有用的環境上使用。我不對這個過程執行的結果負任何責任。

這個指令碼適合在那種刪除使用者不是很方便的時候使用。

更簡單的辦法就是刪掉使用者再重建使用者。

ORACLE刪除某使用者下所有物件

sql指令碼 唯一注意的是下面的f dropobj.sql 為操作的.sql 你的電腦沒有f盤,請換為d或者e其他存在的碟符 用於刪除當前使用者的所有物件 use for drop all objects in current user set heading off set feedback of...

ORACLE刪除某使用者下所有物件

sql指令碼 唯一注意的是下面的f dropobj.sql 為操作的.sql 你的電腦沒有f盤,請換為d或者e其他存在的碟符 用於刪除當前使用者的所有物件 use for drop all objects in current user set heading off set feedback of...

oracle 刪除某個使用者下的所有物件

先存放好dropobj.sql 檔案 然後登入需要刪除的使用者 刪除前最好備份一下 備份是在cmd中進行的 c users panfu exp file d expall.dmp log expall.logfull y export release 10.2.0.1.0 production on...