Oracle用户和表被锁定解决方法

Oracle用户和表被锁定解决方法

1、用dba角色的用户登陆,进行解锁,先设置具体时间格式,以便查看具体时间

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered.

2、查看具体的被锁时间

SQL> select username,lock_date from dba_users where username='TEST';
USERNAME LOCK_DATE TEST 2009-03-10 08:51:03

3、解锁

SQL> alter user test account unlock;
User altered.

4、查看是那个ip造成的test用户被锁

查看$ORACLE_HOME/network/admin/log/listener.log日志
10-MAR-2009 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=oracle)(HOST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.69.1.11)(PORT=49434)) * establish * lhoms * 0
10-MAR-2009 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=oracle)(HOST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.69.1.11)(PORT=49435)) * establish * lhoms * 0

这样可知是上面10.69.1.11的ip尝试多次失败登陆造成的被锁 注: 一般数据库默认是10次尝试失败后锁住用户

1、查看FAILED_LOGIN_ATTEMPTS的值

select * from dba_profiles where RESOURCE_NAME = 'FAILED_LOGIN_ATTEMPTS';

2、修改为30次

alter profile default limit FAILED_LOGIN_ATTEMPTS 30;

3、修改为无限次(为安全起见,不建议使用)

alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;

Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?本文我们主要就介绍一下这部分内容。

(1)锁表查询的代码有以下的形式:

select count(*) from v$locked_object;
select * from v$locked_object;

(2)查看哪个表被锁

select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;

(3)查看是哪个session引起的

select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;

(4)杀掉对应进程

执行命令:alter system kill session'1025,41'; 其中1025为sid,41为serial#.

查询那个程序导致的

SELECT v.program,v.* FROM v$session v where serial# = '9' and sid =  586

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/11621

(0)
凯影的头像凯影
上一篇 2024年5月9日 下午3:47
下一篇 2024年5月10日 下午3:17

相关推荐

  • 解决远程连接MySQL报错:2003 – Can‘t connect to MySQL server on ‘X.X.X.X‘ (10060 “Unknown error“)问题

    问题先看报错: 2003 – Can’t connect to MySQL server on ‘X.X.X’ (10060 “Unknown error”)。 意思是服务器远程连接出错:未知错误。 解决方案:遇到这个问题,首先想到的是权限不够。那咱就给它赋权。 首先登录MySQL数据库:mysql -u用户名 -p密码; 然后:use mysq…

    2023年7月27日
    80900
  • SQL Server 2008 R2双机热备之发布、订阅实现实时同步实践过程

    一、复制的功能概述          SQL Server 复制功能实现了主从库的读写分离,从而将主库的压力分解掉,主库就主要负责数据的增删改等,而从库主要负责查询。另外有了主、从库,也给生产数据增加了一层安全性,即备份。万一主库出了什么问题,从库却还在。       …

    2023年2月10日
    2.0K00
  • MySQL 用户管理 – 添加用户、授权、删除用户

    不要直接使用 root 用户管理应用数据 添加用户 以root用户登录数据库,运行以下命令: 上面的命令创建了用户 zhangsan, 密码是 zhangsan. 在 mysql.user 表里可以查看到新增用户的信息: 授权 命令格式: grant privilegesCode on dbName.tableName to username@host id…

    2022年12月21日
    1.1K00
  • docker容器无法访问宿主机数据库

    今天用docker部署一个web服务时遇到总是连不上宿主机mysql数据库的问题,报SQLSTATE[HY000] [2002] Connection refused,经过测试,宿主机用相同配置可以连上,登入docker容器内就连不上,初步判断容器内通过localhost或127.0.0.1是连不上宿主机的。具体原因和解决方法如下: 原因: 今天用docke…

    2023年8月9日
    1.4K00
  • Navicat161 数据库文件修复

    错误分析 此错误一般为表损坏,修复即可。可能造成原因为服务器突然断电,而有程序还在往表里写数据或者表的数据很大或者数据搬迁的时候编码格式有误,避免浪费时间去修表,可采用Navicat去快速修复表!!! 登录Navicat数据库,找到报错的数据表,右键维护->修复表->拓展或者快速

    2022年11月17日
    1.2K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信