当前位置:首页 » 操作系统 » oracle内存数据库

oracle内存数据库

发布时间: 2023-03-14 00:33:29

‘壹’ Oracle数据库实例及其相关概念

完整的Oracle数据库通常由两部分组成 Oracle数据库实例和数据库

)数据库是一系列物理文件的集合(数据文件 控制文件 联机日志 参数文件等)

)Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区

在启动Oracle数据库服务器时 实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存) 然后由这个Oracle数据库实例来访问和控制磁盘中的数据文件 Oracle有一个很大的内存快 成为全局区(SGA)

一 数据库 表空间 数据文件

数据库

数据库是数据集合 Oracle是一种数据库管理系统 是一种关系型的数据库管理系统

通常情况了我们称的 数据库 并不仅指物理的数据集合 他包含物理数据 数据库管理系统 也即物理数据 内存 操作系统进程的组合体

数据库的数据存储在表中 数据的关系由列来定义 即通常我们讲的字段 每个列都有一个列名 数据以行(我们通常称为记录)的方式存储在表中 表之间可以相互关联 以上就是关系模型数据库的一个最简单的描述

当然 Oracle也是提供对面象对象型的结构数据库的最强大支持 对象既可以与其它对象建立关系 也可以包含其它对象 关于OO型数据库 以后利用专门的篇幅来讨论 一般情况下我们的讨论都基于关系模型

表空间 文件

无论关系结构还是OO结构 Oracle数据库都将其数据存储在文件中 数据库结构提供对数据文件的逻辑映射 允许不同类型的数据分开存储 这些逻辑划分称作表空间

表空间(tablespace)是数据库的逻辑划分 每个数据库至少有一个表空间(称作SYSTEM表空间) 为了便于管理和提高运行效率 可以使用一些附加表空间来划分用户和应用程序 例如 USER表空间供一般用户使用 RBS表空间供回滚段使用 一个表空间只能属于一个数据库

每个表空间由同一磁盘上的一个或多个文件组成 这些文件叫数据文件(datafile) 一个数据文件只能属于一个表空间 在Oracle 以后 数据文件创建可以改变大小 创建新的表空间需要创建新的数据文件 数据文件一旦加入到表空间中 就不能从这个表空间中移走 也不能与其它表空间发生联系

如果数据库存储在多个表空间中 可以将它们各自的数据文件存放在不同磁盘上来对其进行物理分割 在规划和协调数据库I/O请求的方法中 上述的数据分割是一种很重要的方法

Oracle数据库的存储结构分为逻辑存储结构和物理存储结构

)逻辑存储结构 用于描述Oracle内部组织和管理数据的方式

)物理存储结构 用于描述Oracle外部即操作系统中组织和管理数据的方式

二 Oracle数据库实例

为了访问数据库中的数据 Oracle使用一组所有用户共享的后台进程 此外 还有一些存储结构(统称为System Gloabl Area 即SGA) 用来存储最近从数据库查询的数据 数据块缓存区和sql共享池(Shared SQL Pool)是SGA的最大部分 一般占SGA内存的 %以上 通过减少对数据文件的I/O次数 这些存储区域可以改善数据库的性能

Oracle数据库实例(instance)也称作服务器(server) 是用来访问数据库文件集的存储结构及后台进程的集合 一个数据库可以被多个实例访问(这是Oracle并行服务器选项)

lishixin/Article/program/Oracle/201311/17362

‘贰’ ORACLE 数据库服务器 512G内存 ,SGA和PGA内存怎么合理的分配

SGA可以配置为内存的50%,PGA配置为内存的17%

‘叁’ oracle数据库的性能优化有哪些方法

