Oracle 12c数据字典的小问题(r11笔记第49天)
如果你要说这个CDB,PDB的区别和联系,那我就直接上一张图。
这个图我们以往看到的体系结构图不大一样,可以理解是在Oracle的地基上做了较大的改动,就好比一个家大业大的豪门,现在要把资产分开管理,也就是多个PDB,里面CDB还是核心的容器,但是不负责具体的数据,只是统筹管理。
以往我们说数据字典分为两类,数据字典表和动态性能视图,数据字典表按照层级可以分为DBA_XXX,ALL_XXX,USER_XXX这三个层级,在12c里面这个地方又有了变化,那就是有了更高级的CDB_XXX这个层级的数据字典表。
好了,基础的部分就先说到这里,问题来了,我们现在的环境融合了多套测试环境,也就是含有多个PDB,这个时候知道Scheduler Job出现问题,我们怎么进一步定位呢,一个很自然的思路就是查看CDB_XXX的数据字典表。
我们来看看具体的表现,环境是12.1.0.2。
可以查看cdb_scheduler_job_run_details来得到详细的信息。
SQL> select status,count(*) from cdb_SCHEDULER_JOB_RUN_DETAILS where log_date>sysdate-1 group by status;
STATUS COUNT(*)
------------------------------ ----------
SUCCEEDED 2984
FAILED 4
我们继续查看,怎么这么奇怪。
SQL> select *from cdb_SCHEDULER_JOB_RUN_DETAILS where status='FAILED';
ERROR:
ORA-00942: table or view does not exist
我们继续换个姿势来看看。
SQL> select count(*)from cdb_SCHEDULER_JOB_RUN_DETAILS where log_date>sysdate-1 and status='FAILED';
COUNT(*)
----------
4
这样就没问题了,我们更进一步看看。
SQL> select *from cdb_SCHEDULER_JOB_RUN_DETAILS where status='FAILED';
ERROR:
ORA-00942: table or view does not exist
由此来看,CDB_XXX的数据字典还是存在着一些小问题。怎么进一步去细分呢。我们可以借助于容器ID,CON_ID,然后结合DBA_SCHEDULER_JOB_RUN_DETAILS。
如果想把这个问题刨一刨,其实也能发现一些信息,本身在CDB的数据字典上还是存在着一些小问题,我想这些数据字典可能使用的不是特别频繁,可能这个问题被遗漏了,所以在一个成熟的架构上做改动,那是迫不得已,而在改动上面希望做到无缝切换,那更是难上加难。我想12.2应该会修复了吧。
12.2已经做出了太多的改变,很多不可以的事情都实现了。不过相对来说,这个cloud推出的是比较吃力,让一大批死忠粉等待的时间有些太长了。战略上的布局要掷地有声,而市场上的成功更要需要花费不少的时间,错一步,步步错,所以我可以感觉Oracle也在很谨慎的在生态中布局。
- HLS Lesson15-for循环优化:其他方法
- 对自己的上网搜索记录进行爬虫是怎样一种体验
- HLS Lesson13-for循环优化:合并
- HLS Lesson12-for循环优化:基本性能指标
- HLS Lesson11-c/c++ testbench书写续2
- 【机器学习】实例详解机器学习如何解决问题
- 企业网站架构之Nginx+tomcat+memcached集群
- 企业级Docker Registry开源工具Harbor的介绍以及使用指南
- HLS Lesson8-基本操作
- Windows渗透测试工具:RedSnarf
- HLS Lesson7-复合数据类型
- matlab GUI基础3
- 【Python环境】《Python数据科学入门》试译 第一章 简介
- HLS Lesson20-实例分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在 vscode 中 debugger 调试
- MongoDB 的安装
- 一次opencanary自定义实践
- 从0到1编写一个Xposed Module :Anti Screenshot
- Linux pwn入门学习到放弃
- 一款针对网站的网络侦察和信息收集工具
- Numpy核心语法和代码整理汇总!
- 发现内网存活主机的各种姿势
- SharedPreferences VS MMKV
- RabbitMQ 最常用的 3 大模式!
- 啥?HashMap 1.8 还有死循环?你逗我呢!
- 他写的东西,你们喜欢么?
- 告诉你一个 AtomicInteger 的惊天大秘密!
- 001--算法之"高手过招"[分治算法专题]
- 快速入门使用tikz绘制深度学习网络图