这几天认真的在看oracle concept. 真让人头疼啊。

先说说了解的大概的体系结构

oracle服务器是由oracle数据库和oracle实例组成。

oracle实例是由内存结构和进程。

oracle数据库是由物理结构和逻辑结构。

我觉得一步步了解oracle体系结构,就像是组装一台计算机一样。cpu,主板,内存条,硬盘等一件件把它们合成一体,然后就能运行使用。出什么样的问题你就知道去找那个地方。现在我要做的就是这个工作。

内存结构:包括SGA(此区域由所有的服务进程(server process)和后台进程(background process)共享。),PGA(此区域是每个服务进程和后台进程所私有的;即每个进程都有一个 属于自己的 PGA。)以及软件代码区。

SGA是一组包含了 Oracle 数据库数据及实例控制信息的共享的内存结构。它的子组件包括数据缓存区(database buffer cache) , 重做日志缓冲区(redo log buffer),共享池(shared pool), Java 池(Java pool) ,大型池(large pool)(可选的), 数据流池(streams pool) , 数据字典缓存区(data dictionary cache),,其他杂项信息。

PGA是供服务进程(server process)存储数据及控制信息的内存区域。

软件代码区(software code area)是用于存储可运行的或正在运行的程序代码的内存空间。

进程:用户进程,oracle进程(后台进程和服务进程)

A.服务进程用来来处理连接到实例的用户进程(user process)提交的请求。

完成的工作:

解析、运行应用程序提交的SQL语句

如果数据在SGA中不存在,则将所需的数据块从磁盘上的数据文件读入SGA的数据缓存区(shared database buffer)

以应用程序能理解的形式返回SQL语句的执行结果

B.后台进程(可通过是V$BGPROCESS视图查询后台进程详细信息)

实例中可能运行的后台进程:

:将数据缓冲区的内容写入数据文件。DBWn进程总是将最近最少使用的脏缓冲区写入磁盘。

初始化参数DB_WRITER_PROCESSES用于设定系统中DBWn进程的数量。此参数的最大值为20。

当满足以下条件时,DBWn进程会将脏缓冲区写入磁盘:

如果服务进程(erver process)扫描了一定数量的缓冲区后仍不能找到可用缓冲区,她将通知DBWn进程进行写入。DBWn在执行其他操作的同时,能够异步地将脏缓冲区写入磁盘。

DBWn进程周期性地将脏缓冲区写入磁盘,从而使检查点(checkpoint)前移。检查点是进行实例恢复(instance recovery)时应用重做日志的起始点的位置。此位置是由数据缓冲区内时间最早的脏缓冲区决定的。

:负责对重做日志进行管理——将重做日志缓冲区(redo log buffer)内的数据写入磁盘上的重做日志文件中。

:当一个检查点(checkpoint)事件发生时,更新所有数据文件的文件头来记录检查点事件的详细信息。

:实例启动时如有需要,将负责进行恢复(recovery)工作。此外,SMON还负责清除系统中不再使用的临时段(temporary segment),以及为数据字典管理的表空间(dictionary managed tablespace)合并相邻的可用数据扩展(extent)。

:当一个用户进程(user process)失败后,负责对其进行恢复。PMON进程将清除相关的数据缓存区(database buffer cache)并释放被此用户进程使用的资源。

PMON进程会周期性地对调度器(dispatcher)和服务进程(server process)进行检查,重新启动停止运行的进程(不包括Oracle有意停止的进程)。PMON进程还负责将实例和调度器进程的信息注册到网络监听器(network listener)。

是在分布式数据库环境(distributed database configuration)中自动地解决分布式事务(distributed transaction)错误的后台进程。

:进行批处理(batch processing)。这种进程用于运行用户的作业(job)。

初始化参数JOB_QUEUE_PROCESSES表示实例中可以并行执行的最大作业队列进程数。但是并不是所有的作业队列进程都可以用于执行用户的作业。

:在发生日志切换(log switch)时将重做日志文件复制到指定的存储设备中。只有当数据库运行在ARCHIVELOG模式下,且自动归档功能被开启时,系统才会启动ARCn进程。

