事情经过
测试环境oracle 某个用户密码过期要求更新密码遂更新密码,但由于某个程序对应的oracle连接配置没有修改一直用老的密码去连oracle库,导致该用户被锁;
于是去找system 用户的密码,该oracle 是祖传了几代的oracle ,通过层层询问多个同事,有同事提供了一个密码,他告诉我不知道有没有被其他变更过,于是用其提供的密码去连,连了几次后,终于system账号也被锁了, sys 用户的连接信息也无人知晓,
解决方案
通过度娘,得到以下解决方案
具体实现过程:
(1)sqlplus,以sysdba身份登录,不需要提供用户名和密码,此sql深得我心。
sqlplus / as sysdba ;
(2)为用户解锁。
alter user system account unlock;
ps:触类旁通,锁定用户语句即为, alter user system account lock;
(3)重新设定密码。
alter user system identified by system123456;
更改之后的用户名/密码是:system/system123456
具体解决过程
安装sqlplus
下载
进入oracle 官网下载对应版本的instantclient;我的oracle是11.2, 故下载 oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm、oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
[https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html]
安装
上传安装包,切换目录到安装包所在目录,
执行命令:
rpm -ivh oracle-instantclient11.2-*.rpm
修改配置
vim /etc/ld.so.conf
在文件后面追加一行:
/usr/lib/oracle/11.2/client64/lib
重启
[root@dev-gefrm-zookeeper ~]# ldconfig
配置oracle环境变量
vim /etc/profile
新增如下配置
export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
export LD_LIBRARY_PATH=:$ORACLE_HOME/lib:/usr/local/lib:$LD_LIBRARY_PATH:.
export TNS_ADMIN=$ORACLE_HOME
export PATH=$PATH:$ORACLE_HOME/bin:.
配置TNS链接文件
cd $ORACLE_HOME
(新建这个文件)
vi tnsnames.ora
在文件中加入:
hundsun =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.244)(PORT = 1521))
)
(CONNECT_DATA =
(SID = hundsun )
(SERVER=DEDICATED )
)
)
注意:上面的 SID 必须与oracle SID一致,不然会出现了 ORA-12162: TNS:net service name is incorrectly specified
异常
如何确定oracle SID?
执行如下命令,黄色框部分即为oracle SID
ps -ef|grep pmon
执行:
export ORACLE_SID=hundsun
以sysdba身份登录
su - oracle (注意横杆)
sqlplus / as sysdba
注意上面 su - oracle 中的横杆,不然会出现ORA-12545: Connect failed because target host or object does not exist
去除密码180到期限制
将密码有效期由默认的180天修改成“无限制”,修改之后不需要重启动数据库,会立即生效
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED ;
解锁
alter user db_user account unlock;
修改密码
输入alter user 用户名 identified by +新的密码