以下是完整的执行过程,有三个表空间可以增量备份成功的,到整个数据库时就有问题了,请大虾解惑Oracle8i Enterprise Edition Release 8.1.7.4.1 - Production With the Partitioning option JServer Release 8.1.7.4.1 - Production 
Oracle 数据库归档模式:ARCHIVELOG 
SUNSERVER 分析结束,总文件个数: 1,总数据量大小: 未知大小,开始备份操作 
 
Recovery Manager: Release 8.1.7.4.1 - Production  
 
RMAN> connect target internal/oracle@orcl;  
2>  
3> run {  
4> allocate channel d1 type 'SBT_TAPE';  
5> backup incremental level 1 format 'ORDB_%d_%s_%p_%t' database tag '2009_7_2_16_58_51';  
6> release channel d1;  
7> }  
8>  
9> run {  
10> allocate channel d1 type 'SBT_TAPE';  
11> backup current controlfile format 'CTRL_%d_%s_%p_%t' tag '2009_7_2_16_58_51';  
12> release channel d1;  
13> }  
14>  
RMAN-06005: connected to target database: ORCL (DBID=1142766535)  
RMAN-06009: using target database controlfile instead of recovery catalog  
 
RMAN-03022: compiling command: allocate  
RMAN-03023: executing command: allocate  
RMAN-08030: allocated channel: d1  
RMAN-08500: channel d1: sid=16 devtype=SBT_TAPE  
RMAN-08526: channel d1: WARNING: Oracle Test Disk API  
 
RMAN-03022: compiling command: backup  
RMAN-00571: ===========================================================  
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============  
RMAN-00571: ===========================================================  
RMAN-03002: failure during compilation of command  
RMAN-03013: command type: backup  
RMAN-06003: ORACLE error from target database: ORA-06550: line 1, column 120:  
PLS-00306: wrong number or types of arguments in call to 'GETINCREMENTALSCN'  
ORA-06550: line 1, column 120:  
PL/SQL: Statement ignored  
RMAN-06097: text of failing SQL statement: declare first boolean := FALSE ; rcvRec dbms_rcvman . rcvRec_t ; begin if ( :first > 0 ) THEN first := TRUE ; end if ; dbms_rcvman . getIncrementalScn ( first => first , file# => to_number ( NULL ) , create_scn => to_number ( NULL ) , reset_scn => to_number ( NULL ) , reset_time => to_date ( NULL ) , incr_level => :incr_lvl , cumulative => :cumulat , rcvRec => rcvRec ) ; :fno := rcvRec . dfNumber_obj ; :ckpscn := rcvRec . toSCN_act ; :crescn := rcvRec . dfCreationSCN_obj ; :rlgscn := rcvRec . rlgSCN_act ; :r  
RMAN-06099: error occurred in source file: krmk.pc, line: 5500  
 
Recovery Manager complete.  
警告:数据库备份时读写器为空,操作已取消。 
警告:客户端 SUNSERVER 备份出错 
警告:执行项 备份 oracle 数据 执行失败 

解决方案 »

  1.   

    补充下 现在整个数据库中的表空间都可以备份,我试验过,每4个-5个表空间可以一起进行增量备份,但是再多的话就不行了,不知道是不是8i的bug
      

  2.   

    用的爱数的,基于rman的备份,我在rman上单独执行备份脚本也不行,如下。
    RMAN>run {
    2> allocate channel c1 type 'sbt_tape';
    3> backup incremental level 1 database;
    4> }RMAN-03022:正在编译命令:allocate
    RMAN-03023:正在执行命令:allocate
    ^C
    C:\Documents and Settings\Administrator>rman nocatalog恢复管理器:版本8.1.7.4.1 - ProductionRMAN>connect target system/manager@orclRMAN-06005:连接到目标数据库:ORCL (DBID=1142766535)
    RMAN-06009:正在使用目标数据库控制文件替代恢复目录RMAN>run {
    2> allocate channel c1 type disk;
    3> backup incremental level 1 database format 'D:/bak_incr.bak';
    4> release channel c1;
    5> }RMAN-03022:正在编译命令:allocate
    RMAN-03023:正在执行命令:allocate
    RMAN-08030:分配的通道:c1
    RMAN-08500:通道 c1:sid=12 devtype=DISKRMAN-03022:正在编译命令:backup
    RMAN-03026:在释放通道资源时出现错误恢复
    RMAN-08031:释放的通道:c1
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: failure during compilation of command
    RMAN-03013: command type: backup
    RMAN-06003: ORACLE error from target database: ORA-06550: ? 1 ?, ? 120 ?:
    PLS-00306: ?? 'GETINCREMENTALSCN' ??????????
    ORA-06550: ? 1 ?, ? 120 ?:
    PL/SQL: Statement ignored
    RMAN-06097: text of failing SQL statement: declare first boolean := FALSE ; rcvR
    ec dbms_rcvman . rcvRec_t ; begin if ( :first > 0 ) THEN first := TRUE ; end if
    ; dbms_rcvman . getIncrementalScn ( first => first , file# => to_number ( NULL )
     , create_scn => to_number ( NULL ) , reset_scn => to_number ( NULL ) , reset_ti
    me => to_date ( NULL ) , incr_level => :incr_lvl , cumulative => :cumulat , rcvR
    ec => rcvRec ) ; :fno := rcvRec . dfNumber_obj ; :ckpscn := rcvRec . toSCN_act ;
     :crescn := rcvRec . dfCreationSCN_obj ; :rlgscn := rcvRec . rlgSCN_act ; :r
    RMAN-06099: error occurred in source file: krmk.pc, line: 5500
      

  3.   

    你在它本地上用rman 备份下吧,感觉你是在远端备份的
    RMAN>connect target system/manager@orcl 你看下本地备份有问题吗?先把备份到磁带去掉,直接先备份到磁盘看看
      

  4.   

    对8i的东西不是很熟悉了。你用的是本地的RMAN,看你里面的错误提示
    RACLE error from target database: ORA-06550: ? 1 ?, ? 120 ?: 
    PLS-00306: ?? 'GETINCREMENTALSCN' ?????????? 
    ORA-06550: ? 1 ?, ? 120 ?: 
    这里是增量scn的相关东西。估计和你的RMAN没有使用catalog的方式有关,所以信息都是在controlfile里。 所以有可能是backup的时候,有一些业务影响导致这个scn的问题。你试着在系统不繁忙的时候做做,或者是用catalog server来做rman catalog的方式
      

  5.   

    谢谢楼上几位大大,特别是inthirties ,按你的提示,我试了下,用catalog的方式是可以进行整个数据库的增量备份的,可能是控制文件的问题,数据库上控制文件已经34.7M了,有无可能达到最大大小了?
      

  6.   

    CONTROL_FILE_RECORD_KEEP_TIME LZ设置的是多少啊?
    可以调小点的.
      

  7.   

    字符集问题
    如果使用了rman catalog,尽量两个数据库的字符集一样。 
    如果没有用,编辑nls_lang环境变量试试看
    nls_language="american"_america.US7ASCII