在linux中设置默认ORACLE_SID

在linux中设置默认ORACLE_SID,linux,oracle,Linux,Oracle,每次登录oracle时,我都会收到一个错误: ORA-12162 TNS:net服务名称指定不正确 所以我不得不运行这个: ORACLE_SID=mydb; export ORACLE_SID 我想将mydb设置为默认的ORACLE\u-SID。我一直在寻找实现这一点的方法,但我对linux太生疏了,无法实现这一点。以下是我迄今为止所尝试的: [oracle]$ --> in .profile add export ORACLE_SID=mydb -bash: in: Permissio

每次登录oracle时,我都会收到一个错误:

ORA-12162 TNS:net服务名称指定不正确

所以我不得不运行这个:

ORACLE_SID=mydb; export ORACLE_SID
我想将
mydb
设置为默认的
ORACLE\u-SID
。我一直在寻找实现这一点的方法,但我对linux太生疏了,无法实现这一点。以下是我迄今为止所尝试的:

[oracle]$ --> in .profile add export ORACLE_SID=mydb
-bash: in: Permission denied

[root]$ chsh -s /bin/bash oracle
Changing shell for oracle.
Shell changed.
下面是我的tnsnames.ora的样子:

MYDB=
     (DESCRIPTION=
             (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
             (CONNECT_DATA=
                     (SERVICE_NAME=mydb,
                     SID=mydb)
             )
     )

Oracle提供了一个名为oraenv的脚本,它通常位于本地bin目录中。在bash_配置文件中,您可以执行以下操作:

set ORAENV_ASK=N
. oraenv mydb

请注意,它是“点空间oraenv”

我必须定义ORACLE\u SID并将其导出到ORACLE用户的
.bash\u配置文件中。这意味着oracle用户每次登录时都会运行这两个步骤,因此这可能更像是一种黑客行为,但它可以工作:

这是简短的版本。如果您不确定自己在做什么,请转到详细部分,我将在那里解释发生了什么

$ sudo -i
$ chsh /bin/bash oracle
$ sudo su - oracle
$ cd
$ vi .bash_profile
$ i

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

export PATH

###### ADD YOUR SID STUFF HERE ######
ORACLE_SID=mydb
export ORACLE_SID
~
~
esc,
:w
保存,q
退出

$ exit
$ sudo su - oracle
$ sqlplus / as sysdba
就这样


细节 定义外壳(可选)

如果您和我一样,并且系统管理员设置了oracle帐户,以便在注销时自动禁用shell,那么您需要首先为oracle用户(作为root用户)重新定义shell:

编辑配置文件 然后您需要以oracle用户身份登录并编辑
。bash\u profile

$ sudo su - oracle
$ cd
$ vi .bash_profile
$ i
您现在正在VI编辑器中编辑
.bash\u概要文件。它应该是这样的:

# .bash_profile
...
# User specific environment and startup programs
PATH=$PATH:$HOME/bin

export PATH
~
~
# User specific environment and startup programs
PATH=$PATH:$HOME/bin

export PATH

###### ADD YOUR SID STUFF HERE ######
ORACLE_SID=mydb
export ORACLE_SID
~
~
您需要做的是在导出路径之后添加SID内容,因此它应该如下所示:

# .bash_profile
...
# User specific environment and startup programs
PATH=$PATH:$HOME/bin

export PATH
~
~
# User specific environment and startup programs
PATH=$PATH:$HOME/bin

export PATH

###### ADD YOUR SID STUFF HERE ######
ORACLE_SID=mydb
export ORACLE_SID
~
~
好的,现在您必须保存文件,然后退出vi:

esc,
:w
保存,q
退出

$ exit
$ sudo su - oracle
$ sqlplus / as sysdba
疑难解答侧栏:如果您在保存文件时遇到问题,因为oracle用户没有权限,那么您必须使用root用户执行此操作,这意味着您必须找到oracle的
.bash\u profile
文件,该文件可能位于
/home/oracle/
(请记住,它是一个隐藏文件,因此使用
ls-a
查看它,而不是
ls

好的,假设您仍然以oracle用户身份登录,您需要注销并重新登录。这将激活您刚才添加的代码,并定义oracle_SID

$ exit
$ sudo su - oracle

尝试将导出ORACLE\u SID=mydb添加到您的.profile文件中。
export ORACLE\u SID=mydb
是一个步骤。另外,我非常确定
PATH
已标记为导出,因此您可以在那里保存另一个步骤。@WilliamRobertson我感谢您的反馈。不过,我的回答更多是关于婴儿步骤,而不是效率。我发现流程混乱,所以我想确保为其他困惑的人以及我未来的自己解释清楚,他们可能几年都不需要这样做,然后不知从何处再次这样做。但是,非常感谢。ORACLE_SID=mydb-mydb是什么?你从哪里得到的?