oracle实例内存解析

合集下载

Oracle_AWR_报告分析实例讲解

Oracle_AWR_报告分析实例讲解
Rows per Sort:每次排序的行数
注:
Oracle的硬解析和软解析
提到软解析(soft parse)和硬解析(hard parse),就不能不说一下Oracle对sql的处理过程。当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程:
DB Time(s):每秒内用于DB处理的时间,其他时间为等待时间
Redo size:每秒/每事务产生的redo大小(单位字节),可标志数据库任务的繁重程序。其中Per Second表示每秒中产生的redo的字节数,Per Transaction表示每个事务产生的redo的字节数,可以通过后者可以看到事务的大小,协助判断是否commit次数太多。例如per second很大,而per transaction很小,说明commit次数太多。通常在很繁忙的系统中日志生成量可能达到上百k,甚至几百k。
Block changes:每秒/每事务修改的块数,即每秒中多少个块发生变化
Physical reads:每秒/每事务物理读的块数,即每秒数据库从磁盘读取的块个数
Physical writes:每秒/每事务物理写的块数,即每秒有多少个块接受了数据库写入数据。
User calls:每秒/每事务用户call次数User calls/Executes基本代表每个语句的请求次数,Executes越接近User calls越好。
89.09
Latch Hit %:
99.99
Parse CPU to Parse Elapsd %:
7.99
% Non-Parse CPU:
99.95
本节包含了Oracle关键指标的内存命中率及其它数据库实例操作的效率。其中Buffer Hit Ratio 也称Cache Hit Ratio,Library Hit ratio也称Library Cache Hit ratio。同Load Profile一节相同,这一节也没有所谓“正确”的值,而只能根据应用的特点判断是否合适。在一个使用直接读执行大型并行查询的DSS环境,20%的Buffer Hit Ratio是可以接受的,而这个值对于一个OLTP系统是完全不能接受的。根据Oracle的经验,对于OLTPT系统,Buffer Hit Ratio理想应该在90%以上。

oracle下的数据库实例、表空间、用户及其表的区分

oracle下的数据库实例、表空间、用户及其表的区分

oracle下的数据库实例、表空间、⽤户及其表的区分完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。

1) 数据库是⼀系列物理⽂件的集合(数据⽂件,控制⽂件,联机⽇志,参数⽂件等);2) Oracle数据库实例则是⼀组Oracle后台进程/线程以及在服务器分配的共享内存区。

在启动Oracle数据库服务器时,实际上是在服务器的内存中创建⼀个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据⽂件。

Oracle有⼀个很⼤的内存快,成为全局区(SGA)。

⼀、数据库、表空间、数据⽂件1、数据库数据库是数据集合。

Oracle是⼀种数据库管理系统,是⼀种关系型的数据库管理系统。

通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。

也即物理数据、内存、操作系统进程的组合体。

我们在安装Oracle数据库时,会让我们选择安装启动数据库(即默认的全局数据库)如下图:全局数据库名:就是⼀个数据库的标识,在安装时就要想好,以后⼀般不修改,修改起来也⿇烦,因为数据库⼀旦安装,数据库名就写进了控制⽂件,数据库表,很多地⽅都会⽤到这个数据库名。

启动数据库:也叫全局数据库,是数据库系统的⼊⼝,它会内置⼀些⾼级权限的⽤户如SYS,SYSTEM等。

我们⽤这些⾼级权限账号登陆就可以在数据库实例中创建表空间,⽤户,表了。

查询当前数据库名:select name from v$database;2、数据库实例⽤Oracle官⽅描述:实例是访问Oracle数据库所需的⼀部分计算机内存和辅助处理后台进程,是由进程和这些进程所使⽤的内存(SGA)所构成⼀个集合。

其实就是⽤来访问和使⽤数据库的⼀块进程,它只存在于内存中。

就像Java中new出来的实例对象⼀样。

我们访问Oracle都是访问⼀个实例,但这个实例如果关联了数据库⽂件,就是可以访问的,如果没有,就会得到实例不可⽤的错误。

oracle数据库体系架构详解

oracle数据库体系架构详解

oracle数据库体系架构详解在学习oracle中,体系结构是重中之重,⼀开始从宏观上掌握它的物理组成、⽂件组成和各种⽂件组成。

掌握的越深⼊越好。

在实际⼯作遇到疑难问题,其实都可以归结到体系结构中来解释。

体系结构是对⼀个系统的框架描述。

