Oracle中删除用户下所有对象的多种方法 您所在的位置:网站首页 plsql删除用户命令 Oracle中删除用户下所有对象的多种方法

Oracle中删除用户下所有对象的多种方法

2023-12-22 00:23| 来源: 网络整理| 查看: 265

   

Oracle删除用户下所有对象的方法未必人人都会,下面就为您介绍两种常用的Oracle删除用户下所有对象的方法,希望对您学习Oracle删除用户方面能有所帮助。

方法1:

drop user XXXX cascade;

drop tablespace XXXX INCLUDING CONTENTS;

最省心的方法是级联删除 drop user XXXX cascade; 最后这个级联特别有用(删除用户以及所有关联的数据库对象) 麻烦一点的办法,把删除语句做成存储过程 注释:

1、删除用户 然后重建,这样最快:

1、在cmd中输入 sqlplus / as sysdba 2、删除用户A,级所有和用户A关联的数据 drop user a cascade; 3、重建用户A create user A identified by 密码; grant connect,resource to A; 4、登入A用户,就ok了 conn A/密码 这个方法挺快的,还方便啊。

drop user xxx cascade这样有些数据库对象好像也删除不了

有时候某些用户被授予很复杂的权限和角色,(若删除用户再创建用户的方法会很繁琐),所以还是衡量哪种方法更快,根据实际情况选择

我常做db換版, 所以寫了上百個腳本, 附上8個. 01_clear_recyclebin_plsql.sql 02_del_mviews_plsql.sql 有時確保 mview 避免刪除, 這個可以不執行 03_del_table_plsql.sql 04_del_function_plsql.sql  這個可以自由調整 05_del_scheduler_plsql.sql 06_del_program_plsql.sql 07_del_program_plsql.sql 08_del_synonyms_plsql.sql  08_del_synonyms_plsql.sql (597 Bytes, 下载次数: 0)   07_del_program_plsql.sql (802 Bytes, 下载次数: 0)   06_del_program_plsql.sql (797 Bytes, 下载次数: 1)   05_del_scheduler_plsql.sql (777 Bytes, 下载次数: 0)   04_del_function_plsql.sql (1.4 KB, 下载次数: 0)   03_del_table_plsql.sql (806 Bytes, 下载次数: 2)   02_del_mviews_plsql.sql (601 Bytes, 下载次数: 1)   01_clear_recyclebin_plsql.sql (1.01 KB, 下载次数: 0)  希望對你有幫助, 祝你好運.

删除表时要先删除其外键再删除表本身,其他数据库对象貌似可以直接删除自己:

begin   -- 1、删除外键   for s in (select 'alter table ' || c.TABLE_NAME || ' drop constraint ' ||                    c.CONSTRAINT_NAME text               from user_constraints c              where constraint_type = 'R') loop     execute immediate s.text;   end loop;   -- 2、删除对象(表等数据库对象)   for s in (select 'drop ' || o.OBJECT_TYPE || ' ' || o.OBJECT_NAME text               from user_objects o              where o.OBJECT_TYPE in                    ('FUNCTION', 'PROCEDURE', 'PACKAGE', 'SEQUENCE', 'TABLE')) loop     execute immediate s.text;   end loop; end; / --这个简单点儿,可能不全面

http://www.itpub.net/thread-849733-2-1.html

2、

删除指定表空间是这样: drop tablespace test1 including contents cascade constraints; 之后还要手动删除数据文件,因为上述操作只是删除了控制文件和数据字典中的记录。如果想简单可以使用OEM来删除,但我并不推荐。 删除指定表空间下的表使用select table_name,tablespace_name from user_talbes;然后把这些表做删除,可能会比较麻烦。 —————————————————— 因为我手上没有oracle,所以看不到数据字典,我记得desc user_tables应该可以看到一个owner之类的,总之就是可以确定表格的归属,然后删除。楼上说删除用户的方法也不是很好。如果不是很清楚依然可以使用oem操作,然后选择显示SQL,就可以看到了。

方法2:

写存储过程实现

DECLARE TYPE name_list IS TABLE OF VARCHAR2(40); TYPE type_list IS TABLE OF VARCHAR2(20);

Tab_name name_list:=name_list(); Tab_type type_list:=type_list();

sql_str VARCHAR2(500); BEGIN 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'; EXECUTE IMMEDIATE sql_str BULK COLLECT INTO tab_name,tab_type;

FOR i IN Tab_name.FIRST.. Tab_name.LAST LOOP sql_str := 'DROP ' || Tab_type(i) || ' ' || Tab_name(i); EXECUTE IMMEDIATE sql_str; END LOOP; END;

http://www.php100.com/html/webkaifa/database/oracle/2010/1117/6832.html

*******************************************************************

