Oracle删除当前用户下的所有表、视图、序列、函数、存储过程、包

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 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 --在工作表中输入以下内容
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值