关于#数据库#的问题,如何解决?

今天在使用xshell7删数据库用户的时候,用约束方式重新启动数据库后,执行 drop user username cascade; 命令时,提示“第 1 行出现错误:
ORA-01940: 无法删除当前连接的用户”,但是我使用select username,sid,serial#,paddr from v$session where username='username'; 命令并未查询到有用户还在连接中,然后我执行了ALTER USER username ACCOUNT LOCK; 该命令后,再去删除用户,就删除成功了,想请教下这是什么问题呢。是缓存导致的吗?

-bash-3.2# su - oracle
[YOU HAVE NEW MAIL]
$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on чǚһ 5Ղ 8 10:09:44 2023

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


l½ӵ½: 
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

SQL> drop user bgfc230404 cascade;
drop user bgfc230404 cascade
*
µؠ1 ѐ³󐖴:
ORA-01940: Ϟ·¨ɾ³򇱁¬½ӵœû§


SQL> shuop
SP2-0734: 未知的命令开头 "shu
QL> 
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup restrict;
SP2-0734: 未知的命令开头 "up restric..." - 忽略了剩余的行。
SQL> startup restrict;
ORACLE 例程已经启动。

Total System Global Area 1.7103E+10 bytes
Fixed Size                  2223904 bytes
Variable Size            1.0268E+10 bytes
Database Buffers         6811549696 bytes
Redo Buffers               21733376 bytes
数据库装载完毕。
数据库已经打开。
SQL> drop user bgfc230404 cascade;
drop user bgfc230404 cascade
*
第 1 行出现错误:
ORA-01940: 无法删除当前连接的用户


SQL> select username,sid,serial#,paddr from v$session where username='ECITY';
  2  
SQL> select username,sid,serial#,paddr from v$session where username='bgfc230404';

未选定行

SQL> shutdown immediate;
SP2-0734: 未知的命令开头 "shut..." - 忽略了剩余的行。
SQL> 
SQL> \
SP2-0042: 未知命令 "\" - 其余行忽略。
SQL> 
SQL> 
SQL> 
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> drop user bgfc230404 cascade;
drop user bgfc230404 cascade
*
第 1 行出现错误:
ORA-01034: ORACLE not available
进程 ID: 13631784
会话 ID: 1057 序列号: 9


SQL> startup restrict;
ORACLE 例程已经启动。

Total System Global Area 1.7103E+10 bytes
Fixed Size                  2223904 bytes
Variable Size            1.0268E+10 bytes
Database Buffers         6811549696 bytes
Redo Buffers               21733376 bytes
数据库装载完毕。
数据库已经打开。
SQL> drop user bgfc230404 cascade;
drop user bgfc230404 cascade


RA-00911: 无效字符


SQL> bgfc\30404
SP2-0734: 未知的命令开头 "bgfc..." - 忽略了剩余的行。
SQL> drop user bgfc230404 cascade;
drop user bgfc230404 cascade
*
第 1 行出现错误:
ORA-01940: 无法删除当前连接的用户


SQL> select username,sid,serial#,paddr from v$session where username='bgfc230404';

未选定行

SQL> drop user bgfc230404 cascade;
drop user bgfc230404 cascade
*
第 1 行出现错误:
ORA-01940: 无法删除当前连接的用户


SQL> alter user bgfc230404 account lock;

用户已更改。

SQL> select saddr,sid,serial#,paddr,username,status from v$session where username ='bgfc230404';

未选定行

SQL> drop user bgfc230404 cascade;
drop user bgfc230404 cascade
*
第 1 行出现错误:
ORA-01940: 无法删除当前连接的用户


SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> alter user bgfc230404 accountloc
  2  
SQL> alter user bgfc230404 account lock ;
alter user bgfc230404 account lock
*
第 1 行出现错误:
ORA-01034: ORACLE not available
进程 ID: 7471408
会话 ID: 1057 序列号: 3


SQL> startup restrict;
ORACLE 例程已经启动。

Total System Global Area 1.7103E+10 bytes
Fixed Size                  2223904 bytes
Variable Size            1.0268E+10 bytes
Database Buffers         6811549696 bytes
Redo Buffers               21733376 bytes
数据库装载完毕。
数据库已经打开。
SQL> ALTER USER bgfc230404 ACCOUNT LOCK;

用户已更改。

SQL> ALTER USER bgfc230404 ACCOUNT FORCE;
ALTER USER bgfc230404 ACCOUNT FORCE
                              *
第 1 行出现错误:
ORA-00921: 意外的 SQL 命令结尾


SQL> ALTER USER bgfc230404 ACCOUNT FORCE;
ALTER USER bgfc230404 ACCOUNT FORCE
                              *
第 1 行出现错误:
ORA-00921: 意外的 SQL 命令结尾


SQL> 
SQL> 
SQL> 
SQL> 
SQL> ALTER USER bgfc230404 ACCOUNT FORCE;
ALTER USER bgfc230404 ACCOUNT FORCE
                              *
第 1 行出现错误:
ORA-00921: 意外的 SQL 命令结尾


SQL> ALTER USER bgfc230404 ACCOUNT FORCE
  2  
SQL> ALTER USER bgfc230404 ACCOUNT FORCE;
ALTER USER bgfc230404 ACCOUNT FORCE
                              *
第 1 行出现错误:
ORA-00921: 意外的 SQL 命令结尾


SQL> ALTER USER bgfc230404 ACCOUNT FORCE  ;
ALTER USER bgfc230404 ACCOUNT FORCE
                              *
第 1 行出现错误:
ORA-00921: 意外的 SQL 命令结尾


SQL> ALTER USER bgfc230404 ACCOUNT cascade;
ALTER USER bgfc230404 ACCOUNT cascade
                              *
第 1 行出现错误:
ORA-00921: 意外的 SQL 命令结尾


SQL> DROP USER bgfc230404 force;
DROP USER bgfc230404 force
                     *
第 1 行出现错误:
ORA-00921: 意外的 SQL 命令结尾


SQL> drop user bgfc230404 cascade;


用户已删除。

建议把查询活跃用户命令换成:

SELECT USERNAME, MACHINE, PROGRAM FROM V$SESSION WHERE STATUS='ACTIVE'

ALTER USER username ACCOUNT LOCK用这个命令将该用户锁住,然后再删除。然后关于你说查不到活跃连接状态,SELECT语句无法检测到正在进行的会话