Oracle 11.2.0.1.0在Windows 2012 Std上:
expdp '/ as sysdba' full=y directory=exp dumpfile=... logfile=... flashback_time=systimestamp在以下方面失败:
ORA-39001: invalid argument value
ORA-39150: bad flashback time
ORA-01841: (full) year must be between -4713 and +9999, and not be 0
ORA-01877: string is too long for internal buffer将flashback_time=systimestamp替换为consistent=y,AFAIK是一种向后兼容的方法,可以说同样的事情也会因为同样的错误而失败。完全删除这些选项,没有任何其他更改,使其工作。
不过,除了RMAN之外,我还想要一个一致的备份,是的,我已经配置并工作了。网络上提出了各种各样的解决办法。例如,使用to_timestamp,但它们似乎都不起作用。
我的问题是:
flashback_scn,但这需要事先进行单独的查询。对这里的怪事加倍努力。每天:
昨天晚上,我使用flashback_time=systimestamp反复运行了脚本-没有错误。今天早上7点45分,再次从同一个脚本中获得错误,无需修改。
发布于 2019-09-12 18:10:40
谜团解开了。我有机会问过一位为我们做咨询工作的Oracle DBA。结果发现,Oracle在本地化时间戳中处理空格的方式很可能是一个错误。一个简单的解决方法是在运行set NLS_LANG=american_america.ee8iso8859p2之前使用expdp。
发布于 2019-09-05 10:02:44
刚看了一下文档。
上面写着:
可以以DBMS_FLASHBACK.ENABLE_AT_TIME过程接受的任何格式指定时间。
所以SYSTIMESTAMP应该有效..。尽管docs建议您需要将参数括在引号中。尝试:
FLASHBACK_TIME="SYSTIMESTAMP"https://dba.stackexchange.com/questions/247029
复制相似问题