在linux中设置默认的ORACLE_SID

时间:2017-01-20 19:33:17

标签: linux oracle

每次登录oracle时,都会收到错误消息:

  

ORA-12162 TNS:net service name is incorrectly specified

所以我被迫执行此操作:

ORACLE_SID=mydb; export ORACLE_SID

我想将mydb设置为默认ORACLE_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)
             )
     )

2 个答案:

答案 0 :(得分:1)

我必须定义ORACLE_SID并将其导出到oracle用户的.bash_profile中。这意味着每次oracle用户登录时都会运行这两个步骤,因此它可能更像是一个hack,但它可以工作:

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

$ 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

就是这样。

<小时/>

详细

定义shell(可选)

如果你像我一样,并且系统管理员设置oracle帐户在注销时自动禁用shell,你需要首先为oracle用户重新定义shell(以root身份):

$ sudo -i
$ chsh /bin/bash oracle

修改个人资料 然后,您需要以oracle用户身份登录并编辑.bash_profile

$ sudo su - oracle
$ cd
$ vi .bash_profile
$ i

您现在正在VI编辑器中编辑.bash_profile。看起来应该是这样的:

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

export PATH
~
~

您需要做的是在export PATH之后添加您的SID内容,所以它应该如下所示:

# 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退出。

  

边栏疑难解答:如果由于oracle用户没有权限而在保存文件时遇到问题,那么你必须使用root用户进行操作,这意味着你必须找到oracle的{{1} }文件,可能在.bash_profile (请记住,这是一个隐藏文件,因此请使用/home/oracle/查看而不是ls -a

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

ls

答案 1 :(得分:0)

Oracle提供了一个名为oraenv的脚本,它通常存在于本地bin目录中。在你的bash_profile中,你会做类似的事情:

set ORAENV_ASK=N
. oraenv mydb

请注意,它是&#34;点空间oraenv&#34;