ORA-21561 and Oracle Instant Client 11.2 on Mac OS X

Posted by Harid九月 - 20 - 2014 Leave comments

在OS X里面安装了oracle instant client 11.2的客户端,下载了:

instantclient-basic-macos.x32-11.2.0.4.0.zip

instantclient-sqlplus-macos.x32-11.2.0.4.0.zip

解压至同一个目录,如instantclient_11_2,然后将该目录放置在“/Users”目录下,并在instantclient_11_2目录下创建network/admin/tnsnames.ora文件及目录;创建sqlplus/admin目录,并将glogin.sql文件移至其下面;创建bin目录,并将adrci、sqlplus移至其下面。

编辑用户下面的~/.bash_profile文件,添加如下环境变量:

1
2
3
4
5
6
### Oracle ###
export DYLD_LIBRARY_PATH=/Users/instantclient_11_2:$DYLD_LIBRARY_PATH
export ORACLE_HOME=/Users/instantclient_11_2
export SQLPATH=$ORACLE_HOME
export PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin
### End Oracle ###

生效~/.bash_profile后就可以执行sqlplus来连接远程数据库了。

但是我在使用sqlplus来连接远程数据库的时候出现了如下的报错:

[Harid@Halo admin] $: sqlplus system@ORA11G

SQL*Plus: Release 11.2.0.4.0 Production on Sat Sep 20 13:46:05 2014

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

Enter password:

ERROR:

ORA-21561: OID generation failed

该错误的解释:

[oracle@vps ~] $: oerr ora 21561

21561, 00000, “OID generation failed”

// *Cause:  The handles passed in may not be valid

// *Action: Check the validity of the env, svc handles

这个问题的原因在于/etc/hosts文件内容不符合要求,/etc/hosts文件里面缺省有如下一行:

1
127.0.0.1	localhost

需要修改成:

1
127.0.0.1	localhost Halo

其中“Halo”为主机名。改完就可以登录了:

sqlplus

   声明:本文采用 BY-NC-SA 协议进行授权 | 星期九
   原创文章转载请注明:转自《ORA-21561 and Oracle Instant Client 11.2 on Mac OS X


分享按钮