早上刚来的时候,客户的dba就急忙找到我说生产系统exp出问题了。exp的时候报了错误,让我帮着看一下。
>
exp xxxxx file=tui.dmp log=xxx.log
Message 206 not
found; No message file for product=RDBMS, facility=EXP: Release 11.2.0.2.0 -
Production on Thu May 8 09:36:55 2014
Copyright (c) 1982,
2009, Oracl
Invalid format of
Export utility name
Verify that
ORACLE_HOME is properly set
Export terminated
unsuccessfully
EXP-00000: Message 0
not found; No message file for product=RDBMS, facility=EXP猛一看是因为ORACLE_HOME设置出问题了,但是这是生产系统啊。变量的设置都是比较严格的。都是反复检验的。不过还是从头到尾查了一遍。
先赶紧查一下sqlplus看连接数据库是否正常,测试了一下,没有问题。
然后查看alert日志,里面也没有任何报错信息。
输出ORACLE_HOME也没有问题,可以直接cd过去。
查看exp的情况,看是不是文件出问题了,被人手动改过了。
> file exp
exp: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), not stripped
可以看到已经很长时间没有动过了。权限也是正常的。
> ll exp
-rwxr-x--x 1 xxxx dba 985297 Oct 2 2013 exp
排查一下.profile文件是否有乱码问题。
> cat -v .profile
MAIL=/usr/mail/${LOGNAME:?}
set -o vi
stty erase ^H
TERM=dtterm
EDITOR=vi
ORACLE_HOME=/opt/app/oracle/XXXX/product/11.2.0
export ORACLE_HOME
export ORACLE_SID=XXXX
export ORACLE_BASE=/opt/app/oracle/XXXX
NLS_LANG=AMERICAN_AMERICA.TH8TISASCII
export NLS_LANG
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
PATH=$PATH:$ORACLE_HOME/bin
export PATH
HOST=`hostname`
USER=`logname`
PS1='$USER@$HOST:$PWD> '
export PS1
#export SHELL=/usr/local/bin/tcsh
#. $ORACLE_HOME/bin/oraenv
可以看到也没有问题。
重新export一下,试了也没有任何变化
查看metalink,oracle建议采用truss来trace一下。而且只能使用root用户,我一看我们的机器上没有装truss.
我来尝试一下使用strace来做.没想到真发现了问题。
不过为了保险起见,先在测试环境中先来测试一下。
>strace exp n1/n1 tables=customer file=a.dmp
输出如下。
execve("/opt/app/oracle/xxxx/product/11.2.0/bin/exp", ["exp", "n1/n1", "tables=customer", "file=a.dmp"], [/* 36 vars */]) = 0
brk(0) = 0x149a6000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b6b7d52d000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b6b7d52e000
....
其中涉及到mesg中文件的open操作主要有下面5个地方。
open("/opt/app/oracle/dbccbspt1/product/11.2.0/rdbms/mesg/expus.msb", O_RDONLY) = 3
open("/opt/app/oracle/dbccbspt1/product/11.2.0/oracore/mesg/lrmus.msb", O_RDONLY) = 4
open("/opt/app/oracle/dbccbspt1/product/11.2.0/rdbms/mesg/diaus.msb", O_RDONLY) = 5
open("/opt/app/oracle/dbccbspt1/product/11.2.0/rdbms/mesg/ocius.msb", O_RDONLY) = 7
open("/opt/app/oracle/dbccbspt1/product/11.2.0/rdbms/mesg/oraus.msb", O_RDONLY) = 8
这5个文件是在exp中需要引用到的。
在生产中查看
oraccbs1@ebsmed08:oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll expus.msb*
-rw-r--r-- 1 oraccbs1 dba 5817 Sep 4 2010 expus.msb.gz
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll ocius.msb*
-rw-r--r-- 1 oraccbs1 dba 9193 Sep 4 2010 ocius.msb.gz
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll oraus.msb*
-rw-r--r-- 1 oraccbs1 dba 352792 Oct 9 2012 oraus.msb.gz
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll lrmus.msb*
ls: lrmus.msb*: No such file or directory
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> cd ..
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms> cd ..
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0> cd oracore
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/oracore> cd mesg
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/oracore/mesg> ll lrmus.msb*
-rw-r--r-- 1 oraccbs1 dba 4608 Aug 11 2010 lrmus.msb
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/oracore/mesg> gunzip expus.msb.gz
gunzip: expus.msb.gz: No such file or directory
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/oracore/mesg> cd ..
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/oracore> cd ..
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0> cd rdbms/mesg
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> gunzip expus.msb.gz
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll expus.msb
-rw-r--r-- 1 oraccbs1 dba 17408 Sep 4 2010 expus.msb
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> gunzip ocius.msb.gz
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> gunzip oraus.msb.gz
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll ocius.msb
-rw-r--r-- 1 oraccbs1 dba 27136 Sep 4 2010 ocius.msb
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll oraus.msb
-rw-r--r-- 1 oraccbs1 dba 1092608 Oct 9 2012 oraus.msb
oraccbs1@ebsmed08:/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> exp
Export: Release 11.2.0.2.0 - Production on Thu May 8 10:40:19 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Username:
opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll expus.msb*
-rw-r--r-- 1 oraccbs1 dba 5817 Sep 4 2010 expus.msb.gz
/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll ocius.msb*
-rw-r--r-- 1 oraccbs1 dba 9193 Sep 4 2010 ocius.msb.gz
/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll oraus.msb*
-rw-r--r-- 1 oraccbs1 dba 352792 Oct 9 2012 oraus.msb.gz
/opt/app/oracle/dbccbspr1/product/11.2.0/oracore/mesg> ll lrmus.msb*
-rw-r--r-- 1 oraccbs1 dba 4608 Aug 11 2010 lrmus.msb
不知道怎么回事,这几个文件竟然被压缩了,使用gunzip来解压一下
/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> gunzip expus.msb.gz
/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll expus.msb
-rw-r--r-- 1 oraccbs1 dba 17408 Sep 4 2010 expus.msb
/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> gunzip ocius.msb.gz
/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> gunzip oraus.msb.gz
/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll ocius.msb
-rw-r--r-- 1 oraccbs1 dba 27136 Sep 4 2010 ocius.msb
/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll oraus.msb
-rw-r--r-- 1 oraccbs1 dba 1092608 Oct 9 2012 oraus.msb
再次尝试。发现就没有问题了。
/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> exp
Export: Release 11.2.0.2.0 - Production on Thu May 8 10:40:19 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Username:
后续的问题就是继续来测试,查看有没有其他潜在的问题了。