Oracle

如何在linux中使用sudo通過root執行sqlplus?

  • June 2, 2020

設想:

*oracle xe11g r2 已安裝(並在以 oracle 身份登錄時正常執行)。

*以使用者身份登錄,root

*將root添加到組oinstalldba,如下所示:

#useradd -G oinstall root
#useradd -G dba root

*環境變數ORACLE_HOME和ORACLE_SID設置如下:

#export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
#export ORACLE_SID=XE
#export PATH=$ORACLE_HOME/bin:$PATH

並執行:

#sudo -u oracle sqlplus / as sysdba

輸出:

sudo: sqlplus: command not found

請指導我使用 sudo 通過 root 執行 sqlplus。

不是 Oracle 錯誤。

當然你可以把上面的變數放在.bash_profileof 中oracle,但是當你像上面那樣使用 sudo 時,它不會被執行。

[root@o71 ~]# tail -3 /home/oracle/.bash_profile
export ORACLE_HOME=/u01/app/oracle/product/dbhome_1
export ORACLE_SID=ETALON
export PATH=$ORACLE_HOME/bin:$PATH
[root@o71 ~]# sudo -u oracle sqlplus / as sysdba
sudo: sqlplus: command not found

解決此問題的眾多方法之一:

[root@o71 ~]# sudo -u oracle bash -c '. ~/.bash_profile; sqlplus / as sysdba'

SQL*Plus: Release 18.0.0.0.0 - Production on Sun Oct 28 10:52:43 2018
Version 18.4.0.0.0

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


Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0

SQL> 

我不喜歡.bash_profile用於設置 Oracle 環境,我建議使用或不會oraenv自動執行的自定義腳本。

引用自:https://dba.stackexchange.com/questions/221179