你最好买一本专门讲ORACLE性能优化的书,好好看看x0dx0a1、调整数据库服务器的性能x0dx0aOracle数据库服务器是整个系统的核心,它的性能高低直接影响整个系统的性能,为了调整Oracle数据库服务器的性能,主要从以下几个方面考虑: x0dx0a1.1、调整操作系统以适合Oracle数据库服务器运行x0dx0aOracle数据库服务器很大程度上依赖于运行服务器的操作系统,如果操作系统不能提供最好性能,那么无论如何调整,Oracle数据库服务器也无法发挥其应有的性能。 x0dx0a1.1.1、为Oracle数据库服务器规划系统资源 x0dx0a据已有计算机可用资源, 规划分配给Oracle服务器资源原则是:尽可能使Oracle服务器使用资源最大化,特别在Client/Server中尽量让服务器上所有资源都来运行Oracle服务。 x0dx0a1.1.2、调整计算机系统中的内存配置 x0dx0a多数操作系统都用虚存来模拟计算机上更大的内存,它实际上是硬盘上的一定的磁盘空间。当实际的内存空间不能满足应用软件的要求时,操作系统就将用这部分的磁盘空间对内存中的信息进行页面替换,这将引起大量的磁盘I/O操作,使整个服务器的性能下降。为了避免过多地使用虚存,应加大计算机的内存。 x0dx0a1.1.3、为Oracle数据库服务器设置操作系统进程优先级 x0dx0a不要在操作系统中调整Oracle进程的优先级,因为在Oracle数据库系统中,所有的后台和前台数据库服务器进程执行的是同等重要的工作,需要同等的优先级。所以在安装时,让所有的数据库服务器进程都使用缺省的优先级运行。 x0dx0a1.2、调整内存分配x0dx0aOracle数据库服务器保留3个基本的内存高速缓存,分别对应3种不同类型的数据:库高速缓存,字典高速缓存和缓冲区高速缓存。库高速缓存和字典高速缓存一起构成共享池,共享池再加上缓冲区高速缓存便构成了系统全程区(SGA)。SGA是对数据库数据进行快速访问的一个系统全程区,若SGA本身需要频繁地进行释放、分配,则不能达到快速访问数据的目的,因此应把SGA放在主存中,不要放在虚拟内存中。内存的调整主要是指调整组成SGA的内存结构的大小来提高系统性能,由于Oracle数据库服务器的内存结构需求与应用密切相关,所以内存结构的调整应在磁盘I/O调整之前进行。 x0dx0a1.2.1、库缓冲区的调整 x0dx0a库缓冲区中包含私用和共享SQL和PL/SQL区,通过比较库缓冲区的命中率决定它的大小。要调整库缓冲区,必须首先了解该库缓冲区的活动情况,库缓冲区的活动统计信息保留在动态性能表v$librarycache数据字典中,可通过查询该表来了解其活动情况,以决定如何调整。 x0dx0a x0dx0aSelect sum(pins),sum(reloads) from v$librarycache; x0dx0a x0dx0aPins列给出SQL语句,PL/SQL块及被访问对象定义的总次数;Reloads列给出SQL 和PL/SQL块的隐式分析或对象定义重装载时在库程序缓冲区中发生的错误。如果sum(pins)/sum(reloads) ≈0,则库缓冲区的命中率合适;若sum(pins)/sum(reloads)>1, 则需调整初始化参数 shared_pool_size来重新调整分配给共享池的内存量。 x0dx0a1.2.2、数据字典缓冲区的调整 x0dx0a数据字典缓冲区包含了有关数据库的结构、用户、实体信息。数据字典的命中率,对系统性能影响极大。数据字典缓冲区的使用情况记录在动态性能表v$librarycache中,可通过查询该表来了解其活动情况,以决定如何调整。 x0dx0a x0dx0aSelect sum(gets),sum(getmisses) from v$rowcache; x0dx0a x0dx0aGets列是对相应项请求次数的统计;Getmisses 列是引起缓冲区出错的数据的请求次数。对于频繁访问的数据字典缓冲区,sum(getmisses)/sum(gets)<10%~15%。若大于此百分数,则应考虑增加数据字典缓冲区的容量,即需调整初始化参数shared_pool_size来重新调整分配给共享池的内存量。 x0dx0a1.2.3、缓冲区高速缓存的调整 x0dx0a用户进程所存取的所有数据都是经过缓冲区高速缓存来存取,所以该部分的命中率,对性能至关重要。缓冲区高速缓存的使用情况记录在动态性能表v$sysstat中,可通过查询该表来了解其活动情况,以决定如何调整。 x0dx0a x0dx0aSelect name,value from v$sysstat where name in ('dbblock gets','consistent gets','physical reads'); x0dx0a x0dx0adbblock gets和consistent gets的值是请求数据缓冲区中读的总次数。physical reads的值是请求数据时引起从盘中读文件的次数。从缓冲区高速缓存中读的可能性的高低称为缓冲区的命中率,计算公式: x0dx0a x0dx0aHit Ratio=1-(physical reds/(dbblock gets+consistent gets)) x0dx0a x0dx0a如果Hit Ratio<60%~70%,则应增大db_block_buffers的参数值。db_block_buffers可以调整分配给缓冲区高速缓存的内存量,即db_block_buffers可设置分配缓冲区高速缓存的数据块的个数。缓冲区高速缓存的总字节数=db_block_buffers的值*db_block_size的值。db_block_size 的值表示数据块大小的字节数,可查询 v$parameter 表: x0dx0a x0dx0aselect name,value from v$parameter where name='db_block_size' x0dx0a x0dx0a在修改了上述数据库的初始化参数以后,必须先关闭数据库,在重新启动数据库后才能使新的设置起作用。

‘肆’ 内存数据库主流的有哪些,并给出各自特点!

