Failed RMAN Catalog Upgrade from 11.2.0.2 to 12.1.0.2 ( ORA-02296 RMAN-06004 )
Failed RMAN Catalog Upgrade from 11.2.0.2 to 12.1.0.2 ( ORA-02296 RMAN-06004 )
由于后期使用12c的数据库,需要对现有catalog库升级。 结果悲剧了。
RMAN> upgrade catalog;
error creating modify_bcf_pdb_key_not_null
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-06004: ORACLE error from recovery catalog database: ORA-02296: cannot enable (DM02CAT.) - null values found
这个问题是由于升级12.1.0.2 catalog 库导致的。
通过trace文件可以看到升级catalog报错的sql语句:
RMAN trace shows :
DBGSQL: RCVCAT> alter table bcf modify(pdb_key NOT NULL) -- 失败的SQL语句。
DBGSQL:
DBGSQL: sqlcode = 2296
DBGSQL: error: ORA-02296: cannot enable (&OWNER.) - null values found (krmkosqlerr)
DBGSQL: (krmkosqlerr)
DBGSQL: EXITED krmkosqlerr
RMAN-06444: error creating modify_bcf_pdb_key_not_null
DBGMISC: krmksqlerror called from file krmk4.c, line 4046
通过查询catalog库用户 dm02cat发现 bcf表的PDB_KEY列存在空值,所以无法修改其为not null.
SQL> conn dm02cat/dm02cat
Connected.
SQL> select count(*) from bcf where PDB_KEY is null;
COUNT(*)
----------
7
SQL> select count(*) from bcf ;
COUNT(*)
----------
375350
Workround:
连到catalog库的用户 清除mismatched记录
delete bdf where not exists (select 1 from dbinc where dbinc.dbinc_key = bdf.dbinc_key);
delete bcf where not exists (select 1 from dbinc where dbinc.dbinc_key = bcf.dbinc_key);
commit;
潜在的风险:
There seems to be a potential inconsistency in the RMAN catalog when the PDB/CDB mechanisms get introduced.
This does not necessarily happen - but it can happen.
将来如果使用这个升级了的catalog库 备份12c的 PDB/CDB,可能导致RMAN catalog数据字典数据不一致。
不过好在我们近期不太会使用PDB/CDB. 所以应用了workround解决了这个问题。
Reference:
https://blogs.oracle.com/UPGRADE/entry/rman_catalog_upgrade_fails_ora
Bug 20861957 - ORA-2296 during RMAN upgrade catalog to 12c (Doc ID 20861957.8)
Bug 19677999 : CATALOG SCHEMA UPGRADE TO 12.1.0.2 FAILED
Failed RMAN Catalog Upgrade from 11.2.0.2 to 12.1.0.2 ( ORA-02296 RMAN-06004 )的更多相关文章
- 图形化升级单机oracle 11.2.0.4 到 12.2.0.1
1. 讲补丁包上传到 Oracle server ,解压.安装 [oracle@11g tmp]$ unzip linuxx64_12201_database.zip 2. 检查当前版本 SQL> ...
- SpringBoot第十一集:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂)
SpringBoot第十一集:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂) 一,整合Swagger3.0 随着Spring Boot.Spring Cloud等微服务的 ...
- ORACLE 12.1.0.1 至12.1.0.2升级文档(单机版 DBUA方式)
12C DBUA新特性 1. 新的pre-upgrade 检查工具. 2. 并行升级. 3. DBUA升级时,默认并行度为CPU个数或2. 并行度可调整. 4. 在升级过程中,DBUA工具可再次调用( ...
- linux-3.0内核移植到fl2440开发板(以MINI2440为模板)
我们的fl2440开发板使用的是s3c2440的芯片,与MINI2440十分相似,因此需要改动的地方不多,移植也比较容易. 1.[weishusheng@localhost kernel]$ sudo ...
- 自己从0开始学习Unity的笔记 I (C#字符串转换为数字)
我基本上从0开始学习编程,运算符基本上跳过,因为知道了 “=”这个符号相当于赋值,然后“==”才是等于,其他和普通运算符号差不都,也就跳过了. 最基础的赋值那种,我看了下代码,似乎没什么难度,估计新手 ...
- 自己从0开始学习Unity的笔记 VII (C#中类继承练习)
好久都没有写了.今天做了类继承的练习,做了一个小队,进行简单的判定. namespace 兵团建立练习 { class ServantBasics { public string name; //pr ...
- 自己从0开始学习Unity的笔记 V (C#的数组练习)
今天练习了数组输入,先从最简单的开始,因为我输入完这些之后,觉得应该有更简单的方法,先来介绍一下我做的练习代码 //做一个最多能容纳10个数字的,用户可以输入任意1-10个数字,判断长度,输出数字 ] ...
- linux-3.0内核移植到fl2440开发板(以s3c2410为模板)
1.新建kernel文件夹,用于存放内核文件 [weishusheng@localhost ~]$ mkdir kernel 2.进入kernel,上传压并解压压缩文件 [weishusheng@lo ...
- 【剑指offer】面试题68(补充) 0到n-1中缺失的数字(二分法的进一步应用)
题目 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0到n-1之内. 在范围0到n-1的n个数字中有且只有一个数字不在该数组中,请找出这个数字. 输出 输入:[0,1,2, ...
随机推荐
- mysql 存储过程 执行存储过程修改了表中所有行的信息
存储过程中的where条件语句,如果传入的参数和表字段名相同,存储过程就会把这个约束条件忽略.小结:存储过程中传递的参数名不要和字段名相同.特别是修改.删除等操作,可能会对整张表产生影响.后果会很严重 ...
- Slog27_支配vue框架初阶项目之博客网站-样式居中
ArthurSlog SLog-27 Year·1 Guangzhou·China July 30th 2018 GitHub 掘金主页 简书主页 segmentfault 没有写够足够的代码量,想成 ...
- java算法--稀疏数组
数据结构必要知识 线性结构 线性结构是最常用的数据结构,数据元素之间存在一对一的线性关系. 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构.顺序存储的线性表称为顺序表,顺序表中的存储元素是 ...
- rest framework serializer
串行器 扩大串行的用处是什么,我们想地址.然而,这不是一个简单的问题,它会采取一些严重的设计工作. -罗素基思-马吉,Django的用户组 串行器允许诸如查询集和模型实例复杂的数据转换为原生的Pyth ...
- 一文详解Hexo+Github小白建站
作者:玩世不恭的Coder时间:2020-03-08说明:本文为原创文章,未经允许不可转载,转载前请联系作者 一文详解Hexo+Github小白建站 前言 GitHub是一个面向开源及私有软件项目的托 ...
- mysql 学习日记 悲观和乐观锁
理解 悲观锁就是什么事情都是需要小心翼翼,生怕弄错了出大问题, 一般情况下 "增删改" 都是有事务在进行操作的,但是 "查" 是不需要事务操作的, 但是凡事没 ...
- Simulink仿真入门到精通(十七) Simulink代码生成技术详解
17.1 基于模型的设计 基于模型设计是一种流程,较之传统软件开发流程而言,使开发者能够更快捷.更高效地进行开发.适用范围包括汽车电子信号处理.控制系统.通信行业和半导体行业. V字模型开发流程整体描 ...
- Redis集群搭建及选举原理
redis集群简述 哨兵模式中如果主从中master宕机了,是通过哨兵来选举出新的master,在这个选举切换主从的过程,整个redis服务是不可用的.而且哨兵模式中只有一个主节点对外提供服务,因此没 ...
- Java 并发原子操作类(转)
转自:https://www.jianshu.com/p/3632a0f9f083 线程不安全的高并发实现 客户端模拟执行 5000 个任务,线程数量是 200,每个线程执行一次,就将 count 计 ...
- 一些http知识
一些http知识 前置知识 首先放一张非常经典的计算机网络 关于五层结构 「物理层」「数据链路层」「网络层」「运输层」「应用层」我们依次来讲 我们拿wireshark 抓个http包看一下就能明白各层 ...