使用Oracle时,通过sqlplus连接数据库时,不少DBA可能碰到过 ORA-12547错误,如下所示:
$sqlplus / as sysdba
SQL*Plus: Release 11.1.0.7.0 - Production on Wed Mar 30 11:59:06 2011
Copyright © 1982, 2008, Oracle. All rights reserved.
ERROR:
ORA-12547: TNS:lost contact
当出现上述错误时,通常需要检查以下内容。
(1)检查操作系统内核参数是否无误,并检查当前会话的资源限制。如下所示:
[ora10205@mcdbatest ~]$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 65536
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
(2)确认
O
R
A
C
L
E
H
O
M
E
/
b
i
n
/
o
r
a
c
l
e
文件的权限是否有问题(在
O
r
a
c
l
e
11
g
R
A
C
下,可能需要查看
ORACLE_HOME/bin/oracle文件的权限是否有问题(在Oracle 11g RAC下,可能需要查看
ORACLEHOME/bin/oracle文件的权限是否有问题(在Oracle11gRAC下,可能需要查看GRID_HOME/bin/oracle和
O
R
A
C
L
E
H
O
M
E
/
b
i
n
/
o
r
a
c
l
e
两个文件)。正确的权限应该显示为如下内容:
[
o
r
a
10205
@
m
c
d
b
a
t
e
s
t
b
i
n
]
ORACLE_HOME/bin/oracle两个文件)。正确的权限应该显示为如下内容: [ora10205@mcdbatest bin]
ORACLEHOME/bin/oracle两个文件)。正确的权限应该显示为如下内容:[ora10205@mcdbatestbin] ls -l oracle
-rwsr-s–x 1 ora10205 oinstall 98787422 Jul 10 10:22 oracle
如果权限不对,则可用chmod命令进行修改,如下所示:
$ cd $ORACLE_HOME/bin
$ chmod 6751 oracle
$ ls -l oracle
(3)检查以下环境变量是否存在问题,注意环境变量LD_LIBRARY_PATH,不同的操作系统该环境变量会有所不同,如下所示:
echo $ORACLE_HOME
echo $ORACLE_SID
echo $LD_LIBRARY_PATH
echo
P
A
T
H
(
4
)检查
PATH (4)检查
PATH(4)检查ORACLE_HOME/bin/oracle和
O
R
A
C
L
E
H
O
M
E
/
r
d
b
m
s
/
l
i
b
/
c
o
n
f
i
g
.
o
的文件大小,如果大小为
0
,则需要重新编译
O
R
A
C
L
E
软件。如下所示:
[
o
r
a
10205
@
m
c
d
b
a
t
e
s
t
]
ORACLE_HOME/rdbms/lib/config.o的文件大小,如果大小为0,则需要重新编译ORACLE软件。如下所示: [ora10205@mcdbatest ~]
ORACLEHOME/rdbms/lib/config.o的文件大小,如果大小为0,则需要重新编译ORACLE软件。如下所示:[ora10205@mcdbatest ] relink all
(5)使用操作系统跟踪命令跟踪sqlplus连接过程,然后观察跟踪文件。