300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > su user oracle does not exist Linux下oracle用户无法su切换的异常【终极解决

su user oracle does not exist Linux下oracle用户无法su切换的异常【终极解决

时间:2023-01-04 22:57:52

相关推荐

su user oracle does not exist Linux下oracle用户无法su切换的异常【终极解决

客户的Oracle生产环境数据库准备迁移到云服务器环境,于是先把新的云环境搭建好了dataguard后,准备到客户当前的生产环境做expdp备份,由于有一段时间没登录这个旧环境了,登上去发现一个很离奇的现象,su - oracle无法切换,也没有报错信息!

[root@db1]# pwd

/root

[root@db1]# ps -ef |grep pmon

oracle 11342 1 0 Oct19 ? 00:01:38 ora_pmon_orcl

root 12679 12528 0 16:15 pts/0 00:00:00 grep pmon

[root@db1]# su - oracle

[root@db1]# pwd

/root

[root@db1]#

从上面信息看出,oracle其实是运行正常的,只是无法切换过去,并且oracle用户信息也是存在的,查看/home/oracle,/etc/passwd,/etc/group里都还有oracle的信息。

同时查看secure log,如下

[root@db1]# tail -f /var/log/secure|grep su

Dec 26 22:11:14 18c su: pam_unix(su-l:session): session opened for user oracle by root(uid=0)

Dec 26 22:11:14 18c su: pam_unix(su-l:session): session closed for user oracle

Dec 26 22:12:22 18c su: pam_unix(su-l:session): session opened for user oracle by root(uid=0)

Dec 26 22:12:22 18c su: pam_unix(su-l:session): session closed for user oracle

Dec 26 22:12:30 18c su: pam_unix(su:session): session opened for user oracle by root(uid=0)

Dec 26 22:12:30 18c su: pam_unix(su:session): session closed for user oracle

Dec 26 22:12:45 18c su: pam_unix(su-l:session): session opened for user oracle by root(uid=0)

Dec 26 22:12:45 18c su: pam_unix(su-l:session): session closed for user oracle

Dec 26 22:15:44 18c su: pam_unix(su-l:session): session opened for user oracle by root(uid=0)

Dec 26 22:15:44 18c su: pam_unix(su-l:session): session closed for user oracle

于是进行百度排查,发现大多数说法是更改 /etc/security/limits.conf 里面的soft nofile和hard nofile连接上限值,因为连接数满了,于是尝试进行更改后,问题却依旧没有解决!

[root@db1]# vi /etc/security/limits.conf

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

这个时候,按照这个思路,如果是连接数太多,我重启系统总可以解决了吧?于是为了快速解决这个问题,尝试reboot重启linux,事后才觉得这个决定有点冲动冒失了!

那是因为重启后,不仅问题依旧没有解决,并且oracle数据库没自动起来(默认是没设置自动启动的),这个时候压力山大啊!因为客户在不断催促业务中断了,于是尝试用root去启动oracle,但最终是失败的,只能用oralce用户来操作!

绝望中想起能否通过重建oracle用户来试试?!

于是网上查过一些资料,的确是可以这么干!但前提是需要确认好旧oracle用户的id和所属用户组id那些信息,于是备份好这些信息后,删除oracle用户,再重新创建:

[root@db1]# userdel oracle

userdel: user oracle is currently used by process 2447

[root@db1]# kill -9 2447

这个时候提示有进程在使用oracle用户,于是kill掉后,使用-r来直接删除,然后再根据备份的信息重建:

[root@db1]# userdel -r oracle

[root@db1]# useradd -u 1101 -g oinstall -G dba oracle

[root@db1]# su - oracle

[oracle@db1]$ pwd

最后看到成功切换到oracle用户的那一刻,终于长舒一口气,毕竟这个操作风险还是挺大的,就怕强行删除用户,会影响关联的oracle目录和数据,还好最终是解决了!以此记录一下,遇到的朋友可以作为参考!

su user oracle does not exist Linux下oracle用户无法su切换的异常【终极解决方案_生产环境亲测有效】...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。