是设计⼀个系统的宏观⼯作。

这好⽐建⼀栋⼤楼。

你⾸先应该以图纸的⽅式把整个⼤楼的体系架构描述出来。

然后⼀点点的往⾥⾯填充东西。

下⾯我们先以⼀个图解的⽅式对oracle体系结构有⼀个基本了解根据⽰图,便于我们记忆,⽰图分三部分组成,左侧User Process、Server Process、PGA可以看做成Clinet端,上⾯的实例(Instance)和下⾯的数据库(Database)及参数⽂件(parameter file)、密码⽂件(password file)和归档⽇志⽂件(archived logfiles)组成Oracle Server,所以整个⽰图可以理解成⼀个C/S架构。

Oracle Server由两个实体组成:实例(instance)与数据库(database)。

这两个实体是独⽴的,不过连接在⼀起。

在数据库创建过程中,实例⾸先被创建,然后才创建数据库。

在典型的单实例环境中,实例与数据库的关系是⼀对⼀的,⼀个实例连接⼀个数据库,实例与数据库也可以是多对⼀的关系,即不同计算机上的多个实例打开共享磁盘系统上的⼀个公⽤数据库。

这种多对⼀关系被称为实际应⽤群集(Real Application Clusters,RAC)RAC极⼤提⾼了数据库的性能、容错与可伸缩性(可能耗费更多的存储空间)并且是oracle⽹格(grid)概念的必备部分。

下⾯我们来详细看⼀下oracle数据库的体系架构Oracle体系架构主要有两⼤部分组成:数据库实例(Instance)和数据库⽂件(database)数据库实例指数据库服务器的内存及相关处理程序,它是Oracle的⼼脏。

与Oracle性能关系最⼤的是SGA(System Global Area,即系统全局区活共享内存区),SGA包含三个部分:1、数据缓冲区,可避免重复读取常⽤的数据;2、⽇志缓冲区,提升了数据增删改的速度,减少磁盘的读写⽽加快速度;3、共享池,使相同的SQL语句不再编译,提升了SQL的执⾏速度。

SGA及参数文件

SGA及参数文件

SGASGA(System Global Area)是Oracle Instance的基本组成部分,在实例启动时分配。

是一组包含一个Oracle实例的数据和控制信息的共享内存结构。

主要是用于存储数据库信息的内存区,该信息为数据库进程所共享(PGA不能共享的)。

它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。

SGA几个很重要的特性:1、SGA的构成——数据和控制信息,我们下面会详细介绍;2、SGA是共享的,即当有多个用户同时登录了这个实例,SGA中的信息可以被它们同时访问(当涉及到互斥的问题时,由latch和enquence 控制);3、一个SGA只服务于一个实例,也就是说,当一台机器上有多个实例运行时,每个实例都有一个自己的SGA尽管SGA来自于OS的共享内存区,但实例之间不能相互访问对方的SGA区。

它主要包括:1.数据库高速缓存(the database buffer cache),2.重演日志缓存(the redo log buffer)3.共享池(the shared pool)4.数据字典缓存(the data dictionary cache)以及其它各方面的信息。

1.数据高速缓冲区(Data Buffer Cache)在数据高速缓冲区中存放着Oracle系统最近使用过的数据块(即用户的高速缓冲区),当把数据写入数据库时,它以数据块为单位进行读写,当数据高速缓冲区填满时,则系统自动去掉一些不常被用访问的数据。

如果用户要查的数据不在数据高速缓冲区时,Oracle自动从磁盘中去读取。

数据高速缓冲区包括三个类型的区:1)脏的区(Dirty Buffers):包含有已经改变过并需要写回数据文件的数据块。

2)自由区(Free Buffers):没有包含任何数据并可以再写入的区,Oracle可以从数据文件读数据块该区。

oracle数据库面试题目(3篇)

oracle数据库面试题目(3篇)

第1篇1. 请简述Oracle数据库的体系结构,并说明各层的作用。

2. 请解释什么是Oracle实例?实例与数据库之间的关系是什么?3. 请简述Oracle数据库的存储结构,包括数据文件、控制文件、日志文件等。

4. 请说明Oracle数据库的内存结构,包括SGA、PGA等。

5. 请解释Oracle数据库的备份策略,包括全备份、增量备份、差异备份等。

6. 请说明Oracle数据库的恢复策略,包括不完全恢复、完全恢复等。

