Oracle必知基础总结

Oracle数据库的两种连接方式:专用服务器连接   和  共享服务器连接

一、Oracle数据库组成:

oracle server  是由:实例和数据库组成;

oracle数据库由:数据文件   重做日志文件  临时文件  控制文件   参数文件 密码文件等组成 (其中最重要的就是数据文件和重做日志文件)

oracle实例是由:系统全局区SGA的共享内存块以及大量后台进程构成。

SGA包括:数据库缓冲区缓存、日志缓冲区、共享池、还有(大池、Java池、流池)

后台进程:DBWR(数据库写进程);LGWR(日志写进程);CKPT(检查点);SMON(系统监控进程);PMON(进程监控);ARCH(归档进程);RECO恢复;LCKN封锁;等

PGA:用户会话还需要服务器端的内存,此内存不共享,也称为程序全局区PGA,每个会话都有自己的PGA。

-----从Oracle12C起,全局临时表所产生的undo可以存放在临时表空间中。

《控制文件》

控制文件是一个相当小的文件(极端情况下能增长到64MB),它储存了数据库需要的一些文件的位置,还记录了一些其他信息,如:检查点的有关信息,数据库名、数据库创建是时间戳、归档重做日志的历史以及RMAN信息等。

《重做日志》

重做日志分为在线重做日志redo和归档重做日志。

online Redo log files--在线重做日志,又称联机重做日志,指Oracle以SQL脚本的形式实时记录数据库的数据更新,换句话说,实时保存已执行的SQL脚本到在线日志文件中(按特定的格式)。

注意:在线重做日志最重要的目标就是在实例失败后我们能够恢复已经提交的事务;

Archive Redo log files--归档重做日志,简称归档日志,指当条件满足时,Oracle将在线重做日志以文件形式保存到硬盘(持久化)。

SGA和PGA

PGA是用户进程区,也可以这么理解,如果并发500 那么就需要分配500M的PGA

PGA是进程专用的内存区

《重做缓冲区》

---实际上,LGWR进程会在以下任何一种情况发生时把缓冲区数据刷新输出到磁盘:

1、每3秒一次

2、发生提交或回滚请求时

3、要求LGWR切换日志文件时

4、重做缓冲区用满三分之一,或者缓存重做日志数据达到1MB时;

数据需要写到在线重做日志时,在它们被写到磁盘之前,需要在重做缓冲区中临时缓存这些数据;

重做日志缓冲区的默认大小是由log_buffer参数控制;

《块缓冲区缓存block buffer cache》

Oracle将数据库块写到磁盘之前,或从磁盘上读取数据库块之后,就会把这些数据库块存储在块缓冲区缓存中;

块缓冲区缓存不能太小,要不然 我们的查询就会永远也执行不完。也不能太大,因为又会抢占其他进程的资源;

数据库中只有一种块大小:2KB  4KB  8KB  16KB  32KB中的一种;如果要修改数据库块,在安装数据库的时候 在init.ora文件中指定:db_block_size=16384  即可,16384是16K

《共享池shared pool》

共享池就是Oracle缓存一些程序数据的地方,在解析一个查询时,解析得到的结果就缓存在那里。在完成解析整个查询的任务之前,Oracle会搜索共享池,看看这个工作是否完成;

共享池的特点是有大量小的内存块,一般为4KB或更小。我们的目标是使用小块的内存来避免碎片问题,如果大小各不同 很可能出现碎片问题。

《大池large pool》

大池是用于被大块内存的分配,而共享池无法处理这么大的内存块。

《JAVA池》

JAVA池目的是支持在数据库中运行JAVA,如果用JAVA编写一个存储过程,Oracle会在处理代码时使用Java池的内存。

《流池》

流池被用来缓冲队列消息,而且流池对于:goldengate  streams等很重要,这些场景必须要有流池;

---SGA自动管理时,statistics_level参数必须被设置为typical或者all,因为如果统计信息收集功能没有启用,数据库就没有相关的历史记录来判断各个组件所需的内存大小。

二、Oracle数据库进程

一个Oracle实例主要有3类进程:服务器进程  后台进程  从属进程

---通过v$bgprocess视图可以查看数据库所有可能的后台进程

select paddr,name,description from v$bgprocess order by paddr desc;

