【Oracle】RMAN-03009 ORA-01400 错误解决方法

简介:
  生产库备份遇到 ORA-01400 错误~ 当rman 不使用 catalog时,RMAN 命令可以正常实施~! 当rman 备份使用catalog数据库时,执行rman 命令总是报错:ORA-01400:cannot insert NULL into ("RMAN_ YANGDB"."RLH"."LOW_TIME")
RMAN> resync catalog;
starting full resync of recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of resync command on default channel at 01/06/2012 10:39:11
ORA-01400: cannot insert NULL into ("RMAN_YANGDB"."RLH"."LOW_TIME")
   报错的原因是因为:不能向恢复目录数据库的表RLH插入空值“the issue caused by unable to insert NULL value in RSR table of the recovery catalog.”(至于为什么会产生 thread# 为0的记录,这个待查!
执行如下查询,查看v$log_history的记录中thread#为0的记录!
select thread#, sequence#, first_change#, next_change#, first_time from v$log_history where thread#=0;
THREAD# SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# FIRST_TIME
------- --------  ------------- ------------ ------------------
0          0           0                0
0          0           0                0
0          0           0                0
0          0           0                0
0          0           0                0
0          0           0                0
0          0           0                0
解决方法!
因为v$log_history 记录中含有空值,v$log_history是有系统自己管理的动态性能视图,所以使用oracle提供的 dbms_backup_restore.resetCfileSection()包来清除控制文件中关于log_history 的记录,让系统重新生成新的日志记录!
1 使用如下命令查询LOG HISTORY在控制文件中的编号为 9 !v$controlfile_record_section 视图记录了控制文件里包含的信息,以及各个项目的当前使用情况
17:31:18 yang(40)@yangdb> select rownum-1 session_id, type from v$controlfile_record_section;
SESSION_ID TYPE
---------- ----------------------------
         0 DATABASE
         1 CKPT PROGRESS
         2 REDO THREAD
         3 REDO LOG
         4 DATAFILE
         5 FILENAME
         6 TABLESPACE
         7 TEMPORARY FILENAME
         8 RMAN CONFIGURATION
         9 LOG HISTORY
        10 OFFLINE RANGE
        11 ARCHIVED LOG
        12 BACKUP SET
        13 BACKUP PIECE
        14 BACKUP DATAFILE
        15 BACKUP REDOLOG
        16 DATAFILE COPY
        17 BACKUP CORRUPTION
        18 COPY CORRUPTION
        19 DELETED OBJECT
        20 PROXY COPY
        21 BACKUP SPFILE
        22 DATABASE INCARNATION
        23 FLASHBACK LOG
        24 RECOVERY DESTINATION
        25 INSTANCE SPACE RESERVATION
        26 REMOVABLE RECOVERY FILES
        27 RMAN STATUS
        28 THREAD INSTANCE NAME MAPPING
        29 MTTR
        30 DATAFILE HISTORY
        31 STANDBY DATABASE MATRIX
        32 GUARANTEED RESTORE POINT
        33 RESTORE POINT
        34 DATABASE BLOCK CORRUPTION
        35 ACM OPERATION
        36 FOREIGN ARCHIVED LOG

37 rows selected.

2. 使用上面查询出来的 "LOG HISTORY" 的session_id ,使用dbms_backup_restore.resetCfileSection(section_id);:
SQL> execute dbms_backup_restore.resetCfileSection(9);

在清理控制文件中 "LOG HISTORY"部分之后后,使用rman 连接catalog 进行同步catalog~
$ rman target sys/password@alias_target catalog rman_user/password@alias_catalog
RMAN> resync catalog;

关于v$CONTROLFILE_RECORD_SECTION 是v_$CONTROLFILE_RECORD_SECTION的同义词。该表中记录了数据库中的各种信息,备份的信息,redo信息,归档信息,数据文件信息~
17:31:19 yang(40)@yangdb> set pages 50000
21:10:19 yang(40)@yangdb> col type for a30
21:10:19 yang(40)@yangdb> col PCT_USED format 990.09
21:10:19 yang(40)@yangdb> -- Controlfile creation parameters:
21:10:19 yang(40)@yangdb> -- Type DATAFILE    is for MAXDATAFILES
21:10:19 yang(40)@yangdb> -- Type REDO LOG    is for MAXLOGFILES
21:10:19 yang(40)@yangdb> -- Type LOG HISTORY is for MAXLOGHISTORY
21:10:19 yang(40)@yangdb> -- Type REDO THREAD is for MAXINSTANCES
21:10:19 yang(40)@yangdb> -- No entry for MAXLOGMEMBERS here, use: select dimlm max_log_members from X$KCCDI; 
21:10:19 yang(40)@yangdb> select type,records_used,records_total,records_used/records_total*100 "PCT_USED" from sys.v_$CONTROLFILE_RECORD_SECTION order by 1;

TYPE                           RECORDS_USED RECORDS_TOTAL PCT_USED
------------------------------ ------------ ------------- --------
ACM OPERATION                             6            64     9.38
ARCHIVED LOG                            179           224    79.91
BACKUP CORRUPTION                         0           371     0.00
BACKUP DATAFILE                         245           245   100.00
BACKUP PIECE                            200           200   100.00
BACKUP REDOLOG                          199           215    92.56
BACKUP SET                              304           409    74.33
BACKUP SPFILE                            46           131    35.11
CKPT PROGRESS                             0            11     0.00
COPY CORRUPTION                           0           409     0.00
DATABASE                                  1             1   100.00
DATABASE BLOCK CORRUPTION                 0          8384     0.00
DATABASE INCARNATION                      2           292     0.68
DATAFILE                                  7           100     7.00
DATAFILE COPY                             3           200     1.50
DATAFILE HISTORY                          0            57     0.00
DELETED OBJECT                          818           818   100.00
FILENAME                                 12          2298     0.52
FLASHBACK LOG                             0          2048     0.00
FOREIGN ARCHIVED LOG                      0          1002     0.00
GUARANTEED RESTORE POINT                  0          2048     0.00
INSTANCE SPACE RESERVATION                1          1055     0.09
LOG HISTORY                             292           292   100.00
MTTR                                      1             8    12.50
OFFLINE RANGE                             0           163     0.00
PROXY COPY                                0           246     0.00
RECOVERY DESTINATION                      1             1   100.00
REDO LOG                                  3            16    18.75
REDO THREAD                               1             8    12.50
REMOVABLE RECOVERY FILES                  6          1000     0.60
RESTORE POINT                             0          2083     0.00
RMAN CONFIGURATION                        2            50     4.00
RMAN STATUS                             451           451   100.00
STANDBY DATABASE MATRIX                  31            31   100.00
TABLESPACE                                7           100     7.00
TEMPORARY FILENAME                        2           100     2.00
THREAD INSTANCE NAME MAPPING              8             8   100.00

37 rows selected.
2 关于dbms_backup_restore.resetCfileSection的作用是将控制文件相关区域中的内容清空:(注意,此操作为测试环境,在无oracle技术支持建议或允许的情况下,请勿在生产环境测试,以下操作是在数据库open状态下执行)
17:04:26 SYS@yangdb> execute dbms_backup_restore.resetCfileSection(9);
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.05
17:04:37 SYS@yangdb> select count(1) from v$log_history;
  COUNT(1)
----------
         0
17:26:55 YANG@yangdb> update bigtab set object_id=id where rownum < 10000;
9999 rows updated.
Elapsed: 00:00:00.44
17:26:57 YANG@yangdb> commit;
Commit complete.
Elapsed: 00:00:00.01
17:27:04 YANG@yangdb> 
17:27:04 YANG@yangdb> conn /as sysdba
Connected.
17:27:10 SYS@yangdb> 
17:27:10 SYS@yangdb> 
17:27:10 SYS@yangdb> select count(1) from v$log_history;
  COUNT(1)
----------
        62
1 row selected.
Elapsed: 00:00:00.03
17:27:15 SYS@yangdb> execute dbms_backup_restore.resetCfileSection(9);
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.05
17:27:21 SYS@yangdb> select count(1) from v$log_history;
  COUNT(1)
----------
         0
1 row selected.
Elapsed: 00:00:00.01
17:27:23 SYS@yangdb> 
相关文章
|
Oracle 关系型数据库
Oracle新建数据表的两种方法
Oracle新建数据表的两种方法
206 1
|
5月前
|
存储 Oracle 关系型数据库
Oracle存储过程插入临时表优化与慢查询解决方法
优化是一个循序渐进的过程,就像雕刻一座雕像,需要不断地打磨和细化。所以,耐心一点,一步步试验这些方法,最终你将看到那个让你的临时表插入操作如同行云流水、快如闪电的美丽时刻。
284 14
|
7月前
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
1501 28
|
8月前
|
SQL 存储 Oracle
【YashanDB知识库】对比Oracle和YashanDB对象不一致的方法
本文来自YashanDB官网,介绍从Oracle迁移到YashanDB后的数据校验方法。通过YMP工具迁移数据后,可使用其内置校验功能,或采用本文提供的复杂对比思路:将Oracle的DBA_*数据字典视图保存为用户表,借助YMP同步至YashanDB,再利用SQL查询两数据库间的差异。具体包括视图、存储过程、索引和约束等对象的对比方法,提供详细SQL示例以供参考和修改。
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
235 7
|
Oracle 安全 关系型数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法探讨
删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法
相信有很多oracle数据库用户都遇到过在操作Oracle数据库时误删除某些重要数据的情况,这个时候如果数据库没有备份且数据十分重要的,怎么才能恢复误删除的数据呢?北亚企安数据恢复工程师下面简单介绍几个误删除Oracle数据库数据的恢复方法。
|
Oracle 关系型数据库 数据库
Oracle数据库协议适配器错误解决方法
Oracle数据库协议适配器错误解决方法
1219 2
|
SQL 存储 Oracle
Oracle数据库中游标的工作原理与优化方法
Oracle数据库中游标的工作原理与优化方法
|
Oracle 关系型数据库 数据库
oracle误删除数据的恢复方法
oracle误删除数据的恢复方法
156 0