7. 请解释Oracle数据库的事务管理,包括事务的ACID特性。

8. 请说明Oracle数据库的锁机制,包括共享锁、排他锁等。

9. 请解释Oracle数据库的并发控制,包括多版本并发控制(MVCC)。

10. 请说明Oracle数据库的安全机制,包括角色、权限、用户等。

二、SQL语言1. 请简述SQL语言的组成,包括数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)等。

2. 请说明如何创建一个简单的表,包括表结构、字段类型、约束等。

3. 请编写一个查询语句,查询某个表中所有年龄大于30岁的记录。

4. 请编写一个更新语句,将某个表中年龄大于40岁的记录的年龄加1。

5. 请编写一个删除语句,删除某个表中年龄小于20岁的记录。

6. 请编写一个插入语句,插入一条记录到某个表中。

7. 请说明如何使用SQL语句实现分页查询。

8. 请说明如何使用SQL语句实现多表查询。

9. 请说明如何使用SQL语句实现子查询。

10. 请说明如何使用SQL语句实现联合查询。

三、Oracle高级特性1. 请解释什么是视图?如何创建视图?2. 请解释什么是索引?有哪些常见的索引类型?3. 请解释什么是触发器?如何创建触发器?4. 请解释什么是存储过程?如何创建存储过程?5. 请解释什么是函数?如何创建函数?6. 请解释什么是包?如何创建包?7. 请解释什么是序列?如何创建序列?8. 请解释什么是同义词?如何创建同义词?9. 请解释什么是物化视图?如何创建物化视图?10. 请解释什么是分区表?如何创建分区表?四、Oracle性能优化1. 请说明如何查看Oracle数据库的性能统计信息。

oracle 数据库解析字段与解析内容详解

oracle 数据库解析字段与解析内容详解

oracle 数据库解析字段与解析内容详解文章标题:深度解析Oracle数据库中的字段解析与内容详解在Oracle数据库中,字段解析和内容详解是数据库设计和优化中极为重要的部分。

本文将从简单到复杂地分析这一主题,并通过多个方面全面评估,以帮助读者更深入地理解这一概念。

一、字段解析的概念和作用在数据库中,字段解析是指对于各种数据类型的字段进行分析和解释。

不同的数据类型有不同的解析方式,而正确的字段解析能够帮助数据库管理员和开发人员更好地理解和利用数据。

Oracle数据库中常见的字段类型包括数值型、字符型、日期型等,它们的解析方法会对数据的存储、查找和计算产生影响。

1. 数值型字段解析数值型字段的解析主要涉及数据的精度和范围,以及相关的计算规则和函数。

对于整型和浮点型数据,需要考虑到数据的取值范围和小数位数,以及在应用中可能出现的四舍五入或溢出问题。

2. 字符型字段解析字符型字段的解析涉及到字符编码、长度限制、字符集规则等方面。

在处理多语言和特殊字符时,正确的解析能够保证数据的完整性和可读性,同时也对数据的存储和索引产生影响。

3. 日期型字段解析日期型字段的解析需要考虑到日期格式、时区、日期运算等方面。

在数据分析和报表生成中,正确解析日期字段能够保证数据的一致性和准确性。

二、内容详解的重要性和实践方法除了字段解析外,内容详解也是数据库设计和优化中不可或缺的部分。

内容详解是对数据内容进行深入的分析和理解,包括数据的来源、意义、关联等方面。

通过内容详解,可以更好地发现数据的价值和潜在问题,为决策和业务分析提供支持。

1. 数据来源和质量在进行内容详解时,需要了解数据的来源,包括数据的采集、清洗、转换等过程。

同时也需要评估数据的质量,包括数据的完整性、一致性、准确性等方面。

2. 数据关联和分析内容详解还涉及到数据之间的关联和分析,包括数据的连接、聚合、过滤等操作。

通过内容详解,可以更好地理解数据之间的关系,为业务分析和决策提供支持。

ORACLE的实例的浅谈

ORACLE的实例的浅谈【摘要】ORACLE实例=后台进程(后台进程使用的PGA)+进程所使用的内存(SGA),实例是一个临,时性的东西,你也可以认为它代表了数据库某一时刻的状态!数据库=重做文件+控制文件+数据文件+临时文件,数据库是永久的,是一个文件的集合。

