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_li