今天中午,接同事申告,某GP集群的gpstate,gpstart,gpstop指令失效,报错如下:
gpstate
'import site' failed; use -v for traceback
Traceback (most recent call last):
File "/usr/local/greenplum-db/./bin/gpstate",
line 11, in
from
gppylib.mainUtils import *
File
"/home/build/builds/greenplum-db/Release-4_2_5_2-build-1_rc_051613-1600/Release-4_2_5_2-build-1_output/greenplum-db-Release-4_2_5_2-build-1/lib/python/gppylib/__init__.py",
line 4, in
from tokens
import *
ImportError: No module named os.path
看上去,有点不好办的样子,难道要打开那些个python的源文件看看不成。
换个指令看看
psql -d bidw
psql: error while loading shared libraries: libpq.so.5: cannot open
shared object file: No such file or directory
这样看来是找不到这个文件了:libpq.so.5
根据现象判断是文件丢失或者是环境变量改变造成GP找不到文件造成的。
先找一下这个文件
cd /usr/local/greenplum-db
find -name libpq.so.5
./lib/libpq.so.5
看上去这个文件还在lib目录下,那一定是环境变量的事了。马上问了一下最近安装了什么软件,答复是刚装了ORACLE客户端。这就好办了。
echo $PATH
/opt/oracle/lib:/opt/oracle/lib:/usr/local/greenplum-db/./bin:/usr/local/greenplum-db/./ext/python/bin:/home/gpadmin/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin:/home/gpadmin://usr/java/jdk1.6.0_18/bin
貌似正常的样子。再看看另一个变量吧,那个才是根LIB相关的
echo $LD_LIBRARY_PATH
/opt/oracle/lib
这就不对了,只剩下ORACLE的LIB了,一定ORACLE修改环境变量时出问题了。
cd
vi .profile
不管三七二十一,先找到ORACLE部分注释掉再登录。
#set oracle
#export ORACLE_HOME=/opt/oracle
#export LD_LIBRARY_PATH=/opt/oracle/lib
#PATH=$LD_LIBRARY_PATH:$PATH:
#export PATH
再一试还是不行啊。再打开配置文件看看
vi .profile
发现还有一行:
test -z "$PROFILEREAD" && .
/etc/profile || true
切换到root用户
vi /etc/profile
同样发现了这几行,注释掉先
#set oracle
#export ORACLE_HOME=/opt/oracle
#export LD_LIBRARY_PATH=/opt/oracle/lib
#PATH=$LD_LIBRARY_PATH:$PATH:
#export PATH
再重新登录,GP恢复正常了,ORACLE不能用了。
问题找到了,现在还要解决ORACLE正常使用的问题,仔细一看发现是他的这一行有问题
export LD_LIBRARY_PATH=/opt/oracle/lib
应该是这样写,把新的LD_LIBRARY_PATH追加上去才对。
export LD_LIBRARY_PATH=/opt/oracle/lib:$LD_LIBRARY_PATH
改正后再把刚才注释的几行再恢复回来。
两个文件都改好了,现在重新登录一试,GP和ORACLE都可以正常使用了。