【面试虐菜】—— Oracle知识整理《DBA的思想天空》

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

Inventory Oracle安装工具OUI用来管理Oracle安装目录的

Oracle的参数文件,启动后按照下面的顺序读取参数文件,如果读取失败,启动数据库 失败:

1 $ORACLE_HOME/dbs/SPFILE.ORA

2 $ORACLE_HOME/dbs/spfile.ora

3 $ORACLE_HOME/dbs/init.ora

数据库的nomount阶段

1 读取参数文件

2 分配共享内存

3 启动进程

Mount阶段

1 读取控制文件

2 进行校验

oracle的控制文件包括:

1 数据库的物理结构

2 数据文件

3 REDO LOG

在线日志文件:解决了数据库实例突然宕机或服务器宕机的系统恢复问题

后台进程:

1 DBWR 数据库写入操作

2 LGWR 日志写入程序

3 CKPT 检查点

4 SMON 系统监控

5 PMON 进程监控

6 ARCH 归档

7 RECO 恢复

8 LCKn 封锁

9 Dnnn 调度进程

10 Snnn 服务器

DB Cache

1 DB Cache 是以bock为单位组织的缓冲区,不同大小的BLOCK对应不同的缓冲区参数

2 DB Cache的命中率越高,访问性能就越好

3 Cache中的数据块通过散列算法实现

4 每个链上的buffers数量,最佳的情况是每个链上只有一个buffer

5 DBWR进程控制脏数据写入

6 在DB Cache,同一个数据块中可能存在多个版本的数据

7 大表的扫描,热块冲突都可能导致闩锁的争用

引入tch计数器,避免LRU链上频繁移动

LRU链上搜索达到最大深、LRU-W上没有足够的clean buffers都会触发标记位,使得DBWR进程讲脏数据写入磁盘

几个重要的数据链:

1 LRU list普通的LRU链

2 LRU-AUX list 被确认的clean的链,包括DBWR已经写回文件的 数据块和干净快

3 LRU-XO list 重用对象链

4 LRU-XR list CKPT搜索这些BUFFER,将脏数据写入该链,再由DBWR写入磁盘

闩锁争用:

1 热块冲突

2 数据库在某个时间段出现大量的数据块扫描、热链

使用keep pool存放大表,可以降低物理读,改善cache命中率

使用owi观点和时间模型分析,帮助分析数据库性能

DB cache命中率低,意味着更多的物理IO、更多的闩锁使用、较低的效率。RAC中,更多的实例间通信消息

DB cache调优,注意 free buffere waits \ writes complete waits两个性能指标

SGA包括:

1 数据结构部分 fixed size

2 数据块缓冲区 database buffers

3 redo log缓冲区 redo buffers

4 共享池 variable size

永久使用的共享内存:进程信息数据、会话信息数据、特殊用途的内存段

随着共享池碎片化加剧:产生ORA-4031错误

1 加大初始的分配值

2 每次扩展一个组

共享池内部结构:

1 PERMANENT

2 FREEABLE

3 RECERATEABLE

4 FREEABLE WITH MARK

通过内部视图 X$KSMSP监控共享池碎片的情况

较大的共享池会带来一定的系统开销

共享池闩锁竞争也会增加

定期刷新共享池会有助于保持共享池性能的稳定

共享池相关闩锁的平均等待时间、超时的次数---判断共享池碎片化程度

游标:一个父游标,多个子游标

用户的不同,通过一个SQL得到的结果就不同,因此不能共享;执行计划不同,也不可以共享

硬解析:执行SQL时,SQL已经不再共享池中,会产生硬解析。首先分配共享池空间,创建父游标,创建子游标

软软解析:父游标存在,子游标也存在

软解析:父游标存在,子游标不可共享

游标共享技术ACS

游标不会马上关闭,会先放在游标缓存中,等待回话完成后,在关闭

OPEN_CURSORS会话打开的游标数量

SESSION_CACHED_CURSORS回话缓冲,主要功能:将会话中的常用的SQL放入UGA中的会话缓冲区中,以便下次调用

CURSOR_SPACE_FOR_TIME 当父游标被打开的时候,所有子游标及其相关联的对象全部被锁住,从而确保游标相关的信息都是一致的


本文转自博客园xingoo的博客,原文链接:【面试虐菜】—— Oracle知识整理《DBA的思想天空》,如需转载请自行联系原博主。

相关文章
|
7月前
|
SQL 存储 Oracle
Oracle 面试题及答案整理,最新面试题
Oracle 面试题及答案整理,最新面试题
234 0
|
1月前
|
SQL 移动开发 Oracle
[Oracle]面试官:你说说rownum、currval与nextval分别是什么,还有没有其他的?
本文主要介绍了 Oracle 数据库中的 `rownum` 虚拟字段和 `nextval`、`currval` 伪列。`rownum` 用于生成结果集的序号,常用于 `top-n` 查询。`nextval` 和 `currval` 基于序列,分别表示序列的下一个值和当前值,常用于主键的自动填充。文中提供了详细的示例和注意事项,帮助读者更好地理解和使用这些功能。
56 1
[Oracle]面试官:你说说rownum、currval与nextval分别是什么,还有没有其他的?
|
1月前
|
SQL Oracle 关系型数据库
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
本文介绍了多种SQL内置函数,包括单行函数、非空判断函数、日期函数和正则表达式相关函数。每种函数都有详细的参数说明和使用示例,帮助读者更好地理解和应用这些函数。文章强调了字符串操作、数值处理、日期计算和正则表达式的使用方法,并提供了丰富的示例代码。作者建议读者通过自测来巩固学习成果。
26 1
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
|
1月前
|
存储 SQL Oracle
[Oracle]面试官:你简单说说常用的4种约束
本文介绍了数据库表中的几种常见约束,包括主键、唯一键、外键、检查和非空约束。详细说明了每种约束的创建、删除及启用/禁用方法,特别强调了外键约束的级联操作和检查约束的正则表达式应用。建议多练习手写SQL命令以加深理解。
40 2
|
7月前
|
Oracle 关系型数据库 数据库
Oracle 部署及基础使用,字节跳动资深面试官亲述
Oracle 部署及基础使用,字节跳动资深面试官亲述
|
人工智能 运维 Oracle
ChatGPT能代替Oracle DBA吗?用Oracle OCP(1z0-083)的真题测试一下(文末投票)
ChatGPT已经通过了很多考试,姚远老师是Oracle OCP和MySQL OCP讲师,我很好奇ChatGPT能不能通过Oracle OCP的考试呢?让我们拿Oracle 19c OCP考试(1z0-082)的真题对ChatGPT进行一个测试。
183 0
|
人工智能 运维 Oracle
ChatGPT能代替Oracle DBA吗?用Oracle OCP(1z0-083)的真题测试一下。
第1道题ChatGPT就做错了,姚远老师心里不禁窃喜,看来ChatGPT也不咋地,我们也许不会失业,让我们来看看第一道题的题目
170 0
|
SQL 开发框架 Oracle
Oracle数据库面试题总结
1、SQL语句分类 DQL(数据查询语言)select DML(数据操作语言)insert、delete、update DDL(数据定义语言)create、drop、alter DCL(数据控制语言)grant:把权限授予用户、revoke:把权限从用户收回 TPL(TCL,事务控制语言):commit、rollback
212 0
|
4月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
1月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!

推荐镜像

更多