天天看點

生産系統中EXP-00000的問題及解決

早上剛來的時候,客戶的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

先趕緊查一下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*

/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll ocius.msb*

/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll oraus.msb*

/opt/app/oracle/dbccbspr1/product/11.2.0/oracore/mesg> ll 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

/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

/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> ll oraus.msb

再次嘗試。發現就沒有問題了。

/opt/app/oracle/dbccbspr1/product/11.2.0/rdbms/mesg> exp

後續的問題就是繼續來測試,檢視有沒有其他潛在的問題了。