Linux下非oracle用户如何使用系统认证方式登陆数据

Linux系统中,DBA一般使用oracle用户登陆/访问Linux操作系统,然后使用sqlplus命令登陆数据库进行一些维护操作,如果由于某些特殊原因,系统管理员创建了一个db_support用户,如果使用dba_support这个普通账号登陆了Linux操作系统,如何使用sqlplus访问数据库呢?

首先,我们必须在当前用户的主目录下设置环境变量,在~/.bash_profile中加入下面环境变量,例如:

export ORACLE_SID=gsp
export ORACLE_BASE=/opt/oracle19c
export ORACLE_HOME=/opt/oracle19c/product/19.3.0/db_1
PATH=/usr/sbin:$PATHexport PATH
PATH=$ORACLE_HOME/bin:$PATHexport PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
export PATH

执行source ~/.bash_profile使之生效。然后我们可以使用账号密码登陆数据库。

$ sqlplus sys/****** as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Oct 18 16:19:16 2023
Version 19.16.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.16.0.0.0

SQL>

在oracle用户下可以使用下面方式(系统认证登陆)登陆数据库,但是,在db_support用户下,使用下面方式登陆数据库会报ORA-01017错误

$sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Aug 9 10:25:39 2023
Version 19.16.0.0.0

Copyright (c) 19822022, Oracle.  All rights reserved.

ERROR:
ORA-01017: invalid username/password; logon denied


Enter user-name: 
ERROR:
ORA-01017: invalid username/password; logon denied

那么怎么解决这个问题呢?其实导致这个错误的原因在于这个用户没有加入dba用户组。 检查这两个用户所属的用户组,发现dba_support账号不在dba用户组下面,如下所示:

[oracle@db_01 ~]$ id 
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba)

[dba_support@db_01 ~]$ id dba_support
uid=54322(dba_support) gid=54321(oinstall) groups=54321(oinstall)

切换到root用户下,将dba_support加入dba用户组后,这个问题解决了

#usermod -G dba dba_support
扫描上面二维码关注我
如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.