先登录需要删除的用户,查询以下SQL得到用户下的所有需要删除的信息,拷贝查询到的的信息执行。
--delete tables
select 'drop table ' || table_name ||';'||chr(13)||chr(10) from user_tables;
--delete views
select 'drop view ' || view_name||';'||chr(13)||chr(10) from user_views;
--delete seqs
select 'drop sequence ' || sequence_name||';'||chr(13)||chr(10) from user_sequences;
--delete functions
select 'drop function ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='FUNCTION';
--delete procedure
select 'drop procedure ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PROCEDURE';
--delete package
select 'drop package ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PACKAGE';
完毕后使用权限高的用户在把需要删除的用户给删掉!
删除的时候建议登录oracle服务器使用命令行登录操作
sqlplus / as sysdba
查询需要删除的用户当前是否还有链接,查询没数据可以直接删除
select sid,serial# from v$session where username='大写用户名';
查询有数据需要kill掉相关进程(立即断开用户session,未完成的事务自动会滚。)
alter system disconnect session 'sid,serial#' immediate ;
如果查询有数据不进行kill会报错如下:
ERROR at line 1:
ORA-01940: cannot drop a user that is currently connected
删除
drop user 用户名称 cascade;