Oracle个人归纳

一些简单的归纳,个人当做笔记记录下

作为oracle开发,需要了解到oracle的体系结构,表关联,索引等知识,这里做个大致的记录

1、oracle物理体系结构

oracle由实例和数据库组成,实例包含了一个公共的内存区域和几个不同功能的进程,数据库则是由数据文件,参数文件,控制文件以及日志文件组成。还有一个个人私有的内存空间,叫做PGA,是开辟给每个人的,主要保存一些连接信息,权限校验信息等等。

1.1、实例

实例包含了共享池,数据缓存区,日志缓存区以及dbwr、lgwr等进程

其中共享池存放了sql的sql_id信息,如果已经解析过的sql,可以在根据自己唯一的sql_id在共享池找到对应的执行计划,执行速度更高效快速。

数据缓存区则是之前执行过的sql,把数据从数据库的数据文件拉到了数据缓存区,方便多次查看。

日志缓存区:缓存了最近数据库执行的一些sql,如果遇到commit,会提交到redo文件里保存起来这些操作记录。

1.2、进程

主要是记录下比较常用的进程,有个概念即可。

dbwr:用户把数据缓冲区的数据写入到数据库的数据文件中,一般是批量写入,写入的时间由ckpt控制。

lgwr:oracle的数据不是实时写入数据文件的,为了防止断电等原因导致数据丢失,所以由lgwr进程把数据人员的操作sql记录写入数据库的redo文件中。一般来说一次commit,lgwr写入日志文件一次,一段时间写入一次,满三分之一的日志缓冲区写入一次。

ckpt:主要为了控制dbwr写入,操作人员可以限定数据库重启的恢复时间。如果需要短时间内恢复,则dbwr写入频率高。可以接受恢复时间长,dbwr写入频率低。

pmon:用于控制会话进行ddl操作断链的数据回滚

arch:用于把日志文件进行归档,把日志文件存储到其他的存储介质,以便数据出问题时的数据恢复。

1.3、数据库

数据库存放了四类文件,参数文件、控制文件、数据文件以及日志文件

参数文件:记录了内存分配规则,以及需要启动的进程,也就是说oracle可以通过参数文件来生成实例

控制文件:通过参数文件找到控制文件,控制文件中有数据文件以及日志文件的信息,也就是说控制文件相当于实例和数据库的桥梁

数据文件:数据真实存放在磁盘的地方,没有数据文件,则数据库的安全性无法保障

日志文件:记录了数据库的操作记录,用于保障数据库出问题时可以完全恢复

2、oracle逻辑体系

2.1、block

块,是oracle最小的逻辑单位

2.2、区

用户可操作的最小存储区间

2.3、段

一个普通表,一个索引都属于一个段。而分区表示一个分区一个段

2.4、表空间

oracle有系统表空间,临时表空间,用户表空间以及回滚表空间

系统表空间:存放一些系统参数的表空间

临时表空间:当sql需要进行排序,而PGA大小不够的时候,就会用上临时表空间进行相应的排序动作

用户表空间:这是比较多的表空间,用于存放用户规划的数据

回滚表空间:当用户需要进行ddl操作时,会在回滚表空间存放表的前镜像数据,以便用户可以进行rollback操作。

3、索引

3.1、B树索引

索引是oracle优化的神器。而B树索引则是我们日常使用的常客。

一般来说,我们在oracle建立的索引都是B树索引,通过记录数据的唯一标识row_id来找到对应的数据。

B树索引的内容是row_id加改索引列,且该索引列是有序的。

备注:

1、对索引列进行计算不走索引

2、B数索引为空不走

3.2、位图索引

介绍另一种索引,位图索引

位图索引的内容其实是01编码,常用于对重复度高且更新不频繁的列建索引。

如性别。

比如有几个人,有男有女,对于男男女

可能该索引对应的内容就是110

备注:

位图索引常用于多个and或者or查询,效率较高

4、表关联

表关联有三种连接方式

4.1、嵌套循环

4.2、hash连接

4.3、合并排序

5、随便说说

5.1、一致读

oracle一致读逻辑是看SCN,可以理解为最近修改时间。

比如读取一个数据,由于性能问题,八点开始读,九点才结束。但是八点半,中间有数据改变了。

这时oracle会去读取八点半数据的前镜像数据,也是就undo空间的数据。

而判断的依据就是SCN,这时一个只会增大的数据。比如八点开始读数据,这时的获取的SCN是当前最大。所以一直读下去,知道八点半,这时的SCN比八点的SCN大了,所以oracle会看八点半的数据有没有提交,如果提交了,读取undo里的数据。如果没有提交,还是读取undo的数据。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值