Oracle 数据库的组成(instance+database)





Oracle服务器是一种对象关系数据库管理系统,它为信息管理提供开放、综合、集成的方法。
Oracle服务器中有多种进进程、内存结构和文件;
Oracle服务器由一个Oracle实例和一个Oracle数据库组成。
Oracle服务器:Oracle实例+Oracle数据库
Oracle实例:后台进程+内存结构
(必须启动实例才能访问数据库中的数据,每次启动实例,都会分配系统全局去SGA并启动Oracle后台进程)
SGA是用于村粗数据库信息的内存区,该信息为数据库进程所共享。
后台进程代表调用进程执行功能。它们把为每个用户运行的多个oracle程序所处理的功能统一起来。
后台进程执行i/o并监控其他oracle进程以增加并行性,从而使性能和可靠性更加优越。
Oracle数据块:物理结构+逻辑结构
Oracle存储结构:物理结构+逻辑结构
物理结构:
主要文件
数据文件
重做日志文件
控制文件
其他文件
参数文件
归档日志文件
逻辑结构:
表空间
数据块
区
段
Oracle内存结构
系统全局区SGA(Oracle实例启动时分配系统全局区)
程序全局区PGA(服务器进程启动时分配程序全局区)
用户全局区UGA(用户全局区为用户进程存储回话状态)
Oracle 数据库的组成
- 实例 instance
– 内存
• sga,pga,streams pool....
– 进程
• Oracle 后台进程(为oracle实例服务,PMON、SMON等)
• 服务器端进程
• 客户端进程
- 数据库 database
– 文件
• 控制文件,重做日志文件,数据文件
- 其它组成部分
– 参数文件,密码文件(放置sys用户的口令),Archived归档日志(redo文件的备份)
- 数据库 database
数据库是一个静态的,被动的文件.
- 实例=内存区+后台进程
- 实例的内存区:SGA+PGA,内存是一块区域.
- 后台进程:使用/操作实例的内存区.
|
SGA(系统全局区system global area)
1、Database Buffer Cache(数据缓冲区)
2、Shared pool
3、Redo log buffer(重做日志区)
SGA 区里发生了什么?
PGA PGA自己的内存区:
PGA 里发生了什么?
– 私有SQL区包含了: 1、绑定变量值的信息. 2、运行时期内存结构信息等数据。 -每一个运行SQL语句的会话都有一个块私有SQL区。 -所有提交了相同SQL语句的用户都有各自的私有SQL区,并且他们共享一个共享SQL区。因此,一个共享SQL区可能和多个私有共享区相关联。
– 一个Oracle预编译程序或OCI程序的应用开发人员能够很明确的打开一个游标,或者控制一块特定的私有SQL区,将他们作为程序运行的命名资源。
基于排序的操作(ORDER BY、GROUP BY、ROLLUP、窗口函数); – Hash Join – Bitmap merge – Bitmap create PGA是所有会话的总和 |
|
后台进程
SQL> desc v$bgprocess; SQL> select count(*) from v$bgprocess; SQL> select name from v$bgprocess; 后台进程是一段代码,完成一些固定的功能. 后台进程定义:为了最大的性能和容纳更多的用户,oracle使用额外的进程被叫做后台进程处理。 一、后台进程主要包括:
DBWn(Database Writer Process)
在什么触发DBWR进程的条件: 1.当脏缓冲区的数量超过了所设定的限额。 2.当所设定的时间间隔到了。 3.当有进程需要数据库高速缓冲区却找不到空闲的缓冲区时。当server process在buffer cache中无法找到可用的buffer时,调用该进程,保证用户进程始终可以在buffer cache中找到空闲的位置; 4.当校验点发生时。 接收到CKPT(检查点,checkpoint)进程的指令后,调用该进程,将数据写入到磁盘中。 5.当某个表被删除或被截断时。 6.当某个表空间被设置为只读状态时。 7.当使用类似于alter tablespace users begin backup的命令对某个表空间进行联机备份时。 8.当某个临时表空间被设置为只脱机状态或正常状态时。
官方文档关于dbwn的说明 Database Writer Process (DBWn) The database writer process (DBWn) writes the contents of buffers to datafiles. The DBWn processes are responsible for writing modified (dirty) buffers in the database buffer cache to disk. Although one database writer process (DBW0) is adequate for most systems, you can configure additional processes (DBW1 through DBW9 and DBWa through DBWj) to improve write performance if your system modifies data heavily. These additional DBWn processes are not useful on uniprocessor systems. 数据库的dbwn进程主要是把缓存的内容写到数据文件中。dbwn进程主要负责把数据库的高速缓存中的脏数据写到硬盘上。虽然一个dbwn进程能够满足大部分的系统,如果你的系统脏数据太多,你也可以配置(dbw1到dbw9或dbwa到dbwj)来改善写性能。在单进程的系统上增加dbwn进程没有用。 When a buffer in the database buffer cache is modified, it is marked dirty. A cold buffer is a buffer that has not been recently used according to the least recently used (LRU) algorithm. The DBWn process writes cold, dirty buffers to disk so that user processes are able to find cold, clean buffers that can be used to read new blocks into the cache. As buffers are dirtied by user processes, the number of free buffers diminishes. If the number of free buffers drops too low, user processes that must read blocks from disk into the cache are not able to find free buffers. DBWn manages the buffer cache so that user processes can always find free buffers. 在数据库高速缓存中当有一个缓存被修改,它就变成了脏数据了。一个冷缓存就是最近没有被访问的缓存块。dbwn进程写冷块,脏缓存到硬盘,所以用户进程能够找到冷块,清除缓,能把新的块读进缓存中去。缓存被用户进程变脏,空闲缓存的数量就变少了。如果空闲的缓存下降的太少了,如果缓存不能找到空闲的块用户进程就必须从硬盘中读块。dbwn管理着高速缓存是为了让用户进程总能找到空闲的缓存。 SGA只会将修改了的数据(脏数据)写入磁盘 LGWR(Log Writer Process)
LGWR进程在启动实例时启动 LGWR是把log_buffer中的日志条目(ORACLE把客户提交的SQL语句转换成ORACLE能够识别、通过它可以重构数据的一种日志格式)写入到日志文件中. LGWR保存日志条目,迅速释放log_buffer空间,只要该日志条目写入到日志文件,所占的内存空间就释放.所以log_buffer的功能就是临时的存放日志条目,循环的使用,如果log_buffer满了,就无法接受新的事务,就会发生实例挂起现象. LGWR的作用: 将日志缓存区的数据从内存写到磁盘的redo文件里,完成数据库对象创建、更新等操作过程中的记录。 LGWR的一些理解: LGWR,是Log Writer的缩写,也是一种后台进程。主要负责将日志缓冲内容写到磁盘的在线重做日志文件或组中。DBWn将dirty块写到磁盘之前,所有与buffer修改相关的redo log都需要由LGWR写入磁盘的在线重做日志文件(组),如果未写完,那么DBWn会等待LGWR,也会产生一些相应的等待事件(例如:log file prarllel write,后面单独作为话题再聊)。总之,这样做的目的就是为了当crash时,可以有恢复之前操作的可能,也是Oracle在保持交易完整性方面的一个机制。 相关知识点: 1、LGWR写日志是顺序写,这就解释了一个Orace Server只能有一个LGWR进程,不能像DBWR那样可以有多个,否则就无法保证顺序写的机制,而且可能会产生锁的问题。 2、用户进程每次修改内存数据块时,都会在日志缓冲区(redo buffer)中构造一个相应的重做条目(redo entry),它记录了被修改数据块修改之前和之后的值。 3、LGWR将redo entry写入联机日志文件的情况可以概括为两种:后台写和同步写,或者说异步写和同步写。 可以使用如下命令查看日志文件位置: SQL> select group#,member from v$logfile; GROUP# ---------- MEMBER -------------------------------------------------------------------------------- 3 /u01/app/oracle/oradata/gaga01/redo03.log 2 /u01/app/oracle/oradata/gaga01/redo02.log 1 /u01/app/oracle/oradata/gaga01/redo01.log
SMON(System Monitor Process) SMON是Oracle数据库至关重要的一个后台进程,SMON 是System Monitor 的缩写,意即:系统监控。 作用:
在数据库启动过程中,SMON排在CKPT进程之后,在Oracle9i中排在第六号的位置: PMON started with pid=2 DBW0 started with pid=3 LGWR started with pid=4 CKPT started with pid=5 SMON started with pid=6 RECO started with pid=7 SMON负责系统监视已经一些系统清理及恢复工作,这些工作主要包括: 1.清理临时空间以及临时段 SMON负责在数据库启动时清理临时表空间中的临时段,或者一些异常操作过程遗留下来的临时段. 例如,当创建索引过程中,创建期间分配给索引的Segment被标志为TEMPORARY,如果Create Index (或rebuild Index等)会话因某些原因异常中断,SMON负责清理这些临时段。 2.接合空闲空间 在DMT(字典管理表空间)中,SMON负责把那些在表空间中空闲的并且互相是邻近的Extent接合成一个较大的空闲扩展区,这需要表空间的pctincrease设置为非零值。 3.执行实例恢复(Instance recovery) 在实例恢复过程中,SMON的工作包括三个环节:
4.离线(Offline)回滚段 在自动回滚段管理(AUM)中负责Offline不再需要的回滚段,日志中会记录类似如下信息: Fri May 2 15:43:21 2008 SMON offlining US=11 5.执行并行恢复 以下信息来自9i日志: Fri May 11 21:30:45 2007 SMON: Parallel transaction recovery tried Also Record some English Note About SMON: The SMON background process performs all system monitoring functions on the Oracle database. The SMON process performs a "warm start" each time that Oracle is re-started, ensuring that any in-flight transaction at the time of the last shutdown are recovered. For example, if Oracle crashed hard with a power failure, the SMON process is attached at startup time, and detects any uncompleted work, using the rollback segments to recover the transactions. In addition, SMON performs periodic cleanup of temporary segments that are no longer needed, and also perform tablespace operations, coalescing contiguous free extents into larger extents.
检查点,把内存中的数据写到磁盘上
|
Oracle 数据库的组成(instance+database)的更多相关文章
- oracle数据库执行脚本常用命令总结
1. 执行一个SQL脚本文件 代码如下 复制代码 sqlplus user/pass@servicename<file_name.sql或SQL>start file_names或SQL& ...
- Oracle数据库基础入门《一》Oracle服务器的构成
Oracle数据库基础入门<一>Oracle服务器的构成 Oracle 服务器是一个具有高性能和高可靠性面向对象关系型数据库管理系统,也是一 个高效的 SQL 语句执行环境. Oracle ...
- Oracle数据库基本常用命令汇总
1.得到数据库名和创建日期SELECT name, created, log_mode, open_mode FROM v$database; 2.ORACLE数据库的计算机的主机名,ORACLE数据 ...
- HANA内存数据库与oracle数据库的性能比较
链接: http://wenku.it168.com/redian/hana/ 1.传统磁盘数据库的基本访问模式.为了提高性能在产品和应用之间会加入缓存的内存区域.传统数据库性能瓶颈主要出现在一个是内 ...
- Oracle数据库如何创建DATABASE LINK?
Oracle数据库如何创建DATABASE LINK? 2011-08-09 14:54 taowei20061122 CSDN博客 http://blog.csdn.net/taowei20061 ...
- 新建Oracle数据库时,提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序
新建一个oracle数据库时,当提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序等字样的时候,问题是那个监听的服务没有启动,解决方法如下: 打开cmd命 ...
- Oracle数据库如何授权收费(Database Licensing)
Oracle软件本身是免费的,所以任何人都可以从Oracle官方网站下载并安装Oracle的数据库软件,收费的是License,即软件授权,如果数据库用于商业用途,就需要购买相应Oracle产品的Li ...
- Oracle 数据库(oracle Database)Select 多表关联查询方式
Oracle数据库中Select语句语法及介绍 SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,…] FROM <表名1>,<表名 ...
- Oracle 数据库 Database Express Edition 11g Release 2 (11.2) 错误解决集锦(安装方面)
前言:第一次接触数据库,想下载个oracle试玩下(虽然听说一般大企业才用),到 官网下载 了个简易版 XE 版本,安装时要注意记住自己输入的数据库密码(口令) 还有安装路径不能含有空格(Do no ...
随机推荐
- zookeeper(一):功能和原理
简介 ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现.分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅.负载均衡.命名服务.分 ...
- 点滴积累【JS】---JS小功能(JS实现侧悬浮浮动)
效果: 思路: 首先,加载onscroll控制滚动条.然后写缓存运动的方法,缓冲运动的方法是先计算出DIV缓冲的速度,并且将其取整,再进行运动判断什么时候到达终点.最后将其参数返回.再在onscrol ...
- Atitit.php nginx页面空白 并返回500的解决
Atitit.php nginx页面空白 并返回500的解决 1.1. 空白问题起源1 1.2. Php.ini 开启display_err1 1.3. 修改www.conf ,并重启动.重启php ...
- strncmp----c++库函数
某天,蒜头君和花椰妹在公园里散步,走着走着,我的天!他们各自都捡到了一串漂亮的字符串,然而蒜头君好奇心比较重,他想知道自己的字符串在花椰妹的字符串中出现了多少次,例如花椰妹的字符串为abababa,蒜 ...
- Dreamhost 提示No input file specified. 的解决的方法
假设开启FastCGI模式,.htaccess无法生效,一直提示no input file specified. 由于在Fastcgi模式下.php不支持rewrite的目标网址的PATH_INFO的 ...
- 迅搜sdk试用
1. sdk支持PHP 2. 针对mysql的某个库的某个表??进行索引,简单的说就是一个project,需要对应一个配置文件: 3. 分索引服务与搜索服务两个,另带中文分词功能:索引数据会有演示,但 ...
- Mybatis热加载Mapper.xml
开发的时候,写Mybatis Mapper.xml文件的时候,每次修改SQL都需要重启服务,感觉十分麻烦,于是尝试写了一个Mybatis的Mapper.xml热加载. 能在修改Mapper.xml之后 ...
- 玩转Win10的45个快捷键
1Win10快捷键大全(第一部分) Win10发布已经快两个星期了,各项新功能也让小伙伴们兴奋不已.和之前系统一样,Win10也加入了很多经典的快捷键,同时还加入了全新触控手势.今天小编就将所有的Wi ...
- [Tips]Javascrip计算文件行数
function calcLineCount(filename, callback) { var fs = require('fs'); var fileStream = fs.createReadS ...
- C#实现反射调用动态加载的DLL文件中的方法
反射的作用:1. 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型 2. 应用程序需要在运行时从某个特定的程序集中载入一个特定的类型,以便实现某个任务时可以用到反射.3. ...