内存数据库从范型上可以分为关系型内存数据库和键值型内存数据库。
在实际应用中内存数据库主要是配合oracle或mysql等大型关系数据库使用,关注性能。
作用类似于缓存,并不注重数据完整性和数据一致性。
基于键值型的内存数据库比关系型更加易于使用,性能和可扩展性更好,因此在应用上比关系型的内存数据库使用更多。
比较FastDB、Memcached和Redis主流内存数据库的功能特性。
FastDB的特点包括如下方面:
1、FastDB不支持client-server架构因而所有使用FastDB的应用程序必须运行在同一主机上;
2、fastdb假定整个数据库存在于RAM中,并且依据这个假定优化了查询算法和接口。
3、fastdb没有数据库缓冲管理开销,不需要在数据库文件和缓冲池之间传输数据。
4、整个fastdb的搜索算法和结构是建立在假定所有的数据都存在于内存中的,因此数据换出的效率不会很高。
5、Fastdb支持事务、在线备份以及系统崩溃后的自动恢复。
6、fastdb是一个面向应用的数据库,数据库表通过应用程序的类信息来构造。
FastDB不能支持Java API接口,这使得在本应用下不适合使用FastDB。
Memcached
Memcached是一种基于Key-Value开源缓存服务器系统,主要用做数据库的数据高速缓冲,并不能完全称为数据库。
memcached的API使用三十二位元的循环冗余校验(CRC-32)计算键值后,将资料分散在不同的机器上。当表格满了以后,接下来新增的资料会以LRU机制替换掉。由于 memcached通常只是当作缓存系统使用,所以使用memcached的应用程式在写回较慢的系统时(像是后端的数据库)需要额外的程序更新memcached内的资料。
memcached具有多种语言的客户端开发包,包括:Perl、PHP、JAVA、C、Python、Ruby、C#。
Redis
Redis是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了C++、Java、Python,Ruby,Erlang,PHP客户端。

‘伍’ 如何给Oracle数据库分配内存

内存是影响数据库性能的重要因素,Oracle8i使用静态内存管理,Oracle 10g使用动态内存管理。所谓静态内存管理,就是在数据库系统中,无论是否有用户连接,也无论并发用量大小,只要数据库服务在运行,就会分配固定大小的内存;动态内存管理允许在数据库服务运行时对内存的大小进行修改,读取大数据块时使用大内存,小数据块时使用小内存,读取标准内存块时使用标准内存设置。

‘陆’ 简要说明oracle数据库体系的内存结构

内存结构 oracle内存结构大致具有四个区:软件代码区、系统全局区、程序全局区和排序区。 1、系统全局区。(SGA) 系统全局区为一组由oracle分配的共享数据结构,它是实例的主要部分,它含有数据维护、SQL语句分析与重做缓存所必须的所有内存结构,系统全局区的数据是共享的,也就是说,多个进程可以在同一时间对SGA中的数据进行访问和修改。它包含以下内容: <1>、数据块缓冲区 该区存放最近使用过的数据块,使用LRU(最近最少使用算法)进行管理。 <2>、字典缓冲区 该区用于保存数据字典中的行,数据字典中存放oracle系统管理自身所需的所有信息。该区也使用LRU算法管理。 <3>、重做日志缓冲区 任何事务在记录到重做日志之前都先放到该区,数据库系统定期将该区内容写入到联机重做日志中。 <4>、SQL共享池 存放所有通过SQL语法分析、准备执行的SQL语句。 <5>、JAVA池 为JAVA命令提供语法分析。 <6>、多缓冲池 可以在SGA中创建多个缓冲池,能够用多个缓冲池把的数据集与其他的应用程序分开,以减少它们争夺数据块缓冲区相同资源的可 能性。 2、程序全局区(PGA) 包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反PGA 是只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收。 3、排序区 排序需要内存,这部分空间成为排序区,排序区存在于请求排序的用户进程的内存中,该空间的大小为适应排序数据量的大小,可增长,但受初始化参数SORT_AREA_SIZER所限制。 4、软件代码区 用于存储正在执行或可以执行的程序代码。 </FONT></SPAN>

热点内容
数据库删除实例 发布:2025-08-23 14:21:27 浏览:314
qqandroid反编译 发布:2025-08-23 14:02:23 浏览:907
高级语言编译有哪些 发布:2025-08-23 13:23:49 浏览:573
win32编译 发布:2025-08-23 13:19:16 浏览:657
备份数据库日志 发布:2025-08-23 13:07:05 浏览:517
php模块开发 发布:2025-08-23 12:58:43 浏览:922
java读写数据库 发布:2025-08-23 12:41:40 浏览:401
php跨站脚本攻击漏洞 发布:2025-08-23 12:34:37 浏览:154
编译安装mysql时找不到文件 发布:2025-08-23 12:14:56 浏览:657
phpget号 发布:2025-08-23 12:09:52 浏览:737