关于从linux服务器上的oracle数据库里导出数据

关于“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

猜你喜欢

转载自blog.csdn.net/u014653854/article/details/78986739