【关键词】ORACLE;数据库;操作系统ORACLE实例和数据库之间的关系1.临时性和永久性2.实例可以在没有数据文件的情况下单独启动startup nomount,通常没什么意义3.一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库4.一个数据库可被许多实例同时装载和打开(即RAC),RAC环境中实例的作用能够得到充分的体现!在Oracle领域中有两个词很容易混淆,这就是“实例”(instance)和“数据库”(database)。

作为Oracle术语,这两个词的定义如下:数据库(database):物理操作系统文件或磁盘(disk)的集合。

使用Oracle 10g 的自动存储管理(Automatic Storage Management,ASM)或RAW分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。

这两个词有时可互换使用,不过二者的概念完全不同。

实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。

一组操作系统进程(或者是一个多线程的进程)以及一些内存;这些进程可以操作数据库。

而数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件)。

在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。

大多数情况下,反过来也成立:一个数据库上只有一个实例对其进行操作。

不过,Oracle的真正应用集群(Real Application Clusters,RAC)是一个例外,这是Oracle 提供的一个选项,允许在集群环境中的多台计算机上操作,这样就可以有多台实例同时装载并打开一个数据库(位于一组共享物理磁盘上)。

oracle11g自动内存管理

内存结构管理主要涉及对SGA中的各种缓冲区进行最佳设置,使 实例对内存的利用率达到最高,从而提高数据库的性能。
用户进程
共享缓冲区 库缓冲区
SGA
数据缓冲区 日志缓冲区
服务器进程 PGA
数据字典
Java池
大池
PMON
SMON
DBWR
LGWR
CKPT
Others
参数文件 口令文件
数据文件
控制文件
重做日志 文件
MEMORY_MAX_TARGET : 这个参数定义了 MEMORY_TARGET最大可以达 到而不用重启实例的值,如果没 有设MEMORY_MAX_TARGET
大,也可以动态减小的。它不能超
值,默认和MEMORY_TARGET
过MEMORY_MAX_TARGET参数设 的值相等 置的大小 使用动态内存管理时,要让Oracle完全控制内存管理,SGA_TARGET和 PGA_AGGREGATE_TARGET这两个参数应该设置为0
归档日志文件
数据库
实例启动时分配
共享池
数据库高速缓存
重做日志缓存
大池(可选)
java池 (可选)
其它结构(例如锁,数据状态)
当server进程建立时分配
为每个连接到数据库的用户进程保留的内存空间 当一个进程创建的时候分配 当一个进程终止释放
9i
Oracle对内存的管理的 优化从未间断,从8i
10g
到12c不断地提出新的管理概念。每个本版都
11g
对内存管理进行了简化
8i->9i:PGA的自动管理
12c
9i->10g:SGA的自动管理 10g->11g:MEMORY(SGA+PGA)的自动管理

oracle11g关于内存的分配方案。

oracle11g关于内存的分配方案。

1,在32位的操作系统上,安装oracle的话,oracle最大能分配到的内存是1.7G。

这样的话,推荐最好使用64位的操作系统。

这样在物理内存足够大的情况下,oracle也能分配到无限制的足够大的内存。

2,在物理内存既定的情况下,如果服务器是只为oracle应用提供的服务器。

在创建数据库实例时,oracle的典型内存分布,默认总共给sga 和pga分配系统内存的40%,同时oracle建议自动内存管理。

此时,如果选择oracle的典型内存分布,同时不选择自动管理内存分布,那么sga : pga的内存比是3:1。

但是当sga的内存达到1536M之后,就不会再增加内存了,多出来的内存全都被增加到了pga的内存中去了。

(问题一:请问一下,如果是自动管理内存分布的话,sga和pga 也会出现这样的情况吗? sga达到1536m之后也不会继续增加吗?问题二:pga增多的话,排序等的性能会增加。

但是如果适当的增加sga,将表数据全都缓存到sga中的话,内存中的排序等性能同样会得到很大的提升。

为什么典型配置在sga增加到1536m之后就不再增加了呢?)3,定制数据库实例的内存时:pga,根据实际的情况,可以增加到足够大。

sga的共享池,日志缓冲池如果过大的话,会对性能产生较大的负面影响。

sga的java池,建议20msga的共享池,建议sga的22%sga的large池,建议sga的9.9%sga的缓冲区,可以设置到足够大。

