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