docker oracle navicat_关于docker镜像中oracle账户sysrem被锁定的解决办法

2c7e694454002b71e92821a6c8193324.png
java.sql.SQLException: ORA-28000: the account is locked

 at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
 at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:392)
 at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:385)
 at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:1018)
 at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:501)
 at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
 at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
 at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:437)
 at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:954)
 at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:639)
 at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666)
 at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
 at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566)
 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1596)
 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1662)
 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2697)

这个bug的意思是说oracle账号被锁定,出现问题的原因是尝试错误超过10次就会把当前账号锁定,这是就会出现这个异常。

网上解决思路

这个是网上的一个解决思路,但是我用的时候总是报错,具体如下:

  1. 进入docker容器所在的虚拟机,打开终端
  2. 执行命令:docker exec -it oracle bash
[root@localhost ~]# docker exec -it oracle bash
[root@f032059bd578 /]# 
  1. 执行命令:sqlplus /nolog
[root@localhost ~]# docker exec -it oracle bash
[root@f032059bd578 /]# sqlplus /nolog

SQL*Plus: Release 12.1.0.2.0 Production on Thu Oct 24 06:26:53 2019

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

SQL> 
  1. 连接sysdba conn /as sysdba,错误就出现在这里,然后看了相关的攻略,有好多的可能,很麻烦,然后就转换思路了
[root@localhost ~]# docker exec -it oracle bash
[root@f032059bd578 /]# sqlplus /nolog

SQL*Plus: Release 12.1.0.2.0 Production on Thu Oct 24 06:26:53 2019

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

SQL> conn /as sysdba
ERROR:
ORA-12547: TNS:lost contact


SQL> 

  1. 因为我的sys是有密码的,然后我这样conn sys/oracle as sysdba
SQL> conn sys/oracle as sysdba
ERROR:
ORA-12547: TNS:lost contact
  1. 反正网上的攻略我是没跑通,看那么多人发相关的东西,应该是可以的

本人解决思路

既然可以通过navicat连接oraacle数据库,我用它连接oracle的sys账户应该是可以的,然后在查询面板上执行修改语句应该是可以的。

  1. 使用navicat远程连接oracle的sys账户
    1. 填写连接信息

f979eeadb6a52b335ab3a9e4bd562673.png
    1. 切换角色为sysdba

56dd04adf62690aabd2cdd1cc43e7157.png
  1. 登录进去后进入查询界面,新建查询

45f364781879aab9079a814af97f22cd.png
  1. 执行命令alter user "SYSTEM" account unlock;
[SQL]alter user "SYSTEM" account unlock
受影响的行: 0
时间: 0.008s
  1. 问题完美解决!!!

自我推荐

这个是我的微信公众号,欢迎扫码关注,谢谢!

681c28f13c792eef1c8b3d7b3e85cad9.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值