ITPub博客

首页 > 数据库 > Oracle > RMAN备份出现ORA-01801: date format is too long for internal buffer错误

RMAN备份出现ORA-01801: date format is too long for internal buffer错误

原创 Oracle 作者:zhang41082 时间:2019-05-02 16:21:04 0 删除 编辑

ORACLE 10.2.0.2平台上的基于物理DATAGUARD的备份失败,查看当时的日志记录,发现如下错误:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03015: error occurred in stored script rman_level1_sc
RMAN-03002: failure of allocate command at 05/06/2008 02:00:20
RMAN-03014: implicit resync of recovery catalog failed
RMAN-03009: failure of partial resync command on default channel at 05/06/2008 02:00:20
ORA-01801: date format is too long for internal buffer
其中的rman_level1_sc是通过CATALOG执行增量备份的存储脚本的名称

[@more@]

从错误提示看,肯定是和日期格式相关的,而且肯定是执行RESYNC CATALOG的时候出现的问题,于是手工登陆进去,执行RESYNC CATALOG命令来同步CATALOG,出现同样的错误,,看来问题就出现在这里了。GOOGLE了半天,发现有人(http://dba.ipbhost.com/lofiversion/index.php/t6085.html)通过设置NLS_LANG=AMERICAN_AMERICA.AR8MSWIN1256成功解决了这个故障,尝试设置环境变量来改变日期的格式,失败。

METALINK上有人提到这个问题,不过最后的结果是它的归档日志中出现了04/31/2007这样的格式,要知道4月是根本没有31号的,所以在同步catalog的时候这个日期不能够插入到CATALOG库中,所以导致的错误,这种情况有可能在主库日志传输到DATAGUARD的时候导致日期出现错误。可是我这里发生问题的却是08年的5月6号,而且归档日志的日期也全部正确,看来此路不通了。链接如下:
https://metalink.oracle.com/metalink/plsql/f?p=130:15:2452983712436646559::::p15_database_id,p15_docid,p15_show_header,p15_show_help,p15_black_frame,p15_font:BUG,6054542,1,1,1,helvetica

最后还是回到了日期格式上,有文章中提到了是因为控制文件中的日期格式和实际同步CATALOG的时候的格式不一致导致的(那个文章也没有细说,也找不到那个链接了,抱歉),而且METALINK上分析出来的错误的日期也是从CONTROLFILE中得到的。最后干脆把CONTROLFILE DUMP出来看看吧。

方法如下: 以SYSDBA身份登入SQL*PLUS
SQL> oradebug setmypid
SQL> oradebug dump controlf 3
将把control file dump到USER_DUMP_DEST初始化参数指定的目录下。
其中3为dump level。 level的解释如下:
1 :only the file header
2 :just the file header, the database info record, and checkpoint progress records
3 :all record types, but just the earliest and latest records for circular reuse record types
4 :as above, but includes the 4 most recent records for circular reuse record types
5+ :as above, but the number of circular reuse records included doubles with each level

把CONTROLFILE大致看了一遍,也没有什么异常的日期,但是格式却有点不大一样,因为我们习惯的设置日期为YYYY-MM-DD HH24:MI:SS形式,而且RMAN备份的时候使用的是环境变量中直接通过NLS_DATE_FORMAT来设置的格式,但是RMAN中却记录的都是MM/DD/YY HH24:MI:SS格式的数据,难道问题就出现在这里??

手工设置NLS_DATE_FORMAT格式为CONTROLFILE中的格式,然后手工执行RESYNC CATALOG,居然就OK了,看来还真的是这个日期的格式在作怪,可是为什么以前一致都是设置的NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS就备份了半年多了都没有问题呢?其他人也碰到过一致这样设置没问题,可是后来却出现问题的,一样,没有答案,好在问题解决了。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25016/viewspace-1003500/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2002-10-11

  • 博文量
    105
  • 访问量
    122254