rman-03009错误的一个原因

备份文件可以自定义各种各样的格式,如下
%c 备份片的拷贝数
%d 数据库名称
%D 位于该月中的第几天 (DD)
%M 位于该年中的第几月 (MM)
%F 一个基于DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,
其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD 为日期,QQ 是一个1-256 的序

%n 数据库名称,向右填补到最大八个字符
%u 一个八个字符的名称代表备份集与创建时间
%p 该备份集中的备份片号,从1 开始到创建的文件数
%U 一个唯一的文件名,代表%u_%p_%c
%s 备份集的号
%t 备份集时间戳
%T 年月日格式(YYYYMMDD)


1 现象

     执行 rman target sys/tt@tt nocatalog
     >backup database format='e:\backup\%d_%s.bak'
报错:
     RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 09/08/2008 14:48:58 上) 失败
      ORA-19504: 无法创建文件"E:\BACKUP\XJLI_71.BAK"
     ORA-27038: 所创建的文件已存在
      OSD-04010: 指定了 选项, 但文件已经存在
2 分析及解决
      1 查了一下e:\backup\目录的权限所属用户中system,administrators是完全控制,其他用户没有权限写入,所以怀疑是不是权限的问题,把该文件的所有所属用户和组都给予完全控制权限.
       在重新执行backup database format='e:\backup\%d_%s.bak' 报同样的错
      2 执行 backup database ; 
        OK成功完成,看了一下这回备份文件放的目录的权限,发现这个文件夹的权限和e:\backup\的权限是一样的,
        所以排除权限的问题.
     3 因为第一回 backup database format='e:\backup\%d_%s.bak' 执行失败
            第二会 backup database  执行成功.
       这两者只是 format 不一样.
     4 改了一下格式
          backup database format='e:\backup\%d_%s_%p.bak' 
       OK 执行成功.
       就多加了 %p 就可以了. 分析了以下原因如下
我在配置rman的时候设置了这两个参数
         CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 500 M;
                指定备份片500M
        CONFIGURE MAXSETSIZE TO 1 G;
                指定备份集1G 
   那么这样就会导致,一个备份集有两个备份片,那么 在一个备份集有多个备份片的情况下,format 必须有%p 用来区分备份片
     
    第一次执行  backup database format='e:\backup\%d_%s.bak'  报错
      因为 这个语句生成的结果是 是文件XJLI_71.BAK"  xjli 是数据库名, 71是备份集序编号
      因为我的数据库总共800M 而我设置了备份集大小1G,包含两个备份片每个500M
     那么实际会生成两个备份片 一个500M另一个300M  因为我没有加 %P 用来区分备份片
      所以他执行的过程是这样的
      当生成第一个备份片时是没有问题的 生成文件 xjli_71.bak
     当生成第二个备份片时因为他还是同一个备份集的第二个备份片所以 他还要生成 xjli_71 ,
     所以会报错说是已经存在该文件.

总结一个下问题的原因是不理解配置的意思就配,所以出了问题也不好找.


你可能感兴趣的:(oracle)