我正在尝试重新初始化Oracle数据库,并且看到以下错误:
[sql] Failed to execute: drop user conns cascade
[sql] java.sql.SQLException: ORA-01940: cannot drop a user that is currently connected
[sql] Failed to execute: create user conns identified by conns default tablespace tbs_conns temporary tablespace temp1
[sql] java.sql.SQLException: ORA-01920: user name 'CONNS' conflicts with another user or role name
Run Code Online (Sandbox Code Playgroud)
问题是NO ONE已连接:这是我本地计算机上的一个实例,没有外部连接,我只是重新启动并且没有运行任何其他操作.我唯一能想到的是Oracle可能有一些背景(清理?)任务正在运行导致这个问题,但我不知道如何找到/管理它.有任何想法吗?
更新:这个脚本实际上丢弃并重新初始化了一堆表,并且在尝试重新运行它几次之后,我得到了相同的错误消息但是在另一个表上:Failed to execute: drop user csmy cascade.经过几次尝试后,它转移到了另一个用户身上:Failed to execute: drop user deb cascade.似乎有些东西按字母顺序锁定这些表,一次一个!
更新2:在重新运行脚本大约15次之后 - 每次在字母表中稍微进一步失败时 - 它已经完成并且一切正常.我仍然想知道究竟发生了什么 - 我最好的猜测是一些后台Oracle进程,但我不知道如何检查.
更新3:我上次重新运行脚本时再次遇到同样的问题,这次是用户"cap"失败了.为了尝试新的东西,我启动了sqlplus并手动运行drop user cap cascade命令,看哪,它运行得很好.我尝试了脚本,它运行完成.因此,由于手动删除用户没有问题,我强烈怀疑脚本本身应该受到指责.
该脚本是否使用相同的连接?它是否尝试同时删除多个用户?
看起来如果遇到错误,它只会继续下一步。
不同模式中的对象之间可能存在依赖关系,这可能会阻止模式 A 中的对象被删除,直到模式 B 中的对象被删除为止。因此,最初删除模式 A 可能会失败,但如果模式 B 已删除,则重试会成功。