首页 > 其他分享 >ORA-01940 无法删除当前连接的用户

ORA-01940 无法删除当前连接的用户

时间:2024-08-20 15:41:58浏览次数:12  
标签:删除 system session kill 01940 alter SE ORA

-----------------------------------------------------------------------

---- bayaim

---- 2024年8月20日15:37:53

------------------------------------------------------------------------

问题背景:

  想删除用户下所有的对象


1、问题现象:

执行命令,删除用户:
drop user ECOLOGY cascade;

报错:
ora01940 无法删除当前连接的用户

 

2、解决办法:

-- 查看用户的sid和serial
select username,sid,serial#,program from v$session where username='ECOLOGY';

-- 如果用户已连接数的较少,可以手动删除
alter system kill session '385,29016';


-- 如果用户已连接数的较多,可以批量删除
select 'alter system kill session ''' || sid || ',' || serial# || ''';'
from
(
SELECT SE.sid, SE.serial#, SUBSTR(SE.machine, 1, 30) MACH
FROM v$session SE, v$sqlarea SQ, v$process PR
WHERE SE.paddr = PR.ADDR(+)
AND SE.sql_address = SQ.address(+)
AND SE.USERNAME like '%ECOLOGY%'
);

---查询的批量删除命令结果如下
alter system kill session '10,503';
alter system kill session '1144,964';
alter system kill session '1151,17866';
alter system kill session '1153,32599';
……


-- 在服务器上,使用sys链接数据库,再次删除用户
drop user ECOLOGY cascade;

  测试结果:
  1、如果数据库的对象较多,删除会很久
  2、不如 DBCA 删库


-- 查看用户session的状态,验证结果
select saddr,sid,serial#,paddr,username,status from v$session
where username is not null and username='ECOLOGY';

 

标签:删除,system,session,kill,01940,alter,SE,ORA
From: https://www.cnblogs.com/bayaim/p/18369524

相关文章

  • 如何删除数据库下的所有表(mysql)
    要在MySQL中删除数据库下的所有表,你有两个主要选项:一个是删除整个数据库然后重新创建它,另一个是查询所有表的名称并逐一删除它们。下面是这两种方法的步骤:方法1:删除并重新创建数据库这种方法是最简单和最快的,但请注意,它会删除整个数据库,包括其中的所有表、视图、存储过程等。......
  • 【Oracle】存储过程临时存储键值对
    【Oracle】存储过程临时存储键值对通常可以使用pl/sql表(也称为索引表或关联数组)来存储这些键值对,即typekey_value_tableistableofvarchar2(100)indexbyvarchar2(100)示例:createorreplaceprocedurestore_key_value_pairsis--定义一个pl/sql表来存储键值对......
  • 修改Oracle字符集为ZHS16GBK
    修改Oracle字符集为ZHS16GBK1、登录DBA用户 #登录dba用户sqlplus/nologSQL>connectsys/oracleassysdba2、查看当前字符集 #查看当前字符集SELECT*FROMV$NLS_PARAMETERSWHEREPARAMETER='NLS_CHARACTERSET';SELECTUSERENV('language')FROMDUAL;3、......
  • Oracle RAC 集群启动顺序 转发:https://www.modb.pro/db/1824295923545612288?utm_s
    前言前几天使用脚本在RockyLinux9.4安装Oracle11GR2RAC,安装完之后发现集群无法正常启动,后经过分析发现原来是因为RHEL9版本默认安装移除了 initscripts 软件包,需要人为手动安装,在RHEL8之前是默认安装的。在分析问题的过程中,顺便对OracleRAC集群启动顺序进行了更......
  • 批量创建/删除用户
    #!/bin/bashread-p"请输入你想创建用户的前缀:"prefix[-z$prefix]&&echo"必须输入前缀"&&exit #控制前缀不能为空[[!$prefix=~^[a-Z]+$]]&&echo"请输入正确的前缀"&&exit #控制前缀为字母read-p"请输入你想创建用户的个数:"......
  • 如何在Oracle中使用同义词优化数据库访问
    1.同义词的概念:同义词是为数据库对象定义的别名,目的是简化SQL语句的书写。通过使用同义词,用户可以用一个简短且易记的名称来替代一个复杂的数据库对象名称,从而使得SQL语句更简洁。2.同义词的类型:私有同义词:由普通用户创建,通常只能由创建该同义词的用户使用。公共同义......
  • Oracle运算符:从等号到空值运算的使用技巧
    在Oracle数据库中,关系运算符和逻辑运算符用于在SQL查询中定义条件。1.等号(=)运算符作用:用于精确匹配字段的值。适用场景:适用于比较数值、字符串、日期等数据类型,要求条件严格相等。例子:SELECTename,salFROMempWHEREdeptno=10;查询部门编号为10的所有员工姓名和......
  • Oracle数据库必学!超实用的9个字符串处理函数
    Oracle查询语句中的单行函数,特别是一些常用的字符串处理函数。1.ConCAT函数作用:将两个字符串连接在一起,生成一个新的字符串。使用方法:concat(字符串1,字符串2)示例:SELECTconcat('Hello,','World')FROMDUAL;结果为:“Hello,World”。2.CHR与ASCII函数CHR函数......
  • Oracle索引使用原则:优化查询性能的关键
    1.索引信息的查询:要获取数据库中索引的相关信息,如索引类型、所在表、是否唯一索引等,可以查询与索引相关的数据字典视图。常用的数据字典视图包括dba_indexes、dba_ind_columns、user_indexes和user_ind_columns等。dba_indexes和dba_ind_columns视图需要DBA权限才能访问,......
  • pod数据持久化-pv与pvc资源及动态存储StorageClass
    一、pc与pvc的概念在传统的存储卷挂载,比如说nfs,它虽然能够实现我们大多数的生产场景,但是,耦合性比较高;举例:假设,我们要将集群从“阿里云”迁移到我们私有云服务器上,并改变存储卷挂在的类型,就无法实现,必须使用原有的存储卷类型;比如我们阿里云的存储卷是nfs,我们线下服务器的存储卷......