:是供Oracle工作流高级队列(Oracle Streams Advanced Queuing)使用的可选的进程,用于监控消息队列。队列监控进程和作业队列进程(job queue process)与其他Oracle后台进程的区别在于,这两类进程出错不会导致整个实例出错。

MMON进程负责执行多种和可管理性相关(manageability-related)的后台任务

当某个测量值(metrics)超过了预设的限定值(threshold value)后提交警告

创建新的MMON隶属进程(MMON slave process)来进行快照(snapshot)

捕获最近修改过的SQL对象的统计信息

MMNL进程负责执行轻量级的且频率较高的和可管理性相关的后台任务,例如捕获会话历史信息,测量值计算等。

MMAN进程负责执行数据库系统的内部任务。

数据库

A.逻辑结构

1.数据库,表空间,数据文件的关系和区别?

一个Oracle数据库是由一个或多个被称为表空间(tablespace)的逻辑存储单位构成的,这些表空间共同用于存储数据库的数据

Oracle数据库的每个表空间由一个或多个被称为数据文件(datafile)的物理文件构成,这些文件由Oracle所在的操作系统管理。

数据库的数据实际存储在构成各个表空间的数据文件中。例如,一个最简单的Oracle数据库至少包含一个表空间及一个数据文件。再例如,一个数据库可能含有三个表空间,每个表空间由两个数据文件构成(即总共有六个数据文件)。

一个数据文件只能由一个数据库的一个表空间使用。

2.表空间的容量等于各个数据文件容量之和。数据库的容量等于各个表空间容量之和。

3.数据库是有表空间的逻辑单位存储【表空间--&gt

段--&gt数据扩展--&gt数据块】

4.表空间内容:A.大文件表空间B.system表空间C.SYSAUX表空间D.撤销表空间E.临时表空间

5.表空间的空间管理:本地管理空间和数据字典管理空间

数据块,数据扩展,段

数据块头:包含了此数据块的概要信息,例如块地址(block address)及此数据块所属的段(segment)的类型(例如,表或索引)。

表目录区:如果一个数据表在此数据块中储存了数据行,那么数据表的信息将被记录在

数据块的表目录区(table directory)中

行目录区:包含数据块中存储的数据行的信息  (每个数据行片断(row piece)在行数据区(row data area)中的地址)。

行数据区:数据块(data block)中行数据区(row data)包含了表或索引的实际数据。一个数据行可以跨多个数据块。

可用空间区:

A.数据块可用空间的有效性与优化

增加数据块中的可用空间:delete,update(更小的容量)

B.行链接和行迁移

C.空间的管理:参数PCTFREE和PCTUSED

数据扩展(EXTEND)

是由一组连续的数据块(data block)构成的数据库逻辑存储分配单位

初始数据扩展,增量数据扩展

簇和簇表簇其实就是一组表,是一组共享相同数据块的多个表组成。将经常一起使用的表组合在一起成簇可以提高处理效率。在一个簇中的表就叫做簇表。建立顺序是:簇→簇表→数据→簇索引

段(Segment)

数据段

索引段

临时段

B.物理结构

控制文件(controlfile)

多重控制文件。相同的控制文件在不同的磁盘,避免介质损坏。用来恢复。

数据文件(datafile)

重做日志文件

归档日志文件

初始化参数文件

查看文件位置和名称的视图:V$controlfile;V$datafile;V$logfile.