(问题三,当创建数据库实例时,如果选择的是自动管理内存的话,这时的内存结构参数的值都是0。

如果只想要手动管理sga的一个缓冲区的话,是不是必然将重新手动设置sga的全部内存结构?包括重新设置sga本身的大小?)4,问题四:请问一下,如果手动设置的话,那sga和pga的内存比应该多少比较合适?以上只是个人的一些理解,有可能有错误的地方,希望大家能帮忙指出,最后将做出总结,将错误的地方改正。

循序渐进解读Oracle AWR性能分析报告

循序渐进解读Oracle AWR性能分析报告Oracle中的AWR,全称为Automatic Workload Repository,自动负载信息库。

它收集关于特定数据库的操作统计信息和其他统计信息,Oracle以固定的时间间隔(默认为1个小时)为其所有重要的统计信息和负载信息执行一次快照,并将快照存放入AWR中。

这些信息在AWR中保留指定的时间(默认为1周),然后执行删除。

执行快照的频率和保持时间都是可以自定义的。

AWR的引入,为我们分析数据库提供了非常好的便利条件(这方面MySQL就相差了太多)。

曾经有这样的一个比喻——“一个系统,就像是一个黑暗的大房间,系统收集的统计信息,就如同放置在房间不同位置的蜡烛,用于照亮这个黑暗大房间。

Oracle,恰到好处地放置了足够的蜡烛(AWR),房间中只有极少的烛光未覆盖之处,性能瓶颈就容易定位。

而对于蜡烛较少或是没有蜡烛的系统,性能优化就如同黑暗中的舞者。

”那如何解读AWR的数据呢?Oracle本身提供了一些报告,方便进行查看、分析。

下面就针对最为常见的一种报告——《AWR数据库报告》进行说明。

希望通过这篇文章,能方便大家更好地利用AWR,方便进行分析工作。

一、MAIN1Database Information2Snapshot Information(1)Sessions表示采集实例连接的会话数。

这个数可以帮助我们了解数据库的并发用户数大概的情况。

这个数值对于我们判断数据库的类型有帮助。

(2)Cursors/session每个会话平均打开的游标数。

(3)Elapsed通过Elapsed/DB Time比较,反映出数据库的繁忙程度。

如果DB Time>>Elapsed,则说明数据库很忙。

(4)DB Time表示用户操作花费的时间,包括CPU时间和等待事件。

通常同时这个数值判读数据库的负载情况。

具体含义db time = cpu time + wait time(不包含空闲等待)(非后台进程)*db time就是记录的服务器花在数据库运算(非后台进程)和等待(非空闲等待)上的时间。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、名词解释(1)SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。

(2)共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括:Library cache(共享SQL区)和Data dictionary cache(数据字典缓冲区)。

共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息。

(3)缓冲区高速缓存:Database Buffer Cache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能。

(4)大型池:Large Pool是SGA中一个可选的内存区域,它只用于shared server环境。

(5)Java池:Java Pool为Java命令的语法分析提供服务。

(6)PGA:Process Global Area是为每个连接到Oracle database的用户进程保留的内存。

二、分析与调整(1)系统全局域:SGA与操作系统、内存大小、cpu、同时登录的用户数有关。

可占OS系统物理内存的1/3到1/2。

a.共享池Shared Pool:查看共享池大小Sql代码SQL>show parameter shared_pool_size查看共享SQL区的使用率:Sql代码select(sum(pins-reloads))/sum(pins)"Library cache"from v$librarycache;--动态性能表LIBRARY命中率应该在90%以上,否则需要增加共享池的大小。

查看数据字典缓冲区的使用率:Sql代码select(sum(gets-getmisses-usage-fixed))/sum(gets)"Data dictionary cache"from v$rowcache; --动态性能表这个使用率也应该在90%以上,否则需要增加共享池的大小。

修改共享池的大小:Sql代码ALTER SYSTEM SET SHARED_POOL_SIZE =64M;b.缓冲区高速缓存Database Buffer Cache:查看共享池大小Sql代码SQL>show parameter db_cache_size查看数据库数据缓冲区的使用情况:Sql代码SELECT name,value FROM v$sysstat order by name WHERE name IN(''DB BLOCK GETS'',''CONSISTENT GETS'',''PHYSICAL READS'');SELECT * FROM V$SYSSTAT WHERE NAME IN('parse_time_cpu','parse_time_elapsed','parse_count_ hard');计算出来数据缓冲区的使用命中率=1-(physical reads/(db block gets+consistent gets)),这个命中率应该在90%以上,否则需要增加数据缓冲区的大小。

