最近用expdp备份数据库过期数据用到include,所以从include用法研究到几个细节问题;
1:expdp include 的主要功能是导部分有特征的数据,比如我这次是要将2012的数据表导出备份后,再将2012的表drop。所以我想到用 include:table=‘like’
因为有引号的存在,需要转义,所以第一个体会就是parfile代替转义,这样省很多麻烦。
2:include:table=‘like’最容易出问题的地方。
expdp system/system@zldev DIRECTORY=dir_dp SCHEMAS=core_data DUMPFILE=core_data.dmp LOGFILE=core_data.log INCLUDE=TABLE:"LIKE '%BASEDATA2012%'";
上面的语句看上去毫无破绽,感觉该有的都有了,语法什么都没什么问题,但你运行的时候就会一直报错;
ORA-39001: invalid argument value
ORA-39071: Value for INCLUDE is badly formed.
ORA-00936: missing expression
我卡在这个地方有那么一两小时,试过一个表,两个表,试过视图,等等。
后来我发现就是一个空格的问题。就是在LIKE和条件之间,这个地方不能有空格,有空格就会报上述错误。
正确的是:
expdp system/system@zldev DIRECTORY=dir_dp SCHEMAS=core_data DUMPFILE=core_data.dmp LOGFILE=core_data.log INCLUDE=TABLE:"LIKE'%BASEDATA2012%'";
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28588485/viewspace-774521/
,如需转载,请注明出处,否则将追究法律责任。