--以下方法1,3本人试过,在sqlplus下最好用的删除,还原方法是:
002
--把删除表,写成脚本:
003
--************************
004
--**方法1
005
--************************
006
--在终端依次输入以下命令
007
sqlplus
008
--输入需要删除的用户名
009
--输入密码
010
SET HEAD OFF
011
SPOOL /tmp/database/drop_tables.sql
012
013
--chr(13) ASCII中=换行 chr(10) ASCII中=回车
014
--delete tables
015
select 'drop table ' || table_name ||';'||chr(13)||chr(10) from user_tables;
016
--delete views
017
select 'drop view ' || view_name||';'||chr(13)||chr(10) from user_views;
018
019
020
--delete seqs
021
select 'drop sequence ' || sequence_name||';'||chr(13)||chr(10) from user_sequences;
022
023
024
--delete functions
025
select 'drop function ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='FUNCTION';
026
027
028
--delete procedure
029
select 'drop procedure ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PROCEDURE';
030
031
032
--delete package
033
select 'drop package ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PACKAGE';
034
035
--delete trigger
036
SELECT 'drop TRIGGER "' ||SYS_CONTEXT('USERENV','CURRENT_USER')||'"."'|| TRIGGER_NAME ||'";' ||CHR(13) ||CHR(10)FROM USER_TRIGGERS
037
038
039
spool off;
040
@/tmp/database/drop_tables.sql;
041
042
purge recyclebin; --清空Oracle的回收站
043
044
--例:(win下进行删除用户asus的所有表)
045
sqlplus
046
asus --用户名
047
asus --密码
048
SET HEAD OFF
049
SPOOL c:/drop_tables.sql --保存为sql语句
050
051
--chr(13) ASCII中=换行 chr(10) ASCII中=回车
052
--delete tables
053
select 'drop table ' || table_name ||';'||chr(13)||chr(10) from user_tables;
054
--delete views
055
select 'drop view ' || view_name||';'||chr(13)||chr(10) from user_views;
056
--delete seqs
057
select 'drop sequence ' || sequence_name||';'||chr(13)||chr(10) from user_sequences;
058
--delete functions
059
select 'drop function ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='FUNCTION';
060
--delete procedure
061
select 'drop procedure ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PROCEDURE';
062
--delete package
063
select 'drop package ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PACKAGE';
064
--delete trigger
065
SELECT 'drop TRIGGER "' ||SYS_CONTEXT('USERENV','CURRENT_USER')||'"."'|| TRIGGER_NAME ||'";' ||CHR(13) ||CHR(10)FROM USER_TRIGGERS
066
067
spool off;
068
@c:/drop_tables.sql;
069
purge recyclebin; --清空Oracle的回收站
070
quit --退出sqlplus
071
072
--完成
073
074
--然后再还原数据。
075
--imp maximo/maximo@orcl fromuser=maximo touser=maximo file=21时14分34秒.dmp tablespaces=tablespaces
076
077
078
--************************
079
--**方法2
080
--************************
081
1 select Drop table ||table_name||;
082
from all_tables
083
where owner=要删除的用户名(注意要大写);
084
2、
085
删除所有表
086
以用户test为例
087
for example:
088
declare
089
cursor cur1 is select table_name from dba_tables where owner=TEST;
090
begin
091
for cur2 in cur1 loop
092
execute immediate drop table test.||cur2.table_name;
093
end loop;
094
end;
095
3、这个删除当前用户的所有对象(表、视图、触发器、存储过程、函数)
096
DECLARE
097
TYPE name_list IS TABLE OF VARCHAR2(40);
098
TYPE type_list IS TABLE OF VARCHAR2(20);
099
Tab_name name_list:=name_list();
100
Tab_type type_list:=type_list();
101
sql_str VARCHAR2(500);
102
BEGIN
103
sql_str := select uo.object_name,uo.object_type from user_objects uo where uo.object_type not in(INDEX,LOB) order by uo.object_type desc;
104
EXECUTE IMMEDIATE sql_str BULK COLLECT INTO tab_name,tab_type;
105
FOR i IN Tab_name.FIRST.. Tab_name.LAST LOOP
106
sql_str := DROP || Tab_type(i) || || Tab_name(i);
107
EXECUTE IMMEDIATE sql_str;
108
END LOOP;
109
END;
110
111
112
113
--************************
114
--**方法3
115
--**使用Oracle SQL Developer
116
--************************
117
--用需要删除的用户登入
118
--在工作表中输入以下内容
摘自 蒋中正的博客