首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用expdp与`flashback_time=systimestamp`的错误

使用expdp与`flashback_time=systimestamp`的错误
EN

Database Administration用户
提问于 2019-09-05 08:44:46
回答 2查看 4.7K关注 0票数 0

Oracle 11.2.0.1.0在Windows 2012 Std上:

代码语言:javascript
复制
expdp '/ as sysdba' full=y directory=exp dumpfile=... logfile=... flashback_time=systimestamp

在以下方面失败:

代码语言:javascript
复制
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,但它们似乎都不起作用。

我的问题是:

  1. 这是已知的窃听器吗?
  2. 是否有任何设置可能导致类似于系统区域设置的此行为?
  3. 我正在使用一个稍微修改过的脚本版本,我发誓就在昨天,它运行得很好。我不记得改变了什么,今天不管用了。有什么想法吗?
  4. 有可靠的解决办法吗?我正在考虑使用flashback_scn,但这需要事先进行单独的查询。

编辑:

对这里的怪事加倍努力。每天:

  • 00:00-11:59 -上述错误
  • 12:00-23:59 -一切正常

昨天晚上,我使用flashback_time=systimestamp反复运行了脚本-没有错误。今天早上7点45分,再次从同一个脚本中获得错误,无需修改。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2019-09-12 18:10:40

谜团解开了。我有机会问过一位为我们做咨询工作的Oracle DBA。结果发现,Oracle在本地化时间戳中处理空格的方式很可能是一个错误。一个简单的解决方法是在运行set NLS_LANG=american_america.ee8iso8859p2之前使用expdp

票数 0
EN

Database Administration用户

发布于 2019-09-05 10:02:44

刚看了一下文档

上面写着:

可以以DBMS_FLASHBACK.ENABLE_AT_TIME过程接受的任何格式指定时间。

所以SYSTIMESTAMP应该有效..。尽管docs建议您需要将参数括在引号中。尝试:

代码语言:javascript
复制
FLASHBACK_TIME="SYSTIMESTAMP"
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/247029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档