每次登录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)
)
)
答案 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;