前几天设置自动备份oracle 数据库时发现一个问题,自动备份老是执行失败,后来把语句拿出来单独执行才发现是语句写的有问题,一般情况下自动备份都要自动生成日志文件,以便于我们查看备份是否正常执行。下面我举一个小例子说明报错的原因以及解决方法。
expdp test/test@ORCL DIRECTORY=test
DUMPFILE=test%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.dmp
SCHEMAS=test logfile=test%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.log
大家可以看到第三句执行后生成日志文件,执行一段时间会发现一直执行失败,提示报错 logfile不允许有多个值。原因是 logfile=后面的值不允许变量。
解决办法:用英文的单引号将logfile后面的值括起来即可,如下所示:
SCHEMAS=test logfile='test%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.log'