今天在使用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语句无法检测到正在进行的会话