ORACLE下删除当前用户下所有对象 Sql代码   收藏代码 --删除某个用户下的对象   set heading off;   set feedback off;   spool c:\dropobj.sql;     prompt --Drop constraint    select 'alter table '||table_name||' drop constraint '||constraint_name||' ;' from user_constraints where constraint_type='R';    prompt --Drop tables    select 'drop table '||table_name ||';' from user_tables;         prompt --Drop view    select 'drop view ' ||view_name||';' from user_views;        prompt --Drop sequence    select 'drop sequence ' ||sequence_name||';' from user_sequences;         prompt --Drop function    select 'drop function ' ||object_name||';'  from user_objects  where object_type='FUNCTION';       prompt --Drop procedure    select 'drop procedure '||object_name||';' from user_objects  where object_type='PROCEDURE';        prompt --Drop package    prompt --Drop package body    select 'drop package '|| object_name||';' from user_objects  where object_type='PACKAGE';       prompt --Drop database link    select 'drop database link '|| object_name||';' from user_objects  where object_type='DATABASE LINK';       spool off;   set heading on;   set feedback on;      @@c:\dropobj.sql;   host del c:\dropobj.sql;   注释:  1.上面这个语句,在pl/sql里面是放在命令里面执行的。  2.set heading off; 意思就是关闭表头。如果不关闭,写入dropobj.sql文件中就会带有结果集的表头如:  'DROPTABLE'||TABLE_NAME||';'  ------------------------------------------  drop table TEACHER;  实际上我们需要的是“drop table TEACHER;”,“'DROPTABLE'||TABLE_NAME||';'  ”就是表头。  3.set feedback off; 意思就是关闭回显。如果不关闭,写入dropobj.sql文件中就会带有返回结果集的大小等信息,如:"137 rows selected"  4.spool c:\dropobj.sql; 把结果集写入这个文件。spool off; 结束写入。  5.@@c:\dropobj.sql; 执行这个sql  6.host del c:\dropobj.sql; 删除主机上这文件。  7.CONSTRAINT_TYPE 就是键的类型:  Sql代码   收藏代码 C (check constraint on a table)    P (primary key)    U (unique key)   R (referential integrity)   V (with check option, on a view)   O (with read only, on a view)   8.当执行'drop package ………… '这句时,package body会被同时删除。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。 http://www.iteye.com/topic/260823

http://blog.csdn.net/xiaol_zhong/article/details/13094373

******************************************************

Oracle删除当前用户下的所有表、视图、序列、函数、存储过程、包 博客分类:  oracle   --delete tables  Sql代码   select 'drop table ' || table_name ||';'||chr(13)||chr(10) from user_tables;    select 'drop table ' || table_name ||';'||chr(13)||chr(10) from user_tables;  --delete views  Sql代码   select 'drop view ' || view_name||';'||chr(13)||chr(10) from user_views;    select 'drop view ' || view_name||';'||chr(13)||chr(10) from user_views;  --delete seqs  Sql代码   select 'drop sequence ' || sequence_name||';'||chr(13)||chr(10) from user_sequences;   select 'drop sequence ' || sequence_name||';'||chr(13)||chr(10) from user_sequences;  --delete functions  Sql代码   select 'drop function ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='FUNCTION';    select 'drop function ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='FUNCTION';  --delete procedure  Sql代码   select 'drop procedure ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PROCEDURE';    select 'drop procedure ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PROCEDURE';  --delete package  Sql代码   select 'drop package ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PACKAGE';    select 'drop package ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PACKAGE';  因为ORACLE等中大型数据库一般不推荐采用批量删除,因为效率会很慢,还是逐行删除比较好。

http://zhidao.baidu.com/question/43963217.html?qbl=relate_question_0&word=oracle%C9%BE%B3%FD%D3%C3%BB%A7%CF%C2%CB%F9%D3%D0%B6%D4%CF%F3&optimi=4

==================================================================

ORACLE删除当前用户下所有的表的方法

1、如果有删除用户的权限,则可以:

drop user user_name cascade;

加了cascade就可以把用户连带的数据全部删掉。

删除后再创建该用户。 --创建管理员用户 create user 用户名 identified by 密码 default tablespace space_data(表空间名称) temporary tablespace space_temp(临时表空间名称); --授权 grant connect,dba to 用户名; --修改限额 ALTER USER "用户名" QUOTA UNLIMITED ON SPACE_DATA(表空间名称);

--查看所有用户对象 select uo.object_name,uo.object_type from user_objects uo where uo.object_type'LOB' order by uo.object_type desc

 

2、如果没有删除用户的权限,则可以执行:

select 'drop table '||table_name||';'  from cat  where table_type='TABLE'

将会输出一批删除表的sql语句,这些SQL语句执行一下就可以了。(需要有drop table的权限)

http://www.cnblogs.com/chshnan/archive/2012/02/07/2341694.html

