oracle导库lrm00112,LRM-00112: 参数 'logfile' 不允许有多个值

在Windows系统中,使用BAT脚本备份Oracle数据库时遇到LRM-00112错误。问题出在%time%变量在00点时导致的格式问题。解决方案包括使用%time:~1,1%%time:~3,2%%time:~6,2%或仅使用日期作为文件名。完整备份脚本包括创建目录、导出数据库、压缩备份文件和删除15天前的旧备份。" 126892939,10138986,Python无监督学习与数据预处理,"['机器学习', 'Python', '数据预处理', '聚类算法']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在widows系统上写个bat脚本定时备份oracel数据库的,但一执行bat脚本就会报“LRM-00112: 参数 'logfile' 不允许有多个值”,网上资源都是说创建逻辑目录可能有空格,我就重新修改了逻辑目录还是不是行的,以为下面的语句的问题:我都是习惯生产的名字为back_20190419.log这样形式的没有双引号,这个语句在我在其它服务器执行一点都没有问题的

expdp %bakdbname%/%bakdbpasswd%@%sid% directory=BACKDIR dumpfile=%dumpbame%_%BACKUPDATE%.dmp logfile=%dumpbame%_%BACKUPDATE%.log

加上双引号就可以执行了也确实不报错了

expdp %bakdbname%/%bakdbpasswd%@%sid% directory=BACKDIR dumpfile="%dumpbame%_%BACKUPDATE%.dmp" logfile="%dumpbame%_%BACKUPDATE%.log"

但是还是没有解决这个报错的问题,最后发现是bat批处理的时间机制问题的:用%time:~0,2%%time:~3,2%%time:~6,2%时有个问题, 就是如果TIME 是00点的时候,电脑显示的是0不是00所以%time:~0,2%就报错了。

例子:2019-4-22时间9:46:01

echo BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2%

BACKUPDATE=20190422 94601(9前面是空格)

echo BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%%time:~1,1%%Time:~3,2%%Time:~6,2%

BACKUPDATE=2019042294637

总结:

1)如果要用%time:~0,2%%time:~3,2%%time:~6,2%  (运行脚本的时间一定是在10-23点区间,否则0-9(H)脚本调用函数错误,无法运行)

2)如果要用%time:~1,1%%time:~3,2%%time:~6,2%  (建议运行脚本的时间在0-9点这个区间,如果是>9点,比如13点。会造成只显示个

位数字3,比如2019-1-20 时间13:26:20 会显示2019012032620 从而影响时间的整体准确性)

3)或者是直接舍去时间,只用日期来定义文件名。

%date:~0,4%%date:~5,2%%date:~8,2%

比如2019-2-22 那么文件名会显示为20190222.(如果需求是每天做一个备份,那么这样命名是没什么影响的,

完整bat备份脚本:back.bat脚本在每天0晨执行的

@echo off

echo ================================================

echo  Windows环境下Oracle数据库的自动备份脚本

echo  1. 使用当前日期命名备份文件。

echo  2. 自动删除15天前的备份。

echo  3.使用expdb命令导出需要先在数据库中创建备份文件存贮目录,sql如下:

echo    create directory backdir as 'E:\nx12320_nxchart\data';

echo ================================================

::以“YYYYMMDD”格式取出当前时间。

set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%%time:~1,1%%Time:~3,2%%Time:~6,2%

::设置用户名、密码和sid。

set bakdbname=nx12320

set bakdbpasswd=123456

set sid=orcl

set dumpbame=NX12320

set bakdbhome=E:\nx12320_nxchart\data

::创建备份目录。

if not exist "E:\nx12320_nxchart\data"       mkdir E:\nx12320_nxchart\data

::expdp备份

expdp %bakdbname%/%bakdbpasswd%@%sid% directory=BACKDIR dumpfile="%dumpbame%_%BACKUPDATE%.dmp" logfile="%dumpbame%_%BACKUPDATE%.log"

::切换目录

e:

cd %bakdbhome%

::调用rar进行压缩

"C:\Program Files\WinRAR\WinRAR.exe" a -m5 -dw %dumpbame%_%BACKUPDATE%".zip" "%dumpbame%_%BACKUPDATE%.log" "%dumpbame%_%BACKUPDATE%.DMP"

::删除10天前的备份。

forfiles /p "%bakdbhome%" /s /m *.zip /d -15 /c "cmd /c del @path"

exit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值