【问题标题】:Unable to connect to Oracle after executing .bash_profile执行 .bash_profile 后无法连接到 Oracle
【发布时间】:2023-04-03 15:56:01
【问题描述】:

我已经安装了 Oracle 11gR2 并想连接 SQL*Plus 但我不能。

我以 root 登录,然后将用户切换到 oracle

su oracle

我在 .bash_profile 中添加了所需的 Oracle 环境变量,但是当我从 root 切换到 oracle 用户时它没有执行。即使手动执行 bash 文件也不会使用以下命令导出变量

$ ./.bash_profile

这些是我.bash_profile的内容:

#!/bin/bash 
#.bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programsotp
PATH=$PATH:$HOME/bin

export PATH

# Oracle Settings
TMP=/tmp; export TMP 
TMPDIR=$TMP; export TMPDIR 

ORACLE_HOSTNAME=orcl.genie.com; export ORACLE_HOSTNAME
ORACLE_UNQNAME=orcl; export ORACLE_UNQNAME 
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE 
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME 
ORACLE_SID=orcl; export ORACLE_SID 
ORACLE_TERM=xterm; export ORACLE_TERM 
PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH; export 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 

if [ $USER = "oracle" ]; then 
   if [ $SHELL = "/bin/ksh" ]; then 
      ulimit -p 16384 
      ulimit -n 65536 
   else 
      ulimit -u 16384 -n 65536 
   fi 
fi 

umask 022

【问题讨论】:

  • “我不能”没有帮助 - 您还没有说明您如何尝试连接或连接时会发生什么,包括您遇到的任何错误。
  • 当我尝试连接为 sqlplus / as sysdba bash: sqlplus: command not found
  • 您是否在login shell 中运行?您可以调试 .bash_profile 实际正在运行吗(例如,在其中粘贴一些 echo/printf 命令以查看显示的内容)?如果它正在运行,env 会为您设置的变量显示什么?
  • 如何检查我是否在登录 shell 中运行?即使在没有登录 shell 的情况下运行,为什么当我手动运行 .bash_profile as sh ./.bash_profile 时它没有执行
  • 对于您刚刚添加的手动步骤,您必须获取文件:. ./.bash_profile

标签: bash sqlplus


【解决方案1】:

要检查您是否在登录 shell 中运行,请使用以下命令

shopt login_shell

如果显示

login_shell off 

那么您没有在登录 shell 中运行。您需要使用 -l 开关切换到 oracle 用户

su -l oracle

希望,它可以解决您的问题。

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 2016-07-27
    • 2020-07-28
    • 2018-03-05
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多