通过查询v$process中pname不为空的记录,来查看系统中正在运行的后台进程;

注意:后台进程也分为两类:一类是有特定任务的进程,另一种是能够执行各种其他任务的进程(如工具进程)

---在12C中查看启动的后台进程:

select paddr,name,description from v$bgprocess where paddr <>‘00‘ order by paddr desc;

(在12C中将启动大约22个后台进程,而在11GR2中 只有17个后台进程)

1、PMON进程监视器

进程监视器(process monitor)负责在连接出现异常终止后进行清理工作。(例如:一个专用服务器失败或者出于某种原因被结束掉,就要由PMON进程负责善后并释放资源。PMON会回滚未提交的工作,释放锁,并释放之前为失败进程分配的SGA资源)

注意:在Oracle12C之前,PMON还负责处理注册监听的任务,从Oracle12C开始 改由专门的监听注册后台进程来注册实例和服务到监听器

2、LREG监听注册进程

从Oracle12C开始,LREG进程负责将数据库实例和服务注册到监听器中;

3、SMON系统监视器

SMON进程用来做所有系统级的任务。SMON所做的工作包括如下几种:

①:清理临时表空间:(并不是说完全不需要手动清理的)

②:合并空闲表空间:(只有在使用数据字典的表空间适用)

③:针对原来不可用的文件恢复活动的事务:

④:执行RAC中失败节点的实例恢复:

⑤:清理OBJ$:(OBJ$是一个底层的数据字典,数据库中几乎每个对象(表 索引 触发器 视图等)都在其中对应一个条目,很多时候,有些条目表示的可能是已经删除的对象,或者表示not there不在哪里的对象)

⑥:管理撤销段:SMON会负责实施撤销段的自动上下线以及收缩撤销段;

⑦:回滚段离线:

4、RECO分布式数据库恢复

reco有一个非常核心的任务:由于两阶段提交(2pc)期间的崩溃或链接丢失等原因,有些事务可能会保持在准备状态,这个进程就是要恢复这些事务;

5、CKPT检查点进程

实施检查点主要是DBWn进程的工作,CKPT仅仅是协助实际运行检查点的进程,来更新数据文件的文件头;

6、DBWn数据库块写入器

数据库块写入器是负责将脏块写入磁盘的后台进程;

DBWn的性能至关重要,如果它写出块的速度不够快,不能很快的释放缓冲区,就会看到free buffer waits和write complete waits这两个等待事件的数量和等待事件在增加;其实我们可以配置多个DBWn进程,实际上在Oracle11G可以配置36个,在Oracle12C则多达100个;

select name,description from v$bgprocess where description like ‘db writer process%‘;   ----来查看数据库有几个DBWn进程

7、LGWR日志写入器:

LGWR进程负责将SGA中重做日志缓冲区的内容刷新输出到磁盘;

8、ARCn归档进程

该进程的任务是:当LGWR将一个在线重做日志文件填满时,就将其复制到另一个位置,此后这些归档的重做日志文件就可以用于完成介质恢复;

9、DIAG诊断进程

该进程在以前的版本中专用语RAC环境中,从Oracle11G开始 利用ADR(高级诊断库),它会负责监视实列的整体状况,而且会捕获处理实列失败时的所需信息;

10、FBDA闪回数据归档进程

11、DBRM数据库资源管理器进程

DBRM进程会去实施那些为一个数据库实例配置的资源计划;

12.还有一些其他进程:

LMON 锁监视器

LMD  锁管理器守护

LMSn 锁管理器服务器

LCK0 锁进程

时间: 2024-11-06 07:49:26

Oracle必知基础总结的相关文章

程序员必知的10大基础实用算法

    算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2) 次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的 架构上很有效率地被实现出来. 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤: 1 从数列中挑出一个元

数据库学习之一: 在 Oracle sql developer上运行SQL必知必会脚本

1 首先在开始菜单中打开sql developer: 2. 创建数据库连接 点击左上角的加号 在弹出的对话框中填写用户名和密码 测试如果成功则点击连接,记得角色要写SYSDBA 3. 运行脚本 之后把SQL必知必会的脚本拷到工作表中并点击运行脚本 首先进行表的创建 输入代码: --------------------------------------------- -- Sams Teach Yourself SQL in 10 Minutes -- http://www.forta.com/

