Oracle数据库,我把用户删除了,但是plsql中还能登录

Oracle数据库,我把用户删除了,但是plsql中还能登录,第1张

那是用户删除不彻底造成的,因为plsql用的是oracle创建的有效用户。
oracle数据库中删除用户有两种命令,一种是 drop user xxx;另外一个种是drop user xxx cascade;
drop user xxx必须是这个用户下面没有任何对象;这样才可以使用这个命令,否则就会报错;如果用户下面有对象,就得用drop user xxx cascade来删除这个用户以及这个用户下的所有对象了;

1 drop user ×× ; 仅仅是删除用户
如果用户下有对象,那么drop user ×× ;会报错
ORA-01922: 必须指定 CASCADE 以删除 ××
2 drop user ×× cascade ;会删除此用户名下的所有表和视图
使用cascade参数可以删除该用户的全部objects。
如果用户的schema中有表,则在删除表的时候自动删除与该表相关的主键和外键。
如果用户的schema中有表,则在删除表的时候自动删除与该表相关的索引。

用户和表空间是两个概念
用户是建立在表空间之上的
删除用户对象 会删除用户下的所有对象 这些对象可能在用户所属表空间 也可能不属于
一个表空间上面可以多个用户 所以删了用户对象只是删除该用户下所属对象 和表空间没有直接关系

application对象清除的方法也是applicationremoveAttribute(String name)
不过application对象是针对服务器的,服务器启动后就产生了这个application对象,当客户再所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。
不知道楼主是什么设计意图,要是真的要写出点击关闭按钮时移除application中所保存的对象就把applicationremoveAttribute(String name)写进网页退出的js中吧~

不管是主机上还是客户端上,使用具备dba角色的用户登录到数据库的sqlplus环境,直接删除用户,就可以把该用户下的而所有对象都删除,包括表、序列。或者使用该用户登录到sqlplus,从user_tables和user_sequences视图中选出所有的表和序列,然后执行drop table 和drop sequence 来批量删除所有的表和序列。使用exp和imp工具导出、导入dmp文件。

如果这个用户下已经创建了数据库对象(比如表、视图、存储过程等),则需要用
drop user xxxxx cascade ; 的方式来删除该数据库用户。
不过需要注意,这个方式就将该用户的所有数据库对象删除了,要慎用!
没有办法保留用户的数据库对象 情况下删除用户。
如果这个用户下没数据库对象,那么用 drop user xxxx 即可。当然前提是xxxx 没有 登录到数据库中;你有删除用户的权限等等。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13362760.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-22
下一篇 2023-07-22

发表评论

登录后才能评论

评论列表(0条)

保存