oracle历史库架构,oracle体系结构相关推荐

  1. oracle 测试库搭建,Oracle Study之--通过RMAN克隆测试库

    Oracle Study之--通过RMAN克隆测试库 通过使用数据库备份,DBA可以在同一服务器或其它服务器上建立副本数据库.这个副本数据库可以和主数据库有相同的名称(拷贝)或与主数据库名称不同(克隆 ...

  2. centos oracle创建库,CentOS Oracle安装必要的软件创建数据库

    CentOS Oracle安装系统的特性,既可作为高校计算机专业CentOS Oracle安装学习,也可以作为CentOS系统开源爱好者.CentOS系统用户 CentOS Oracle安装系统的特性 ...

  3. Linux下oracle全库导出,Oracle数据库导出导入

    需求为将Oracle数据库A中的数据导出为*.dmp文件,然后将*.dmp文件导入到数据库B. 1.导出数据库A 在cmd窗口输入以下命令: 导出全部数据库 exp 用户名/密码@数据库名 file= ...

  4. oracle 迁库 教程,Oracle整库文件迁移步骤详解教程

    oracle双机发生切换,客户端也连接不上,原因未知,从主机上看是虚拟内存不够,整机都是在跑oracle,看情形应该从oracle上找原因. 远程连接过去之后,从alter.log发现由于磁盘空间不足 ...

  5. oracle全库快照,Oracle数据库快照的使用

    正在看的ORACLE教程是:Oracle数据库快照的使用.oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果.正因为快照是一个主表的查询子集,使用快照可以 ...

  6. oracle导出库压缩参数,oracle数据库的定时备份:导出 压缩 归类

    目标: 定时导出:利用计划任务 自动压缩:使用命令行的rar 自动按月存储:利用cmd 代码: Cmd代码 @echo一定要进入指定路径,否则运行不正常 @setbk_path=G:/Database ...

  7. sqldbx连不上oracle,SqlDbx连接oracle(无需安装Oracle客户端)

    下载地址:https://download.csdn.net/download/xzplinke/10428957 解压SqlDbx.zip,将SqlDbx放到C:盘根目录(C:\SqlDbx 路径是 ...

  8. Oracle Cloud Infrastructure:Oracle Cloud Marketplace提供了一个扩展的Oracle和第三方机器映像库

    Oracle Cloud Marketplace Partners Oracle Cloud Marketplace offers an expansive library of Oracle and ...

  9. Oracle 客户端库时引发 BadImageFormatException

    为什么80%的码农都做不了架构师?>>>    具体错误信息: 尝试加载 Oracle 客户端库时引发 BadImageFormatException.如果在安装 32 位 Orac ...

最新文章

  1. QTableWidget表头样式
  2. [团队公告]第二次技术交流主题征集
  3. 如何挖掘消费者的隐性需求?
  4. MyBatis 问题(持续更新)
  5. vsftpd FTP Server ‘ls.c‘ 远程拒绝服务漏洞(CVE-2011-0762)漏洞修复方案
  6. xp/win 7 系统搭建 Java环境
  7. python安装xlrd和xlwt及应用
  8. Kafka-consumer(消费者)
  9. python使用缩进来体现-Python使用缩进来体现代码之间的逻辑关系。
  10. Python实现桌面程序:PyQt5 + QtDesigner -- 界面设计与逻辑编写
  11. Mac下phpstorm 浏览器出现 502 bad gateway 解决办法
  12. 介绍篇 决策引擎环节
  13. 64位系统的Detours
  14. Arduino基础项目十四:红外对管模块
  15. “汉语编程”是解决安全问题的终极之路?
  16. 如何把图片缩小到30k?怎么压缩图片体积大小?
  17. html 占据剩余空间,html – 如何使左浮动div占用剩余空间的100%?
  18. 用python爬取全国315个城市肯德基老爷爷的店面信息,看看又是什么神奇的发现
  19. [转] 一篇好文 ---steve jobs (stay hungry, stay foolish)
  20. Unity 语音通话功能

热门文章

  1. 流式数据采集和计算(十七):SparkSQL与即席查询
  2. matlab 信号噪声星座图,QPSK误码率和星座图MATLAB仿真
  3. Java swing(GUI) mysql实现的桌面通讯录备忘录管理系统源码
  4. ☆ C/C++ 十进制转二进制
  5. 在华为、美的、海尔、TCL等企业的成长轨迹背后,都有一个共同的秘密
  6. 防水运动耳机排行榜、防水防汗的运动耳机介绍
  7. 夏日专属:我在西瓜里装了个口袋妖怪!
  8. 当代程序员一定要知道的《网络安全法》
  9. 01.微信小程序开发之环境搭建
  10. 「题解」LeetCode 顺时针打印矩阵