c.日志缓冲区查看日志缓冲区的使用情况:Sql代码SELECT name,value FROM v$sysstat WHERE name IN('redo entries','redo log space requests')查询出的结果可以计算出日志缓冲区的申请失败率:申请失败率=requests/entries,申请失败率应该接近于0,否则说明日志缓冲区开设太小,需要增加ORACLE数据库的日志缓冲区。

d.大型池:可以减轻共享池的负担,可以为备份、恢复等操作来使用,不使用LRU算法来管理。

其大小由数据库的'共享模式/db模式'如果是共享模式的话,要分配的大一些。

指定Large Pool的大小:Sql代码ALTER SYSTEM SET LARGE_POOL_SIZE=64Me.Java池:在安装和使用Java的情况下使用。

(2)PGA调整a.PGA_AGGREGATE_TARGET初始化设置PGA_AGGREGATE_TARGET的值应该基于Oracle实例可利用内存的总量来设置,这个参数可以被动态的修改。

假设Oracle实例可分配4GB的物理内存,剩下的内存分配给操作系统和其它应用程序。

你也许会分配80%的可用内存给Oracle 实例,即3.2G。

现在必须在内存中划分SGA和PGA区域。

在OLTP(联机事务处理)系统中,典型PGA内存设置应该是总内存的较小部分(例如20%),剩下80%分配给SGA。

OLTP:PGA_AGGREGATE_TARGET =(total_mem * 80%) * 20% = 2.5G在DSS(数据集)系统中,由于会运行一些很大的查询,典型的PGA内存最多分配70%的内存。

DSS:PGA_AGGREGATE_TARGET =(total_mem * 80%) * 50%在这个例子中,总内存4GB,DSS系统,你可以设置PGA_AGGREGATE_TARGET为1600MB,OLTP则为655MB。

b.配置PGA自动管理不用重启DB,直接在线修改。

SQL>alter system set workarea_size_policy=auto scope=both;System altered.SQL>alter system set pga_aggregate_target=512m scope=both;System altered.SQL>show parameter workareaNAME TYPE VALUE------------------------------------ ----------- ------------------------------workarea_size_policy string AUTO--这个设置成AUTOSQL>show parameter pgaNAME TYPE VALUE------------------------------------ ----------- ------------------------------pga_aggregate_target big integer536870912SQL>c.监控自动PGA内存管理的性能V$PGASTAT:这个视图给出了一个实例级别的PGA内存使用和自动分配的统计。

SQL>set lines 256SQL>set pages 42SQL>SELECT * FROM V$PGASTAT;NAME VALUE UNIT---------------------------------------------------------------- ---------- ------------ aggregate PGA target parameter 536870912 bytes--当前PGA_AGGREGATE_TARGET的值aggregate PGA auto target 477379584 bytes--当前可用于自动分配了的PGA大小,应该比PGA_AGGREGATE_TARGET 小global memory bound26843136 bytes--自动模式下工作区域的最大大小,Oracle根据工作负载自动调整。

total PGA inuse 6448128 bytestotal PGA allocated 11598848 bytes--PGA的最大分配maximum PGA allocated 166175744 bytestotal freeable PGA memory393216 bytes--PGA的最大空闲大小PGA memory freed back to OS 69074944 bytestotal PGA used for auto workareas 0 bytes--PGA分配给auto workareas的大小maximum PGA used for auto workareas 1049600 bytestotal PGA used for manual workareas 0 bytesmaximum PGA used for manual workareas 530432 bytesover allocation count1118--实例启动后,发生的分配次数,如果这个值大于0,就要考虑增加pga的值bytes processed 114895872 bytesextra bytes read/written 4608000 bytescache hit percentage 96.14percent--命中率16rows selected.--V$PGA_TARGET_ADVICESQL>SELECT round(PGA_TARGET_FOR_ESTIMATE/1024/1024) target_mb,ESTD_PGA_CACHE_HIT_PERCENTAGE cache_hit_perc,ESTD_OVERALLOC_COUNTFROM v$pga_target_advice;The output of this query might look like the following:TARGET_MB CACHE_HIT_PERC ESTD_OVERALLOC_COUNT---------- -------------- --------------------6323367125243025030337539050058060059070059080060090060010006101500670200076030008304000850可以看出当TARGET_MB 为375M是ESTD_OVERALLOC_COUNT=0,所以可以将PGA_AGGREGATE_TARGET设置成375M。

附:oracle SGA与PGA区别:SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。

它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。

相关文档
最新文档