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次就会把当前账号锁定,这是就会出现这个异常。
网上解决思路
这个是网上的一个解决思路,但是我用的时候总是报错,具体如下:
- 进入docker容器所在的虚拟机,打开终端
- 执行命令:
docker exec -it oracle bash
[root@localhost ~]# docker exec -it oracle bash
[root@f032059bd578 /]#
- 执行命令:
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>
- 连接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>
- 因为我的sys是有密码的,然后我这样
conn sys/oracle as sysdba
SQL> conn sys/oracle as sysdba
ERROR:
ORA-12547: TNS:lost contact
- 反正网上的攻略我是没跑通,看那么多人发相关的东西,应该是可以的
本人解决思路
既然可以通过navicat连接oraacle数据库,我用它连接oracle的sys账户应该是可以的,然后在查询面板上执行修改语句应该是可以的。
- 使用navicat远程连接oracle的sys账户
- 填写连接信息
-
- 切换角色为sysdba
- 登录进去后进入查询界面,新建查询
- 执行命令
alter user "SYSTEM" account unlock;
[SQL]alter user "SYSTEM" account unlock
受影响的行: 0
时间: 0.008s
- 问题完美解决!!!
自我推荐
这个是我的微信公众号,欢迎扫码关注,谢谢!