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

发布时间 2023-10-18 17:13:59作者: 潇湘隐者

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