内存数据库 缓存表空间与缓存 内存有关系么?

对于刚涉足 DB2 领域的 DBA 或未来的 DBA 而言,新数据库的设计和性能选择可能会很令人困惑。在本文中,我们将讨论DBA 要做出重要选择的两个方面:表空间和缓冲池。表空间和缓冲池的设计和调优会对 DB2 服务器的性能产生深远的影响,因此我们将着重讨论这些活动。
1.1&&&&概述
一个缓冲池是与单个数据库相关联的,可以被多个表空间使用。当考虑将缓冲池用于一个或多个表空间时,必须保证表空间页大小和缓冲池页大小对于缓冲池所“服务”的所有表空间而言都是一样的。一个表空间只能使用一个缓冲池。
创建数据库时,会创建一个名为 IBMDEFAULTBP 的缺省缓冲池,所有的表空间都共享该缓冲池。可以使用 CREATE BUFFERPOOL 语句添加更多的缓冲池。缓冲池的缺省大小是 BUFFPAGE 数据库配置参数所指定的大小,但是可以通过在 CREATE BUFFERPOOL 命令中指定 SIZE 关键字来覆盖该缺省值。足够的缓冲池大小是数据库拥有良好性能的关键所在,因为它可以减少磁盘 I/O 这一最耗时的操作。大型缓冲池还会对查询优化产生影响,因为更多的工作可在内存中完成。
基于块的缓冲池&
V8 允许您留出缓冲池的一部分(最高可达 98%)用于基于块的预取操作。基于块的 I/O 可以通过将块读入相邻的内存区而不是将它分散装入单独的页,来提高预取操作的效率。每个缓冲池的块大小必须相同,并且由 BLOCKSIZE 参数进行控制。该值等于块的大小(单位为页),从 2 到 256,缺省值为 32。
扩展存储器&
DB2 不将扩展存储器用于缓冲区。但是,可以用扩展存储器来高速缓存内存页,使得从内存移出页变得更快。
1.2&&&&创建缓冲池
db2 'CREATE BUFFERPOOL userbufpool IMMEDIATE SIZE 250 AUTOMATIC PAGESIZE 8K'
属性解释:
immediate/deferred immediate(规定如果系统上有足够的内存,则立即创建缓冲池。 immediate 选项是默认的。), deferred(规定在下一次数据库被停止和重新启动时再创建缓冲池。)
size 指定缓冲池的大小,并且以页为单位。
pagesize 指定缓冲池的页宽。默认页宽为 4 KB 或 4,096 字节。页宽可以按字节或千字节指定。
blocksize 指定在缓冲池基于块的区域中的一个给定块中的数据页的数量。块的大小必须介于 2 页与 256 页之间。默认值是 32 页。
numblockpages 指定在缓冲池的基于块的区域中创建的数据页的数量。numblockpages 的实际值可能与指定的值不符,因为其大小必须是 blocksize 的倍数。
AUTOMATIC 缓冲池交由DB2自动管理,当指定了AUTOMATIC之后,表空间的NPAGES=-2
缓冲池中基于块的区域不能超过缓冲池大小的 98%。如果将基于块的区域的大小指定为 0,则会禁用缓冲池的块 I/O。
extended storage/not extended storage 指定是否将缓冲池中受到危害的页复制到被称作扩展存储(extended storage)的辅助缓存中。从扩展存储检索数据比从磁盘检索数据更为高效,但是不如从缓冲池检索数据高效,因此它不适用于 64 位环境。
&&&&&& 定义好缓冲池的页宽和名称后,便不能更改它们。
1.3&&&&修改缓冲池
db2 'ALTER BUFFERPOOL userbufpool
IMMEDIATE SIZE 500 '&
&(修改缓冲池大小为:500 * pagesize
db2 'ALTER BUFFERPOOL userbufpool IMMEDIATE SIZE 500'
1.4&&&&删除缓冲池
DROP BUFFERPOOL userbufpool & &&
1.5&&&&查看缓冲池
SELECT * FROM SYSCAT.BUFFERPOOLS;
1.6&&&&例子
1.6.1&&&&SQL客户端创建缓冲池
--创建缓冲池
--1.创建基础数据表空间缓冲池-- 100M
CREATE BUFFERPOOL BASEDATA_BUFPOOL IMMEDIATE SIZE 6400 PAGESIZE 16K;
--2.创建系统业务表空间缓冲池 -- 200M
CREATE BUFFERPOOL BUSINESS_BUFPOOL IMMEDIATE SIZE 12800 PAGESIZE 16K;
--3.创建大数据数据表空间缓冲池 -- 300M
CREATE BUFFERPOOL DASHUJU_BUFPOOL IMMEDIATE SIZE 19200 PAGESIZE 16K;
--4.修改默认缓冲池大小-- 200M
ALTER BUFFERPOOL IBMDEFAULTBP IMMEDIATE SIZE 12800;
当指定了AUTOMATIC之后,表空间的NPAGES=-2
1.6.2&&&&Linux控制台创建
切换至DB2管理员账号
su - db2inst1
连接至Test数据库
db2 CONNECT TO Test
创建缓冲池
&&&&&&&& 1.创建基础数据表空间缓冲池-- 100M(根据服务器具体配置可调整)
&&&&&&&& db2 'CREATE BUFFERPOOL BASEDATA_BUFPOOL IMMEDIATE SIZE 6400 PAGESIZE 16K'
&&&&&&&& 2.创建系统业务表空间缓冲池 -- 300M(根据服务器具体配置可调整)
&&&&&&&& db2 'CREATE BUFFERPOOL BUSINESS_BUFPOOL IMMEDIATE SIZE 19200 PAGESIZE 16K'
&&&&&&&& 3.创建大数据数据表空间缓冲池 -- 600M(根据服务器具体配置可调整)
&&&&&&&& db2 'CREATE BUFFERPOOL DASHUJU_BUFPOOL IMMEDIATE SIZE 38400 PAGESIZE 16K'
1.7&&&&监视缓冲池
&打开监视& db2 update monitor switches using bufferpool on
&查看缓存池使用& db2 get snapshot for bufferpools on kg
& 关闭监视& db2 update monitor switches using bufferpool off
2&&&&&& 表空间
1&&&&&& 数据库中的所有数据都存储在许多表空间中。可以认为表空间是孩子而数据库是其父母,其中表空间(孩子)不能有多个数据库(父母)。由于表空间有不同用途,因此根据它们的用途和管理方式将它们分类。根据用途有五种不同的表空间:
2&&&&&& 目录表空间
3&&&&&& 每个数据库只有一个目录表空间,它是在发出 CREATE DATABASE 命令时创建的。目录表空间被 DB2 命名为 SYSCATSPACE,它保存了系统目录表。总是在创建数据库时创建该表空间。
4&&&&&& 常规表空间
5&&&&&& 常规表空间保存表数据和索引。它还可以保存诸如大对象(Large Object,LOB)之类的长数据,除非这些数据显式地存储在长表空间中。如果某些表空间是数据库管理的空间(Database Managed Space,DMS),则可以将表及其索引分别放到单独的常规表空间中。我们将在本文后面定义 DMS 和系统管理的空间(System Managed Space,SMS)之间的区别。每个数据库中必须至少有一个常规表空间。创建数据库时指定该表空间的缺省名为 USERSPACE1。
6&&&&&& 长表空间
7&&&&&& 长表空间用于存储长型或 LOB 表列,它们必须驻留在 DMS 表空间中。它们还可以存储结构化类型的列或索引数据。如果没有定义长表空间,那么将把 LOB 存储在常规表空间中。长表空间是可选的,缺省情况下一个都不创建。
8&&&&&& 系统临时表空间
9&&&&&& 系统临时表空间用于存储 SQL 操作(比如排序、重组表、创建索引和连接表)期间所需的内部临时数据。每个数据库必须至少有一个系统临时表空间。随数据库创建的系统临时表空间的缺省名为 TEMPSPACE1。
10&&&& 用户临时表空间
11&&&& 用户临时表空间存储已声明的全局临时表。创建数据库时不存在用户临时表空间。至少应当创建一个用户临时表空间以允许定义已声明的临时表。用户临时表空间是可选的,缺省情况下一个都不创建。
13&&&& 可以用两种不同的方式管理表空间:
14&&&& 系统管理的空间(SMS)
15&&&& SMS 表空间由操作系统进行管理。容器被定义成常规操作系统文件,并且是通过操作系统调用访问的。这意味着所有的常规操作系统功能将处理以下内容:操作系统将缓冲 I/O;根据操作系统约定分配空间;如有必要就自动扩展表空间。但是,不能从 SMS 表空间删除容器,并且仅限于将新的容器添加到分区的数据库。前一节中所说明的那三个缺省表空间都是 SMS。
16&&&& 数据库管理的空间(DMS)
17&&&& DMS 表空间是由 DB2 管理的。可以将容器定义成文件(在创建表空间时将把给定的大小全部分配给它们)或设备。分配方法和操作系统允许多少 I/O,DB2 就可以管理多少 I/O。可以通过使用 altER TABLESPACE 命令来扩展容器。还可以释放未使用的那部分 DMS 容器(从 V8 开始)。
18&&&& DMS自动存储表空间(Automatic Storage DMS)
自动存储表空间不是真正意义上的独立类型的表空间。它是DMS存储的另外一种处理方法。DMS需要很多的维护操作,而自动存储器则是作为一种简化的空间管理手段,能够自动进行表空间的管理维护,它是DB2 V8.8.2中引入的概念,目前取代SMS成为默认的表空间类型。
19&&&& DB2的表空间按管理方式分为两种:系统管理空间(System Management Space,SMS)和数据库管理空间(Database Management Space,DMS)。 &
20&&&& 按类型分为:规则表空间、长整数表空间、系统临时表空间、用户临时表空间。其中长整数表空间只能是DMS的。
21&&&& 规则表空间中包含用户数据的表。默认用户表空间名为USERSPACE1,索引也存储在规则表空间中,另外系统目录表也放在规则表空间中。 默认的系统目录表空间名为SYSCATSPACE。
22&&&& 临时表空间分为系统临时表空间和用户临时表空间。系统临时表空间用来存储各种数据操作(排序、重组表、创建索引、连接表)中所需的内部临时数据,虽
23&&&& 然可以创建任意多个系统临时表空间,但建议用户只使用大多数表所使用的页大 小创建一个,默认系统临时表空间名为TEMPSPACE1。用户临时表空间用来存储已
24&&&& 说明全局临时表(已说明全局临时表存储的是应用程序临时数据)。用户临时表 空间不是在数据库创建时默认创建的。
25&&&& SMS每个容器是操作系统的文件空间中的一个目录;DMS每个容器是一个固定的、预分配的文件,或是物理设备。
26&&&& SMS的管理比较简单,由操作系统自动管理,空间的大小随数据量的变化系统 自动调整。
27&&&& DMS是由数据库管理的,空间大小在创建时确定,空间不够时要手工添加或删 除部分数据以释放空间。
28&&&& 大多数情况下,DMS的性能比SMS好。
2.2 创建表空间
1.DMS自动存储表空间(Automatic Storage DMS)
自动存储表空间不是真正意义上的独立类型的表空间。它是DMS存储的另外一种处理方法。DMS需要很多的维护操作,而自动存储器则是作为一种简化的空间管理手段,能够自动进行表空间的管理维护,它是DB2 V8.8.2中引入的概念,目前取代SMS成为默认的表空间类型。
db2 'create regular tablespace tbspc01 pagesize 8k managed by automatic storage extentsize 8 prefetchsize 8 bufferpool bf01 overhead 24.1 transferrate 0.9 dropped table recovery on'
2.3 修改表空间
ALTER TABLESPACE tbspc01 bufferpool bf01; --修改表空间缓冲池
ALTER TABLESPACE DASHUJU_TBS& no --修改缓存级别
2.4 删除表空间
drop tablespace tbspc01;
2.5 查看表空间
linux查看表空间使用情况
&&&&&&&& db2 list tablespaces show detail
目录表空间--SYSCATSPACE,它保存了系统目录表,在创建数据库是即创建
常规表空间--USERSPACE1(此为缺省名称),保存表数据和索引
系统临时表空间--TEMPSPACE1(此为缺省名称),用于存储SQL操作期间所需的内部临时数据
&查看具体表空间
db2 list tablespace containers for TablespaceID(具体的id) show detail
sql查看表空间
&&&&&&&& SELECT * FROM SYSCAT.TABLESPACES;
&&&&&&&& SELECT TBSPACE, BUFFERPOOLID FROM SYSCAT.TABLESPACES;
本文已收录于以下专栏:
相关文章推荐
DB2 缓冲池调优Bufferpools
缓冲池是内存中的一块存储区域,用于临时读入和更改数据库页(包含表行或索引项)。缓冲池的用途是为了提高数据库系统的性能...
db2 create bufferpool bp32k immediate size 1000k
db2 "CREATE TABLESPACE SHJD_SYS PAGESIZE 32K MANAG...
无论是CPU芯片,操作系统还是Web服务器等方方面面,都会使用一个非常重要的技术:缓存。CPU和内存之间的高速缓存,内存和外设之间的系统缓存,局域网与外部网络之间的Web缓存服务器。。。这些“缓存”的...
如果你是在一个项目的角度,要建立表空间、建立缓冲池、建立数据库,到最终完成项目连接DB2成功的话,请看完这篇文章
对于开发近三年左右的程序员,我们总会碰到DB2数据库的项目(做银行、政府、国企等项...
DB2中,修改缓冲池大小的命令有两个选项,默认的是IMMEDIATE,也就是立刻生效。 另一种是DEFERRED, 它只是在系统表中做了修改,实际上没有生效,需要重新激活数据库生效,也就是使用视图SY...
无论是CPU芯片,操作系统还是Web服务器等方方面面,都会使用一个非常重要的技术:缓存。CPU和内存之间的高速缓存,内存和外设之间的系统缓存,局域网与外部网络之间的Web缓存服务器。。。这些“缓存”的...
无论是CPU芯片,操作系统还是Web服务器等方方面面,都会使用一个非常重要的技术:缓存。CPU和内存之间的高速缓存,内存和外设之间的系统缓存,局域网与外部网络之间的Web缓存服务器。。。这些“缓存”的...
对于刚涉足 DB2 领域的 DBA 或未来的 DBA 而言,新数据库的设计和性能选择可能会很令人困惑。在本文中,我们将讨论 DBA 要做出重要选择的两个方面:表空间和缓冲池。表空间和缓冲池的...
出自:/developerworks/cn/data/library/techarticles/dm-0509wright/
他的最新文章
讲师:李江龙
讲师:司徒正美
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)oracle学习入门系列之五
内存结构、数据库结构、进程
&&&&&& 上篇蛤蟆简单描述了oracle公司的数据库产品、其他产品及oracle软件的一些特点。干货虽有但是真心是比较少的,这篇开始就是以干货为主,其中夹杂一些扯淡的事情了。蛤蟆一直也在想如何能生动的通过这干巴巴的文字来描述着世界级的软件,太理论大家都看不下去,太实践又缺乏深度。想想自己上大学那会,老师的讲课,无不枯燥乏味啊,满满的兴趣尽是消耗殆尽。所以不能仿效之,我们得走自己特色的路。以最易懂的形式、比喻等手段描述深奥的计算机知识。走起~
&&&&&& 开篇问题就是如下小题目中的3个方面,oracle 中的内存结构、数据库结构、进程是怎么样的。
本人邮箱: &
微信公众号:HopToad
欢迎各界交流
1&&&&& Oracle数据库结构
关于这个话题,网上一搜绝对一大把,更别提书籍上出现的了,还有很多大师们的讲稿。但是我们不去管那些,按照我们自己节奏记出特性、记出精彩来。
首先插入本系列第一张图片,图一(绝对来自官网),看蛤蟆对于图片使用是多么小心的,如果大伙对这个图已有自己独到的理解,那么可直接跳过本篇笔记吧,当然温故而知新也未尝不可,知耻而后勇….额,而来知耻?
1.1&&&&& 总体结构
&&&&&& 这个图1从总体上描述了Oracle数据库的大概了,包含有内存结构,数据库文件,进程及客户端。虽然不是非常详细但是蛤蟆觉得该图是在是理解ORACLE数据库入门的好图。
&&&&&& 那么我们一起围观下该图到底说了些什么。
&&&&&& 服务进程,这里展开就是服务进程是专用服务进程还是共享,后续会慢慢道来。
&&&&&& 内存结构,内存结构中主要包含PGA和SGA,PGA是为客户端接入时候服务,SGA是数据库运行服务的,这些在机器下电后就消失了。
&&&&&& 还有主要的6个进程PMON,SMON,DBWR,LGWR,CHPT,Arcn,在启动数据库的时候才会有这些进程。
&&&&&& 最下面就是存放在持久化介质上文件了,有归档日志,数据文件,参数文件,密码文件等,不随机器下电而消失的。
&&&&&& 途中有2个在Oracle中非常重要的概念,实例和数据库:
1.1.1&&&&&&&实例
实例是oracle 创建的进程和内存结构的组合。
1.1.2&&&&&&&数据库
数据库是由一组文件组成的,对数据库的所有操作都是需要通过实例来完成了。通常数据库和实例是一一对应的。例外就是RAC了,RAC下一个数据库就对应了多个实例。
实例和数据库关系打个比方就是发动机和汽车的关系。汽车就是数据库,就在那里,但是动不了,只有发动机发动了,汽车才能动起来。一般情况下一个汽车一个单缸发动机;但是也可以是多缸的嘛,如6缸发动机什么的。
接下去看逻辑数据库结构。
1.2&&&&& 逻辑数据库结构
放入第二章图,如下图2,如来自互联网
&&&&&& 这里需要提一些概念了,都是ORACLE数据库中最基本而且需要一直掌握的概念,是一直,死都不能忘了,如果担心自己忘记就记下来把。这里提到的概念是一通百通的,很多可以适用到其他数据库中的,记住后我们后续学习必将事半功倍。
&&&&&& 我们从最下面开始介绍吧,枯燥但不乏味的哈~
1.2.1&&&&&&&数据块
数据块,data block,是oracle数据块的存储基础,有若干字节组成。又是若干,到底是多少个字节呢?一般常用的是8KB,4KB的了,在创建数据库的时候可以指定。一旦指定就不能改变了,不过即使在4KB的数据库中,我们也可以指定创建8KB的表空间的,只要我们内存结构中存在8KB的缓存。
数据块类似操作系统中的块大小,通常ORACLE数据库块大小会是操作系统块大小的整数倍,其中好处就无需多说了。
&&&&&& 蛤蟆自身工作经验来看,在OLTP模型上,4KB、8KB及16KB下性能相差不是特别明显。
&&&&&& 不过原则是块尺寸是处理Oracle的更新、选择或者插入数据事务的最小单位,且访问很随机,则选择块较小的块尺寸;如果行比较小且访问主要是连续,或者如果有较大的行,则用较大的块尺寸。
1.2.2&&&&&&&数据区间
区,extent,是两个或者多个相邻的ORACLE数据块,他是空间分配的单元。概念总是如此的明了,3点关键。
a)&&&&&&&&2个或2个以上
b)&&&&&&&相邻的数据块
c)&&&&&&&&空间分配单元
数据块是存储单元,区是分配单元。看着概念重不重要的,从概念我们就知道,ORACKE分配空间的时候至少2个数据块起步的。要是申请一个数据块,那么不好意思啦,就是不给。
就像小时候向爸爸妈妈要零花钱,
我们:“妈,给我5分钱,买个萝卜丝吃”
老妈:“!@#¥%……,没有5分”
我们:“一毛也行”
老妈:“好吧,又买两包萝卜丝?,给你1毛”
1.2.3&&&&&&&数据段
段是分配给某个逻辑结构的一组区。
a)&&&&&&&&分配给某个逻辑结构
b)&&&&&&&一组区
1.2.4&&&&&&&对象
ORACLE数据库对象,主要就是如下10个了。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1)&&&&表&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
2)&&&&约束条件:保证数据完整性。&&&&&&&&&&&&&&&&&&&&&&&&&&
3)&&&&视图:虚表,命名的查询语句。&&&&&&&&&&&&&&&&&&&&&&&&&
4)&&&&索引:加速查询(加快查询的速度)。&&&&&&&&&&&&&&&&&&&&
5)&&&&序列:一串连续递增或递减的数字,步长相同,(代理键) 。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
6)&&&&同义词:一个对象的另外一个叫法(对象的别名)。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
7)&&&&存储过程:用于操作
8)&&&&函数:用作复杂运算的。用于计算。
9)&&&&触发器:由事件触发的存储过程。
对数据库的操作可以基本归结为对数据对象的操作,这个对象蛤蟆也不知道如何去定义它。对象也是一个逻辑结构,是建立于段之上的,有头有脸的结构。
1.2.5&&&&&&&表空间
表空间是一组数据文件,通常由相关的段组成。表空间是包含物理数据文件的逻辑实体。表空间存储数据库的所有可用数据。
下节中就能看到表空间和物理数据文件的对应关系。表空间也是一个逻辑结构是,数据库下最大的逻辑结构了。
&&&&&& 数据库创建完后会有如下表空间
a)&&&&&&&&System表空间
b)&&&&&&&Sysaux 表空间
c)&&&&&&&&撤销Undo表空间
d)&&&&&&&临时temporary表空间
1.3&&&&& 物理数据库结构
上节介绍了oracle数据库的逻辑结构,那么接下去必须得看下,逻辑结构和物理存储结构是如何对应的。
&&&&&& 首先在通常情况下我们可以这样理解,ORAC LE数据库由表空间组成;所以和物理数据库结构相关的从表空间开始了。
&&&&&& 先看如下图3:
&&&&&& 从上图可以看出,逻辑结构比物理结构复杂了些许。
&&&&&& 物理结构上就两个东西 操作系统块和文件。上节中提到数据库块是操作系统块的整数倍,从图中也能反映一二。
&&&&&& 这里蛤蟆重点解释下ORACLE数据库中的文件。
1.4&&&&& 数据文件
数据文件一般是数据库最大的物理存储部分,一个数据文件只能属于一个数据库。一个或者多个数据文件构成成为表空间的实体。
&&&&&& 我们创建一个表空间时候,让他拥有一个2G大小的数据文件,那么该表空间就能存放2G大小的数据量,有一天耗尽了这2G,那么再增加一个数据文件给这个表空间,当然也可以扩大原先数据文件的大小。
&&&&&& 注意:上篇提到了对象如索引、表等,虽然也是存在表空间所属的数据文件中,但是这些对象本身不会指定要存放在那个数据文件上,数据文件只与表空间关联。
&&&&&& 数据库中执行如下查看数据文件所在
SQL&selectname from v$
1.5&&&&& 控制文件
一看这个文件,蛤蟆就不禁感叹:如此之小,确如此重要啊。小身材,大作用。
&&&&&& 这个控制文件,管理了数据库的状态,非常重要,一般管理员都会进行至少3份备份。
&&&&&& 控制文件包含了数据文件和重做日志文件的名字、位置、日志序号、备份等详细信息,以及所有重要的SCN(系统更改号)。数据库在操作过程中进程不断的更新控制文件。
&&&&&& 控制文件中的检查点信息使ORACLE能确定从联机重做日志文件中需要返回多少以便恢复数据。此外,在启动oracle实例时,通过控制文件,确定数据库操作必须打开的所有数据文件和重做日志文件。
&&&&&& 你看,重要不?
查看控制文件所在
SQL&selectname from v$controlfile
1.6&&&&& 日志文件
日志文件其实准确的是重做日志文件,记录了对数据库做的全部更改,有助于恢复数据库。如果日志文件写满后就会进行归档,归档的日志文件叫做归档重做日志,正在记录的日志文件叫做联机重做日志文件。
&&&&&& Oracle要求数据库至少两个重做日志组,每个至少一个单独的日志文件。在归档的时候当前日志组就不能用了,所以需要有第二个日志组来接上。这样循环,生生不息。
&&&&&& 考虑到日志文件恢复数据库的作用,一般建议多路复用重做日志,把日志副本存放到不同的磁盘上,保证不会轻易丢失。
查看重做日志文件所在
SQL&select member from v$
1.7&&&&& 其他文件
还有一些文件,蛤蟆先简单带过一下吧,后续咱们再深入之。
SPFILE,PFILE,密码文件,告警日志文件,跟踪文件,备份文件等。
SPFILE是oracle实例的初始化参数,这个文件是二进制文件无法手动编辑,我们可以通过命令从SPFILE来生成PFILE,PFILE可以支持手动编辑。下节中内存结构中的组件大小都可以在SPFILE或者PFILE中进行设定。
&&&&&& 密码文件是授予SYSDBA或SYSOPER管理权限的数据库用户名字,和数据库安全相关,后续蛤蟆会和大伙一起捣鼓捣鼓。
&&&&&& 告警日志文件,蛤蟆喜欢叫他alert日志。捕捉了oracle实例运行期间的主要更改和事件。包含日志切换、错误、告警和其他信息,也是数据库错问题时候,蛤蟆第一时间查看地方,大伙没事可以进去看看也。Alert日志文件路径:
$ORACLE_BASE/diag/rdbms/[SID]/trace/alert_[SID].log。
&&&&&& &跟踪文件,Oracle各类内部结构中所包含的信息转储(dump)到跟踪文件中,以便用户能根据文件内容来解决各种故障。
备份文件,顾名思义,因为备份数据操作得到的文件。
2&&&&& 内存结构
内存结构也是ORACLE数据库实例的组成部分。这个内存结构可以让用户之间共享可执行代码,可以将数据库更改写入内存区域等,让数据库性能提升好几个数量级。
&&&&&& 我们看图4
一图胜过千言万语啊,一看就明白了数据库内存结构包括PGA和SGA,那么问题来了,具体呢?
2.1&&&&& SGA
SGA是实例中最重要的内存部件了,特别是在OLTP数据库系统中,比PGA要大很多。在数据仓库环境下,PGA可能就是更重要的ORACLE内存区域。
2.1.1&&&&&&&数据库缓冲区
保存从文件中读取的数据块副本,提高读取性能。
当然数据库缓冲区本身还可以细化成:可用缓冲区,脏缓冲区,钉住缓冲区。
&&&&&& 缓冲区的主要目的是最小数据未命中率和磁盘IO操作。
&&&&&& 可以将一个缓冲区分成多个缓冲区提供给不同的对象使用,也可以设置多个数据库块尺寸的缓存区(如4KB,8KB,16KB的)。
2.1.2&&&&&&&共享池
共享池是保持可执行PL/SQL代码和SQL语句,以及数据字典表的信息。其可以分为库高速缓存和字典高速缓存。
注:数据字典是ORACLE维护的一组关键表,包含了又关数据表、用户、权限等重要的元数据。
&&&&&& 该池可以减少相同代码的编译,减少硬解析从而减少内存和CPU资源。
&&&&&& 蛤蟆就知道了数据字典和库高速缓存的低命中率的解决方法是相同的,即增加共享池的尺寸。
2.1.3&&&&&&&重做日志缓冲区
我们待会回将日志写入进程,因为日志写入进程的刷新频率,该区大小不必太大,基本几M就搞定了。
2.1.4&&&&&&&Java池
为JVM何基于JAVA的应用保留。
2.1.5&&&&&&&大池
在使用并行查询时候才需要使用大池。此外使用RMAN和共享服务器配置也需要建议配置大池。
2.1.6&&&&&&&流池
实现在不同数据库之间和不同环境之间共享数据。
2.2&&&&& PGA
用户启动会话时为每个用户创建一个程序全局区。PGA保存ORACLE为用户创建的专用服务器进程的数据和控制信息。PGA是独占的不能共享,除非使用一个共享的服务器配置。
&&&&&& PGA可以存放用户的游标,不与其他用户共享,此外还会涉及一些排序类的内存密集型操作。
概念介绍大伙看看乐一乐好了,当前不需要太较真。
3&&&&& 进程
进程是Oracle数据库实例的一部分,我们说过oracle数据库实例由内存结构和进程组成。
Oracle进程其实可以分为两种,一种是用户进程,用于连接用户和数据库;另一种是oracle进程,用于执行数据库的所有实际操作(读写数据文件,写日志等)。这里蛤蟆来聊聊最主要的几个后台进程,其他的进程咱有机会再说。
&&&&&& 进程是什么呢?这个蛤蟆就不说了哈
&&&&&& 咱们直接进入正题,如下进程都可以在安装ORACLE数据的系统中执行
#ps –ef | grep ora_
&&&&&& 来查看。
3.1&&&&& 数据写进程 (DBWR)
这个进程的作用是将在内存中的数据写入到磁盘中,使得对数据库的修改持久化。因为考虑到性能问题,并不是对数据库的所有修改多会直接写磁盘,而是保留在内存中,等时机成熟才进行批量刷入到磁盘中,这对性能提升还是大大的。
这个时机就是如下三种情况:
a)&&&&&&&&数据库发布检查点
b)&&&&&&&内存缓冲区没有可用空间
c)&&&&&&&&3秒
以上3点,任何一点满足即可。
&&&&&& 考虑到有些系统每次刷入的数据量较大,ORACLE就支持多个进程一起写。通过在DB_WIRTER_PROCESSES参数在PFILE中设定,前提是系统支持异步IO,不然不如只用一个写进程。
3.2&&&&& 日志写进程 (LGWR)
类似数据写进程,将重做日志在内存中的缓存写入到磁盘中。这个写特点是100%顺序写。如果日志文件不能被写入,那么数据库就会停止工作了,当然这种情况极小发生。毕竟好端端的怎么会突然不能被写入了呢。
&&&&&& 日志写也是有时机的类似数据写进程,这进程有四个机会点了
a)&&&&&&&&3秒
b)&&&&&&&缓存区到三分之一
c)&&&&&&&&数据写进程触发(先完成日志写进程,方进行数据写进程,针对这个有个写前协议)
d)&&&&&&&事务提交,将提交记录写到重做日志
注意:重做日志文件可能包含提交以及未提交的事务记录。
3.3&&&&& 系统监控进程 (SMON)
这是系统监控进程了,并非一直工作,周期性巡检。主要处理
a)&&&&&&&&实例崩溃重启后,是否一致
b)&&&&&&&合并可用区(我们说过区是相邻的数据块嘛)
c)&&&&&&&&清除不必要的临时段
3.4&&&&& 进程监控进程 (PMON)
这个进程用于清除失败的用户进程,保证数据库释放死进程占用的资源。这个进程和SMON一样,一般是处于不活动的,但是会周期性的进行巡检,类似魔兽世界中猪头监工,不干活,周期性的走走,看看谁在偷懒,偷懒的它就动手。
&&&&&& 如果可以蛤蟆也希望变成PMON,SMON,他们两兄弟干活真实轻松啊,一看就是领导。
3.5&&&&& 检查点进程 (CKPT)
通知数据库写进程,这个还会触发日志写进程的。该进程的作用是同步缓存区高速缓存信息与数据库磁盘上的信息。
&&&&&& 该进程具体是做了如下4个事情:
a)&&&&&&&&日志缓冲写到日志文件
b)&&&&&&&检查点记录写入日志文件
c)&&&&&&&&刷数据缓存到磁盘中
d)&&&&&&&更新数据文件和控制文件的头
3.6&&&&& 归档进程 (ARCn)
这个进程在系统以归档方式运行时才有,负责将填满的日志文件归档。就是将联机日志文件的内容生成一个归档日志文档。如果需要,可以同时设置多个进行进行归档操作。
&&&&&& 这个进程在切换日志的时候开始干活。
&&&&&& 如果我们在非归档模式运行,那么压根就没有这个进程了,不过生产系统必须以归档模式运行,不然后果不堪设想,蛤蟆自己玩的系统崩溃也没事的哈哈。
&&&&&& 其他进程在此就不啰嗦了,后续自然会涉及。这篇到此结束~如果大伙感兴趣就看下回笔记。
本文已收录于以下专栏:
相关文章推荐
1. Oracle的内存结构
内存结构式Oracle数据库体系中最为重要的一部分,内存也是印象数据库性能的第一因素分类
系统全局区SGA (System Global ...
1、内存结构:
关于之前SGA,PGA的介绍我就不多说了,在我的博客里有专门的介绍:
http://blog.csdn.net/changyanmanman/article/details/725...
Oracle数据库的体系结构包括四个方面:数据库的物理结构、逻辑结构、内存结构及进程。  
1. 物理结构  
物理数据库结构是由构成数据库的操作系统文件所决定,Oracle数据库文件包括:  ...
1、OracleOverview先从一副图开始:这幅图简单明了的展现了Oracle的整体架构。整个架构由上下两部分构成,也代表了Oracle数据库服务器(Oracle DatabaseServer)的...
SGA的区域信息 SGA(system global area)系统全局区跟一些必须的后台进程合进来称为实例(Instance).说它是全局区是包含了全局变量和数据结构,是系统区是包含了进入整个Ora...
PostgreSQL数据库启动时,会先启动一个叫Postmaster的主进程,还会fork出一些辅助子进程。
SysLogger(系统日志)进程
BgWriter(后台写)进程
WaLWriter(预...
他的最新文章
讲师:李江龙
讲师:司徒正美
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 数据库创建表空间 的文章

 

随机推荐