今天一位同事出差,遇到了自己编辑的一个exp导出数据库数据的脚本的错误,脚本原内容如下:
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db;export ORACLE_HOME
ORACLE_SID=*****;export ORACLE_SID
rq=`date +"%y%m%d"`
expPath=/u01/app/oracle/backup
$ORACLE_HOME/bin/exp *****/***** file=$expPath/wlkp_com_$rq.dmp log=$expPath/wlkp_com_$rq.log
说明:这里使用*****掩饰了实例名和用户名密码
在执行时报错内容如下:(在redhat linux环境下)': not a valid identifier: export: `
': not a valid identifier: export: `ORACLE_SID
LRM-00112: mutiple values not allowed for parameter 'log'
EXP-00019: failed to process parameters, type 'EXP HELP=Y' for help
EXP-00000: Export terminated unsuccessfully
但是该脚本在本地的测试环境中测试没有问题。
解决:
由于报了无效字符错误,怀疑脚本内容有不能识别的字符,建议重新编辑脚本内容,还是报错,删除文件新建并重新输入也报错,非常奇怪(也不知道是不是同事自己编辑的有问题),后来搜索LRM-00112错误,一边指导他远程进行测试,将脚本内容修改为如下可以执行:
/u01/app/oracle/product/11.2.0 /bin/exp ****/**** file=/home/oracle/backup/wlkp_com_`date +"%y%m%d"`.dmp log=/home/oracle/backup/wlkp_com_`date +"%y%m%d"`.log
由于后来还是感觉同事编辑的文件有问题(有无效的字符),在自己的测试环境中REDHATLINUX,重新编辑了一个脚本,内容如下:
#!/bin/bash
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db
export ORACLE_SID=wlkp
export rq=`date +"%y%m%d"`
$ORACLE_HOME/bin/exp ***/*** file=/home/oracle/backup/wlkp_com_$rq.dmp log=/home/oracle/backup/wlkp_com_$rq.log
把该脚本下载到本地后传给同事后,让其使用ftp的bin模式上传到服务器上测试执行,发现执行成功,
唉,果然是原来编辑的脚本有看不到的无效字符导致之前出现的问题。