用exp导出数据时出现如下报错信息:
1)查询数据库的字符集
select userenv('language') from dual;
2)方案一:
设置Linux操作系统的NLS_LANG环境变量
[oracle@node1]$ $export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
或是修改oracle用户下环境变量.bash_profile文件
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
TMP=/tmp;export TMP
TMPDIR=$TMP;export TMPDIR
ORACLE_BASE=/opt/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1;export ORACLE_HOME
ORACLE_SID=report;export ORACLE_SID
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LANG=en_US.utf8; export LANG
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK; export NLS_LANG
Window系统的环境变量的修改方法是:
C:\>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
方案二:
统计信息字段statistics设置为none。
exp user/pwd@db file=/home/a.dmp log=/home/a.log statistics=none
不再报错。但这种方式相当于未导出那些因字符集不一致错误的统计信息,导入自然也不会有这部分统计信息,如果需要,那么只能再重新收集统计信息。
因此针对这种exp报EXP-00091的错误,可以有上述两种方式workaround,但推荐的肯定还是方案1,导出的信息最全面。