標籤:
在使用Oracle資料庫的時候,經常會遇到需要把一個使用者的所有對象重新匯入的操作。這裡介紹兩種常用的方法,方便大家使用。
一、使用
drop
user
cascade; 可以刪除使用者及所相關的所有對象,可以通過重新建立一個同名對象,然後使用imp 命令從dmp檔案匯入新的對象。二、通過指令碼把清空使用者的所有對象,包含資料表、函數、預存程序等其他對象。採用這種方法,可以無需dba許可權,在你需要完整匯入一個使用者資料的時候非常好用。 附:清除使用者物件指令碼 --PL/SQL Developer Test script 3.0--120-------------------------------------------------------------------- Created on 2007-5-18 by GUIPEI-- drop oracle user‘s all objects-- --------------------------------------------------------------------DECLARE -- Local variables here i INTEGER; CURSOR cur_objects(obj_type VARCHAR2) IS SELECT object_name FROM user_objects WHERE object_type IN (obj_type); obj_name VARCHAR(200); sql_str VARCHAR(500); BEGIN --drop all tables; OPEN cur_objects(‘TABLE‘); LOOP FETCH cur_objects INTO obj_name; EXIT WHEN cur_objects%NOTFOUND; dbms_output.put_line(‘delete table: ‘ || obj_name); sql_str := ‘drop table ‘ || obj_name || ‘ CASCADE CONSTRAINTS ‘; EXECUTE IMMEDIATE sql_str; END LOOP; CLOSE cur_objects; --drop all SEQUENCE; OPEN cur_objects(‘SEQUENCE‘); LOOP FETCH cur_objects INTO obj_name; EXIT WHEN cur_objects%NOTFOUND; dbms_output.put_line(‘delete SEQUENCE: ‘ || obj_name); sql_str := ‘drop SEQUENCE ‘ || obj_name; EXECUTE IMMEDIATE sql_str; END LOOP; CLOSE cur_objects; --drop all VIEW; OPEN cur_objects(‘VIEW‘); LOOP FETCH cur_objects INTO obj_name; EXIT WHEN cur_objects%NOTFOUND; dbms_output.put_line(‘delete VIEW: ‘ || obj_name); sql_str := ‘drop VIEW ‘ || obj_name || ‘ CASCADE CONSTRAINTS ‘; EXECUTE IMMEDIATE sql_str; END LOOP; CLOSE cur_objects; --drop all FUNCTION; OPEN cur_objects(‘FUNCTION‘); LOOP FETCH cur_objects INTO obj_name; EXIT WHEN cur_objects%NOTFOUND; dbms_output.put_line(‘delete FUNCTION: ‘ || obj_name); sql_str := ‘drop FUNCTION ‘ || obj_name; EXECUTE IMMEDIATE sql_str; END LOOP; CLOSE cur_objects; --drop all PROCEDURE; OPEN cur_objects(‘PROCEDURE‘); LOOP FETCH cur_objects INTO obj_name; EXIT WHEN cur_objects%NOTFOUND; dbms_output.put_line(‘delete PROCEDURE: ‘ || obj_name); sql_str := ‘drop PROCEDURE ‘ || obj_name; EXECUTE IMMEDIATE sql_str; END LOOP; CLOSE cur_objects; --drop all PACKAGE; OPEN cur_objects(‘PACKAGE‘); LOOP FETCH cur_objects INTO obj_name; EXIT WHEN cur_objects%NOTFOUND; dbms_output.put_line(‘delete PACKAGE: ‘ || obj_name); sql_str := ‘drop PACKAGE ‘ || obj_name; dbms_output.put_line(sql_str); EXECUTE IMMEDIATE sql_str; END LOOP; CLOSE cur_objects; END; oracle解鎖的SQL....
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;
--查看鎖
--alter system kill session ‘sid,serial#‘;
--把鎖給KILL掉
alter system kill session ‘146,21177‘;
oracle清除使用者物件