SSL证书必知必会:数字证书及CA基础知识

SSL证书必知必会:数字证书及CA基础知识 数字证书 数字证书是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字***,而是身份认证机构盖在数字***上的一个章或印(或者说加在数字***上的一个签名).它是由权威机构--CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份.最简单的证书包含一个公开密钥.名称以及证书授权中心的数字签名.数字证书的一个重要的特征就是只在特

.NET零基础入门09:SQL必知必会

一:前言 仿佛到了更进一步的时候了,每一个程序员迟早都会遇到数据存储的问题.我们拿什么来存储程序产生的数据?举例来说,用什么来存储我们的打老鼠游戏每次的成绩呢?选择如下: 1:内存中.缺点,退出游戏,数据就没了: 2:文件中.好办法!缺点,自己解析文本,把文本变成我们程序中的数据,这个解析的过程叫做协议.协议这个词听上去够恐怖吧,实际上说白了无非就是数据格式怎么样,API接口怎么样之类的东东. 3:数据库.好办法!好吧,数据库文件其实也就是硬盘上的文件,只不过数据库本身就已经为我们定义好了数据格

迈向高阶:优秀Android程序员必知必会的网络基础

1.前言 网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用的工具类,到后来Google开源的比较完善丰富的Volley,再到如今比较流行的Okhttp.Retrofit. 要想理解他们之间存在的异同(或者具体点说,要想更深入地掌握Android开发中的网络通信技术),必须对网络基础知识.Android网络框架的基本原理等做到心中有数.信手拈来,关键时刻才能

第4节:Java基础 - 必知必会(中)

第4节:Java基础 - 必知必会(中) 本小节是Java基础篇章的第二小节,主要讲述抽象类与接口的区别,注解以及反射等知识点. 一.抽象类和接口有什么区别 抽象类和接口的主要区别可以总结如下: 抽象类中可以没有抽象方法,JDK8版本开始提供了接口总方法的default实现 抽象类和类一样是单继承的:接口可以实现多个父类 抽象类中可以存在普通的成员变量:接口中的变量必须是static final类型的,必须被初始化,接口中只能有常量,没有变量 解析: 在Java中,我们用abstract来定义抽

第5节:Java基础 - 必知必会(下)

第5节:Java基础 - 必知必会(下) 本小节是Java基础篇章的第三小节,主要讲述Java中的Exception与Error,JIT编译器以及值传递与引用传递的知识点. 一.Java中的Exception和Error有什么区别 Exception和Error的主要区别可以概括如下: Exception是程序正常运行中预料到可能出现的错误,并且应该被捕获并进行相应处理,是一种异常现象. Error是正常情况下不可能发生的错误,Error会导致JVM处于已追踪不可恢复的状态,不需要捕获处理,比如

基础入门_Python-模块和包.深入Celery之常用架构/方案选型/必知必会?

简单介绍: 说明: 此模块是一个专注于分布式消息传递的异步任务队列,所谓任务就是消息,消息中的有效载荷中包含要执行的任务需要的全部数据 几大特性: 1. Celery易于使用和维护,且不需要配置文件,默认配置启动时自动写入消息代理. 2. Celery高可用,连接丢失或失败时客户端或消费者会自动重试,并且可通过消息代理的双主/主从模式来提高高可用性 3. Celery快速,单个进程每分钟可处理百万任务,且优化后可保持往返延迟在亚毫秒级别 4. Celery灵活,几乎所有部分都支持扩展或单独使用,

《SQL必知必会(第4版)》中英文PDF及代码+《SQL进阶教程》中文PDF及代码 (学习总结)

下载:https://pan.baidu.com/s/1hRb-TS_R-0fnXPodS5OoDg <SQL必知必会(第4版)>高清中文PDF+高清英文PDF+代码 下载:https://pan.baidu.com/s/11-MnDu0khzwO4tiJqHznnA <SQL进阶教程>高清中文PDF+源代码 <SQL必知必会(第4版)>高清中文PDF+高清英文PDF+代码 高清中文PDF,258页,带书签目录,文字可以复制粘贴:高清英文PDF,497页,带书签目录,文