001
--以下方法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 |
--在工作表中输入以下内容 |