在windows服务端使用语句"expdp owss_aa/owss_aa**@10.92.3.16/orcl file=星期%date:~11,3%.dmp log=星期%date:~11,3%.log directory=dp_allcard query=\"where table_name not in ('SYS_LOG')\" parallel=16"导出oracle数据文件并排除sys_log表时报错:ORA-31693: 表数据对象 "CZRS_CARD"."AZ03" 无法加载/卸载并且被跳过, 错误如下: ORA-00904: "TABLE_NAME": 标识符无效,请分析原因,并给出解决办法
时间: 2023-12-07 11:02:55 浏览: 139
根据报错信息可以看出,错误是因为无效的标识符"TABLE_NAME"导致的。建议检查语句中的双引号是否正确使用,如果是在Windows平台上运行该命令,需要使用双引号来括起来整个query参数,如下所示:
expdp owss_aa/owss_aa**@10.92.3.16/orcl file=星期%date:~11,3%.dmp log=星期%date:~11,3%.log directory=dp_allcard query=\""where table_name not in ('SYS_LOG')\"" parallel=16
另外,还需要检查一下该表是否存在以及是否有权限进行导出。如果问题仍然存在,可以尝试使用其他的导出方式,比如使用Oracle的Data Pump Export工具导出数据。
相关问题
为什么第一句:"EXPDP czrs_card/czrs_card**@10.92.2.36/orcl exclude=TABLES:"in('SYS_LOG')" file=F:\czrs_card\星期%date:~11,3%.dmp owner=czrs_card log=F:\czrs_card\星期%date:~11,3%.log"不报错误,而第二句话,"EXP czrs_card/czrs_card**@10.92.2.36/orcl file=F:\czrs_ca rd\星期%date:~11,3%.dmp owner=czrs_card log=F:\czrs_card\星期%date:~11,3%.log ta bles=!(SYS_LOG)"报EXP-00026: 指定了冲突模式 EXP-00000: 导出终止失败
在第一句话中,使用了exclude选项,该选项可以用来指定需要排除的表,因此不会与tables选项产生冲突。而第二句话中,同时指定了tables选项和取反操作符(!)以及exclude掉的表(SYS_LOG),导致选项冲突,因此导出终止失败并报错。因此,在使用EXP命令时,需要注意选项的使用,避免产生冲突。
检查这条语句是否正确,以及引号的使用,这条语句将在windows下运行:expdp owa_aa/owa_aa**@10.92.4.23/orcl dumpfile=星期%date%:~11,3%.dmp logfile=星期%date%:~11,3%.log directory=F:\testkg exclude=TABLE:\"IN \'SYS_LOG\'\" parallel=16
这条语句的引号使用不正确。应该将整个 `exclude` 参数放入双引号中,而将其中的单引号用双引号代替。正确的语句如下所示:
```
expdp owa_aa/owa_aa**@10.92.4.23/orcl dumpfile=星期%date%:~11,3%.dmp logfile=星期%date%:~11,3%.log directory=F:\testkg exclude="TABLE:\"IN \"SYS_LOG\"\"" parallel=16
```
注意到这里需要使用转义字符 `\` 来转义双引号。
阅读全文