如何删除oracle中指定用户下的所有表

在该用户下写一个存储过程 (要保证该用户并不是以dba身份登录的,不然会把系统表都删掉哦) create or replace procedure pro_droptable is cursor cur is select table_name from user_tables; drop_sql varchar2(1000); begin for tbname in cur loop begin drop_sql:='drop table '||tbname.table_name; execute immediate drop_sql; end; end loop; end pro_droptable; 然后执行就OK啦 执行语句:call pro_droptable() 注释:

在Oracle中如何删除当前用户下所有的表? 前提条件:我没有删除该用户的权限,不用能drop user user_name cascade; 只能用drop table XXX 一个个个删很麻烦; 不行,删不了

参考:

oracle删除用户下所有对象 百度

Oracle中删除用户下所有对象的多种方法 2010年11月17日 -  Oracle删除用户下所有对象的方法未必人人都会,下面就为您介绍两种常用的 Oracle删除用户下所有对象的方法,希望对您学习Oracle删除用户方面能有所帮助。... www.php100.com/html/we...   -  百度快照 -  77%好评 如何删除一个用户下的所有对象,而又不删除该用户 - Oracle数据库... 9条回复 - 发帖时间: 2007年9月9日 2007年9月9日 - 如何 删除一个 用户下的 所有对象,而又不 删除该用户 [复制链接] rumsfeld 注册会员...发表于 2007-9-9 17:08:45 |显示全部楼层 确实有些麻烦! 不知道o... www.itpub.net/thread-8...   -  百度快照 -  71%好评 Oracle中删除用户下所有对象的多种方法_百度知道

1个回答 - 提问时间: 2014年10月24日

最佳答案: 最省心的方法是级联 删除 drop user XXXX cascade; 最后这个级联特别有用 麻烦一点的办法,把 删除语句做成存储过程 存储过程实现 DECLARE TYPE name_list ... zhidao.baidu.com/link?...   -  80%好评 Oracle中如何删除某个用户下的所有数据呢? 6个回答 2011-12-07 在oracle中如何删除一个用户下所有该用户所建... 1个回答 2008-04-03 更多知道相关问题>> Oracle删除用户下所有对象的两种方法_开发/数据库_IT专家网 2010年11月17日 - 如果要将Oracle用户下的所有对象删除,应该如何实现呢?下文就教您两种删除Oracle用户下的所有对象的方法,供您参考学习之用。  Oracle删除用户下所有对象... database.ctocio.com.cn...   -  百度快照 -  评价 Oracle删除当前用户下所有的表的方法 - Vanessa - 博客园 2012年2月7日 -  Oracle删除当前 用户下所有的表的方法1、如果有 删除用户的权限,则可以: drop ...--查看 所有用户对象select uo.object_name,uo.object_type from user_o... www.cnblogs.com/chshna...   -  百度快照 -  92%好评 ORACLE删除某用户下所有对象 - xiaol_zhong的专栏 - 博客频道 - ... 2013年10月26日 - --.sql脚本 --唯一注意的是 下面的f:\dropobj.sql 为操作的.sql; --你的电脑没有F盘,请换为D或者E其他存在的盘符 --用于 删除当前 用户的 所有对象 --use ... blog.csdn.net/xiaol_zh...   -  百度快照 -  88%好评 Oracle 删除用户下的所有用户对象_数据库技术_Linux公社-Linux... 2013年1月12日 - 而这时候我的心都碎了,大家知道system是 Oracle的超级管理员之一,仅次于sys 用户,是管理次一级的系统 对象和 用户对象的管理员,不能够 删除和重建,然而那么多数据导进去... www.linuxidc.com/Linux...   -  百度快照 Oracle删除当前用户下的所有表、视图、序列、函数、存储过程、包... Oracle删除当前 用户下的 所有表、视图、序列、函数、存储过程、包的相关文章:--delete tables Sql代码  select 'drop table ' || table_name ||';'||chr(... www.iteye.com/wiki/blo...   -  百度快照 -  68%好评 oracle 删除某个用户下的所有对象 - panfuy - ITeye技术网站 2011年11月11日 - 博客分类: Oracle  oracle 删除某个 用户下的 所有对象 先存放好dropobj.sql 文件 然后登录需要删除的 用户删除前最好备份一下:(备份是在cmd中进行的) C... panfuy.iteye.com/blog/...   -  百度快照 -  68%好评 Oracle 中如何删除一个用户拥有的所有对象 - 开源中国社区 下面的脚本在 oracle中如何将一个 用户所拥有的 所有对象,表,sequence,procedure。。。 全部删掉。 1,drop 对象的方式,注意要先将所有的外键约束 删掉。 DECLARETYPE cst... www.oschina.net/questi...   -  百度快照 相关搜索



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有