关于“EXP-00056: ORACLE error 12154 encountered”的解决方法:
有用户问到这样一个问题,在进行导出操作时如何转义口令中的@符号?
由于缺省的Oracle会将@符号后面的字串当作服务名来解析,所以不加处理是不行的。
有的企业因为安全规则的需要,口令中都会加入@符号。
假定用户口令如下:
SQL> alter user eygle identified by "
eygle@com";
User altered.
如果缺省导出会出现如下错误:
[
oracle@jumper oracle]$ exp eygle/
eygle@com file=eygle.dmp tables=test
Export: Release 9.2.0.4.0 - Production on Fri Jan 4 11:17:48 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
EXP-00056: ORACLE error 12154 encountered
ORA-12154: TNS:could not resolve service name
EXP-00000: Export terminated unsuccessfully
通过转义,可以成功导出:
[
oracle@jumper oracle]$ exp eygle/\"
eygle@com\" file=eygle.dmp tables=test
Export: Release 9.2.0.4.0 - Production on Fri Jan 4 11:12:10 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
. . exporting table TEST 4136 rows exported
-The End
从数据库导出数据的语句为:
exp osoadata/888888@fxc file=e:\osoa.dmp owner=osoadata
处理之后为:
exp osoadata/\"
888888@fxc\" file=e:\osoa.dmp owner=osoadata
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
exp 用户名/密码@数据库名 file=D:\dmp\exp_sms20110224.dmp log=D:\dmp\exp_smsrun.log
exp osoadata/
888888@fxc file=e:\osoa.dmp owner=osoadata
exp osoadata/\"
888888@fxc\" file=e:\osoa.dmp owner=osoadata
exp osoadata/sdjzkhdb!@
@orcl file=/srv/bak_ceshi/osoadata.dmp owner=osoadata log=/srv/bak_ceshi/exp_osoadata.log
exp certCMSUser/
sdjzkhdb!@@orcl file=/srv/bak_ceshi/certCMSUser.dmp owner=certCMSUser log=/srv/bak_ceshi/exp_certCMSUser.log
当前用户目录下的.bash_profile文件中增加export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"保存后,source .bash_profile生效,导出正常
imp certCMSUser/
certCMSUser@
orcl file=/srv/certCMSUser.dmp fromuser=certCMSUser touser=certCMSUser log=/srv/imp_cert.log
imp osoadata/
888888@orcl
file=/srv/osoadata.dmp fromuser=osoadata touser=osoadata log=/srv/imp_osoa.log