关于oracle的SGA

合集下载

如何修改oracle中SGA大小

如何修改oracle中SGA大小
sysctl -p
注意:备机也要修改
2, 修改oracle中SGA大小
1, stop oracle monitor here
2, change SGA size
su - oracle
setenv ORACLE_SID sysdb
sqlplus / as sysdba
show parameter sga;
show parameter sga;
sga;
3, start oracle monitor here
说明:修改后最好做一次应用的双机切换测试,检查双机上oracle是否启动正常。
create pfile='/opt/oracle/initsysbackup.ora' from spfile;
alter system set sga_max_size=8G scope=spfile;
alter system set sga_target=8G scope=spfile;
kernel.shmmax = 10737418240 // 操作系统中单个共享内存的最大长度,这个参数要比SGA的大小要大,否则oracle将会使用几个小的共享内存,这会影响oracle的性能
kernel.shmmni = 4096 // 操作系统中允许的共享内存段的个数,这个值一般足够大,不需要修改
以及当前系统中正在使用的配置(有些时候系统正在使用的值和配置文件/etc/sysctl.conf中的不一致,尤其要注意):
sysctl -a |egrep "shmall|shmmax|shmmni"
修改系统共享内存参数:
按照上面配置修改文件/etc/sysctl.conf

设置SGA的原则以及修改它的大小

设置SGA的原则以及修改它的大小

设置SGA的原则以及修改它的大小一,设置SGA的原则:有时候会碰到在配置SGA中出现了问题,由于分配的内存过多,数据库启不起来了。

而且还要注意,在WINDOWS平台下,32位的操作系统,SGA 分配不能超过1.8G,64位的扛得住一些,所以我的数据库服务器换成64位的WINDOWS2003了。

内存结构=SGA(系统全局区)+PGA(程序全局区)SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。

它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写我们重点就是设置SGA,理论上SGA可占OS系统物理内存的1/2——1/3原则:SGA+PGA+OS使用内存 <总物理RAMSGA=((db_block_buffers*blocksize)+(shared_pool_size+larg e_pool_size+java_pool_size+log_buffers)+1MB1、SGA系统全局区.(包括以下五个区)A、数据缓冲区:(db_block_buffers)存储由磁盘数据文件读入的数据。

大小: db_block_buffers*db_block_sizeOracle9i设置数据缓冲区为:Db_cache_size原则:SGA中主要设置对象,一般为可用内存40%。

B、共享池:(shared_pool_size):数据字典,sql缓冲,pl/sql语法分析.加大可提速度。

原则:SGA中主要设置对象,一般为可用内存10%C、日志缓冲区:(log_buffer)存储数据库的修改信息.原则:128K ---- 1M 之间,不应该太大D 、JAVA池(Java_pool_size)主要用于JAVA语言的开发.原则:若不使用java,原则上不能小于20M,给30M通常就够了E、大池(Large_pool_size)如果不设置MTS,主要用于数据库备份恢复管理器RMAN。

Oracle数据库内存优化操作说明

Oracle数据库内存优化操作说明

Oracle数据库内存优化操作说明Oracle数据库内存优化是提高数据库性能的重要手段之一。

通过设置合理的内存参数,可以有效地削减IO操作,提高数据访问速度。

本文将介绍一些常见的Oracle数据库内存优化操作。

一、调整PGA参数PGA(Program Global Area)是每个数据库会话独有的内存区域,用于存储排序、哈希操作等临时数据。

调整PGA参数可以提高排序和连接操作的性能。

1. 设置PGA_AGGREGATE_TARGET参数该参数把握PGA内存的总量,一般建议设置为SGA的1/3到1/2。

可以通过以下命令设置:ALTER SYSTEM SET PGA_AGGREGATE_TARGET=XXXM;2. 调整SORT_AREA_SIZE参数该参数把握每个排序操作使用的PGA内存大小,一般建议设置为100MB到200MB。

可以通过以下命令设置:ALTER SESSION SET SORT_AREA_SIZE = XXXM;3. 调整HASH_AREA_SIZE参数第1页/共4页该参数把握每个哈希操作使用的PGA内存大小,一般建议设置为SORT_AREA_SIZE的1/2到1倍。

可以通过以下命令设置:ALTER SESSION SET HASH_AREA_SIZE = XXXM;二、调整SGA参数SGA(System Global Area)是Oracle数据库的全局共享内存区域,用于存储缓存数据、SQL执行方案等。

调整SGA参数可以提高数据访问的速度。

1. 调整SHARED_POOL_SIZE参数该参数把握缓存SQL语句的内存大小,一般建议设置为SGA的1/4到1/3。

可以通过以下命令设置:ALTER SYSTEM SET SHARED_POOL_SIZE=XXXM;2. 调整DB_CACHE_SIZE参数该参数把握数据库缓冲区的内存大小,一般建议设置为SGA的1/2到2/3。

可以通过以下命令设置:ALTER SYSTEM SET DB_CACHE_SIZE=XXXM;3. 调整LOG_BUFFER参数该参数把握数据库日志缓冲区的内存大小,一般建议设置为10MB到100MB。

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数据库内存优化操作说明

Oracle数据库内存优化操作说明

千里之行,始于足下。

Oracle数据库内存优化操作说明Oracle数据库的内存优化操作主要包括以下几个方面:1. 调整SGA和PGA的大小:- SGA(System Global Area)是Oracle数据库实例使用的内存区域,包括数据库缓存、共享池等。

可以通过修改SGA_TARGET和SGA_MAX_SIZE等参数来调整SGA的大小。

- PGA(Program Global Area)是每个进程独自使用的内存区域,包括排序区、hash区等。

可以通过修改PGA_AGGREGATE_TARGET参数来调整PGA的大小。

2. 合理配置各个内存区域的大小:- 根据具体的数据库负载情况,可以调整SGA组件的大小,如缓冲区大小、共享池大小等,以提高数据库的性能。

- 合理配置PGA区域的大小,可以减少排序操作的磁盘访问,提高查询效率。

3. 使用自动内存管理 AMM(Automatic Memory Management):- AMM是Oracle 11g及以上版本中提供的内存管理特性,可以自动分配SGA和PGA的大小。

可以通过设置MEMORY_TARGET参数来启用AMM。

4. 使用自动PGA管理:- Oracle 12c及以上版本中提供了自动PGA管理特性,可以根据需要自动调整PGA的大小。

可以通过设置PGA_AGGREGATE_TARGET参数来启用自动PGA管理。

5. 合理配置数据库连接池:第1页/共2页锲而不舍,金石可镂。

- 如果数据库中有大量的并发连接,可以考虑启用连接池来管理连接,减少连接的开销,提高数据库的并发性能。

6. 合理配置数据库缓存:- Oracle数据库中有多个缓存区域,如数据缓存、共享池等,可以根据具体的负载情况,调整缓存的大小,以提高查询性能。

需要注意的是,内存优化操作可能会引起数据库的性能变化,因此在进行内存优化之前,最好先进行充分的测试和评估,以确保优化操作是必要且有效的。

Oracle数据库参数优化

Oracle数据库参数优化

千里之行,始于足下。

Oracle数据库参数优化Oracle数据库参数优化是指通过调整数据库的配置参数,提高数据库的性能和稳定性。

下面是一些常见的Oracle数据库参数优化技巧:1. SGA参数优化:- 调整sga_target参数以控制SGA的大小。

SGA包括数据库缓冲区、共享池、重做日志缓冲区等,适当调整SGA的大小可以减少IO操作,提高数据库性能。

- 调整db_cache_size参数以增大数据库缓冲区的大小,提高数据块的访问速度。

- 调整shared_pool_size参数以增大共享池的大小,提高SQL语句的解析和执行效率。

2. PGA参数优化:- 调整pga_aggregate_target参数以控制PGA的大小。

PGA是用于处理SQL查询和排序的内存区域,适当调整PGA的大小可以减少磁盘IO操作,提高查询和排序的性能。

3. Redo日志参数优化:- 调整log_buffer参数以增大重做日志缓冲区的大小,减少频繁的重做日志刷新操作,提高数据库的写入性能。

- 调整log_checkpoint_timeout参数以控制重做日志刷新的频率,避免过于频繁的刷新。

4. 并行处理参数优化:- 调整parallel_max_servers参数以增大并行处理的资源限制,提高并行查询和并行DML操作的性能。

第1页/共2页锲而不舍,金石可镂。

- 调整parallel_min_servers参数以设置最小的并行处理资源数,避免并行操作的启动延迟。

5. SQL优化:- 使用合适的索引和优化的SQL语句,优化查询的执行计划。

- 使用绑定变量而不是直接将参数传递到SQL语句中,避免SQL重解析,提高性能。

6. 服务器参数优化:- 调整processes参数以增加数据库的并发连接数。

- 调整sessions参数以控制数据库的最大会话数。

- 调整open_cursors参数以增大打开游标的数量,避免游标溢出。

以上是一些常见的Oracle数据库参数优化技巧,但具体的优化策略需要根据实际情况进行调整,可以参考Oracle官方文档和专业的DBA建议。

oracle 12c 参数

oracle 12c 参数

oracle 12c 参数Oracle 12c参数Oracle是一款非常强大的数据库管理软件,可以为企业提供高效稳定的数据管理支持。

Oracle数据库的运行需要众多参数的配合,针对每个参数的设置可以使得Oracle 的运行更加稳定、高效。

在Oracle 12c中,有大量的数据库参数需要进行设置,本文将介绍一些关键的参数设置方法。

1、SGA参数设置SGA是Oracle中非常重要的内存区域,被用于缓存数据和元数据,减少磁盘I/O。

通过调整SGA大小可以实现提高访问性能的目的。

可以使用下面的命令来查询SGA参数的值:SQL> show parameter sga可以通过编辑初始化文件ORACLE_HOME/dbs/initoradb.ora或使用ALTER SYSTEM语句在SGA参数或组件级别上设置SGA参数。

设置SGA最重要的是备份与恢复,为此可以将SGA的大小保存在PFILE 或SPFILE中,以便在备份与还原过程中使用。

SGA参数的设置包括:shared_pool_size:由SQL语句共享池的大小决定。

在高流量情况下,共享池的尺寸应适当增加以提高查询的效率。

db_cache_size:用于缓存数据块和索引块的缓冲池大小。

它决定了数据块的内存使用量。

large_pool_size:在执行如连接服务器,排序操作等任务时,处理多个连接的顶层堆栈使用的内存。

java_pool_size:用于Java等对象的内存池大小。

2、PGA参数设置Oracle数据库中的PGA(Process Global Area)是实现Oracle“进程内内存”概念的关键,它由每个进程的私有内存组成。

PGA存储了一个进程的全局变量信息,设计合理的PGA大小,可以使得Oracle各个进程的访问效率更高。

可以使用下面的命令来查询PGA参数的值:SQL> show parameter pga可以通过编辑初始化文件ORACLE_HOME/dbs/initoradb.ora或者使用ALTER SESSION 语句在针对性的设置PGA参数。

Oracle的SGA与PGA

Oracle的SGA与PGA

Oracle的SGA与PGA一、SGA(system global area )SGA可以认为是instance中的全局共享区,Instance是由SGA和processes (进程)组成。

官方文档中的解释:A system global area (SGA)(系统全局区) is a group of shared memory structures that containdata and control information for one Oracle database instance(实例). If multiple users areconcurrently connected to the same instance, then the data in the instance's SGA is sharedamong the users. Consequently(因此), the SGA is sometimes called the shared global area(共享全局区).An SGA and Oracle processes constitute(构成) an Oracle instance. Oracle automaticallyallocates(分配) memory for an SGA when you start an instance, and the operating systemreclaims(收回) the memory when you shut down the instance. Each instance has its own SGA.The SGA is read/write. All users connected to a multiple-process database instance can read information contained within the instance's SGA, and several processes write to the SGA during execution of Oracle.查看SGA:SQL>show parameter sgaSQL>show sgaSQL>select * From v$sga;二、PGA(Process Global Area 或Private Global Area )PGA可以认为是为连接上数据库的用户开的一个私有内存区。

oracle_sga内存详解

oracle_sga内存详解

四:有多少并发连接
五:应用是OLTP类型还是OLAP类型
根据这几个问题的答案,我们可以粗略地为系统估计一下内存设置。那我们现在来逐个问题地讨论,首先物理内存多大是最容易回答的一个问题,然后操作系统估计使用多少内存呢?从经验上看,不会太多,通常应该在200M以内(不包含大量进程PCB)。
sort_area_size integer 65536
SQL>
在这部分内存中我们最关注的通常是sort_area_size,这是当查询需要排序的时候,数据库会话将使用这部分内存进行排序,当内存大小不足的时候,使用临时表空间进行磁盘排序。由于磁盘排序效率和内存排序效率相差好几个数量级,所以这个参数的设置很重要。这四个参数都是针对会话进行设置的,是单个会话使用的内存的大小,而不是整个数据库使用的。偶尔会看见有人误解了这个参数以为是整个数据库使用的大小,这是极其严重的错误。假如设置了MTS,则UGA被分配在large_pool_size,也就是说放在了共享内存里面,不同进程(线程)之间可以共享这部分内存。在这个基础上,我们假设数据库存在并发执行server process为100个,根据上面我们4个参数在oracle8.1.7下的默认值,我们来计算独立模式下PGA的大致大小。由于会话并不会经常使用create_bitmap_area_size、bitmap_merge_area_size,所以我们通常不对四个参数求和。在考虑到除这四个参数外会话所保存的变量、堆栈等信息,我们估计为2M,则100个进程最大可能使用200M的PGA。
Large_pool_size
对于大缓冲池的设置,假如不使用MTS,建议在20—30M 足够了。这部分主要用来保存并行查询时候的一些信息,还有就是RMAN在备份的时候可能会使用到。如果设置了MTS,则由于UGA部分要移入这里,则需要具体根据server process数量和相关会话内存参数的设置来综合考虑这部分大小的设置。

oracle 11g memory参数

oracle 11g memory参数

oracle 11g memory参数Oracle 11g中的内存参数一、背景介绍在Oracle数据库管理中,内存参数是非常重要的配置项之一。

通过调整合适的内存参数,可以提高数据库的性能和响应速度。

本文将介绍Oracle 11g中的一些常用的内存参数及其作用。

二、SGA_TARGET参数SGA(System Global Area)是Oracle数据库实例中的关键内存区域,用于存储数据缓冲区、共享池、重做缓冲区等。

SGA_TARGET参数用于指定SGA的大小,它决定了数据库能够使用的内存总量。

通过增加SGA_TARGET的值,可以提高数据缓存的命中率,从而提高查询性能。

三、PGA_AGGREGATE_TARGET参数PGA(Program Global Area)是Oracle数据库实例中用于执行SQL 语句的内存区域。

PGA_AGGREGATE_TARGET参数用于指定PGA的大小,它决定了数据库能够同时执行的SQL语句数量。

通过增加PGA_AGGREGATE_TARGET的值,可以提高并发查询的能力,从而提高系统的吞吐量。

四、SHARED_POOL_SIZE参数共享池是SGA中的一个重要组成部分,用于存储共享SQL和PL/SQL代码的执行计划、游标等信息。

SHARED_POOL_SIZE参数用于指定共享池的大小,它决定了数据库能够缓存的SQL和PL/SQL 代码的数量。

通过增加SHARED_POOL_SIZE的值,可以提高SQL语句的重用率,从而降低系统的响应时间。

五、BUFFER_POOL_KEEP和BUFFER_POOL_RECYCLE参数Oracle数据库中的数据缓冲区分为KEEP缓冲区和RECYCLE缓冲区。

BUFFER_POOL_KEEP参数用于指定KEEP缓冲区的大小,它用于缓存经常被访问的数据块。

BUFFER_POOL_RECYCLE参数用于指定RECYCLE缓冲区的大小,它用于缓存不常被访问的数据块。

oracle监控指标

oracle监控指标

oracle监控指标
Oracle数据库的监控指标包括:
1. CPU利用率:监控数据库服务器的CPU使用情况,包括执行SQL语句、查询和更新数据等操作的CPU使用情况。

2. 内存利用率:监控数据库服务器的内存使用情况,包括SGA(System Global Area)、PGA(Program Global Area)等共享和私有内存的使用情况。

3. I/O利用率:监控数据库服务器的磁盘I/O操作,包括读写数据文件、日志文件和临时文件的操作情况。

4. 网络流量:监控数据库服务器的网络传输情况,包括接收和发送数据的网络流量。

5. 锁和等待事件:监控数据库中的锁和等待事件,包括查询正在等待资源的会话和锁定资源的会话。

6. 数据库连接数:监控数据库的连接数,包括当前连接数、活动会话数、最大会话数等。

7. SQL执行性能:监控数据库中的SQL语句的执行性能,包括执行时间、CPU
消耗、磁盘和内存等待时间等。

8. 数据库事务:监控数据库的事务提交和回滚的情况,包括事务的提交数、回滚数等。

9. 数据库对象状态:监控数据库中的表、索引、分区等对象的使用情况,包括空间使用情况、上次分析时间、统计信息等。

10. 日志和备份:监控数据库的日志和备份情况,包括日志文件的写入速度、备份的状态和完成时间等。

以上是一些常见的Oracle数据库监控指标,可以通过使用Oracle的监控工具和性能管理工具来收集和分析这些指标,以便及时发现和解决数据库性能和健康问题。

SGA_MAX_SIZE与SGA_TARGET

SGA_MAX_SIZE与SGA_TARGET

Oracle的SGA 包括以下几个部分,可以通过show sga 命令或者是通过查看v$sga 视图来查看SGA 的大概组成:17:39:48 SQL> show sgaTotal System Global Area 1048576000 bytesFixed Size 1223392 bytesVariable Size 847250720 bytesDatabase Buffers 192937984 bytesRedo Buffers 7163904 bytes17:42:05 SQL> select * from v$sga;NAME VALUE------------------------------ -------------Fixed Size 1223392.00Variable Size 847250720.00Database Buffers 192937984.00Redo Buffers 7163904.00从上面可以大致的看到sga 包括一个固定区,一个可变区,一个数据库缓存和一个redo 缓存。

这些是比较笼统的信息,具体的SGA 是由以下几个部分组成的:- 数据缓冲(Buffer Cache )- 共享池(Shared Pool )- 大池(Large Pool )- Java池(Java Pool )- 流池(Streams Pool --- 10g 以后才有)- 重做日志缓冲(Redo Log Buffer )- 其他buffer caches (如KEEP, RECYCLE, and other block sizes cache 等)- Fixed SGA and other internal allocations。

其中,Shared Pool 、Java Pool 、Large Pool 和Streams Pool 这几块内存区的大小是相应系统参数设置而改变的,所以有通称为可变SGA (Variable SGA )。

oracle sga详解

oracle sga详解

oracle sga详解Oracle SGA详解Oracle SGA(System Global Area)是Oracle数据库的一个重要组成部分,它是在内存中分配的一块共享内存区域,用于存储数据库实例运行时所需要的信息。

SGA中存储了数据库缓冲区、共享池、重做日志缓冲区等关键组件,对于数据库的性能和稳定性起着至关重要的作用。

SGA的主要组件包括:1. 数据库缓冲区(Database Buffer Cache):用于存储从磁盘读取的数据块,以提高数据库查询的性能。

当用户查询数据时,Oracle 首先会在数据库缓冲区中查找,如果找到了相应的数据块,则直接返回给用户,避免了从磁盘读取的开销。

2. 共享池(Shared Pool):用于存储共享SQL和PL/SQL代码的执行计划(Execution Plan)、共享游标(Shared Cursor)和共享数据字典缓冲区(Shared Data Dictionary Cache)。

共享池的存在可以提高SQL查询的效率,避免重复解析和优化SQL语句的开销。

3. 重做日志缓冲区(Redo Log Buffer):用于存储数据库操作的重做日志信息,以保证事务的持久性。

当用户执行数据库操作时,Oracle会将操作的重做日志写入重做日志缓冲区,并定期将其刷新到磁盘上的重做日志文件中,以防止系统故障导致数据丢失。

4. Java池(Java Pool):用于存储运行在Oracle数据库中的Java 代码的执行结果、Java类和Java对象。

Java池的存在可以提高Java代码的执行效率,避免重复编译和加载Java代码的开销。

5. Large Pool:用于存储较大的内存分配请求,如排序操作和并行查询等。

Large Pool的存在可以提高这些特殊操作的性能,避免占用太多的SGA空间。

6. 其他组件:还包括Java大对象池(Java Large Object Pool)、固定区(Fixed Area)等,不同版本的Oracle数据库中可能会有所不同。

Oracle面试题

Oracle面试题

Oracle面试题
1.Oracle有哪些行触发器?
答案:Oracle有三种行触发器,分别是BEFORE、AFTER和INSTEAD OF触发器。

2.什么是Oracle中的SGA?主要组成结构和用途是什么?
答案:SGA是Oracle数据库中的共享内存区域,用于存储数据库实例的数据和控制信息。

SGA的主要组成结构包括共享池、数据缓冲区、重做日志缓冲区、大型池和Java池。

共享池存储了SQL语句和PL/SQL代码的解析树,数据缓冲区存储了最近访问的数据块,重做日志缓冲区存储了重做日志条目,大型池存储了会话信息,Java池存储了Java会话信息。

SGA的主要用途是提高数据库的性能,通过缓存访问和减少磁盘I/O操作来实现。

3.什么是分区表?
答案:分区表是指将一个表的数据按照某种规则分割成多个不同的物理位置进行存储,以便提高查询性能和数据管理。

分区表的主要优势包括提高查询性能、方便数据备份和恢复、简化数据管理。

PGA与SGA详解

PGA与SGA详解

PGA与SGA详解PGA与SGA详解收藏当用户进程连接到数据库并创建一个对应的会话时,Oracle服务进程会为这个用户专门设置一个PGA区,用来存储这个用户会话的相关内容。

当这个用户会话终止时,数据库系统会自动释放这个PAG区所占用的内存。

这个PGA区对于数据库的性能有比较大的影响,特别是对于排序操作的性能。

所以,在必要的时候合理管理PGA区,能够在很大程度上提高数据库的性能。

一、 PGA与SGA的区别。

PGA(程序缓存区)与SGA (系统全局区)类似,都是Oracle数据库系统为会话在服务器内存中分配的区域。

不过两者的作用不同,共享程度也不同。

SGA系统全局区顾名思义,是对系统内的所有进程都是共享的。

当多个用户同时连接到一个例程时,所有的用户进程、服务进程都可以共享使用这个SGA区。

为此这个SGA的主要用途就是为不同用户之间的进程与服务进程提供一个交流的平台。

除了这个作用,另外有一个重要的作用就是各种数据库的操作主要就是在这个SGA区内完成。

而PGA程序缓冲区则主要是为了某个用户进程所服务的。

这个内存区不是共享的,只有这个用户的服务进程本身才能够访问它自己的PGA区。

做个形象的比喻,SGA就好像是操作系统上的一个共享文件夹,不同用户可以以此为平台进行数据方面的交流。

而PGA就好像是操作系统上的一个私有文件夹,只有这个文件夹的所有者才能够进行访问,其他用户都不能够访问。

虽然程序缓存区不像其他用户的进程开放,但是这个内存区仍然肩负着一些重要的使命,如数据排序、权限控制等等都离不开这个内存区。

二、为排序设置合理的排序区大小。

当用户需要对某些数据进行排序时,数据库是如何处理的呢?首先,数据库系统会将需要排序的数据保存到PGA程序缓存区中的一个排序区内。

然后再在这个排序区内对这些数据进行排序。

如需要排序的数据有2M,那么排序区内必须至少要有2M的空间来容纳这些数据。

然后排序过程中又需要有2M的空间来保存排序后的数据。

oracle之sga介绍

oracle之sga介绍

oracle之sga介绍SGA即系统全局区域,是⼀组共享的内存结构,包含⼀个数据库实例的相关数据和控制信息,在实例启动时⾃动分配关闭是⾃动回收。

从10G开始,oracle提供了SGA的⾃动管理(AUTOMATIC SHARED MEMORY MANAGEMENT ,ASSM)新特性。

就是不需要⼿动设置shared pool ,buffer cacher等,只设置⼀个总的sga⼤⼩即可。

oracle⾃动调整⼤⼩。

show parameter sga_target 查询的value 为0即表⽰ASSM管理的⽅式,安装11G是默认开启⾃动管理的。

ASSM的启⽤:启⽤ASSM需要将statistics_level设置成typical或all,该参数的级别有三个:1、basic:收集基本的统计信息2、typical:收集⼤部分的统计信息,数据库默认设置3、all:收集全部统计信息alter system set statistics_level=all;或者 alter session set statistics_level=all;在启⽤ASSM后,如⼿动指定某⼀组值,则该值为该组件的最⼩值。

例如⼿动设置了sga_target=8G,shared_pool_size=1g,则在assm⾃动调整sga时,保证shared pool的最⼩值为1g。

关于sga_max_size指定内存中可以分配给sga的最⼤值,不允许动态调整,是⼀个固定值;sga_target是⼀个动态参数,其最⼤值为sga_max_size。

SGA包含的组件:共享池(shared pool);数据库缓冲区⾼速缓存(database buffer cache);⽇志缓冲区(redo buffer cache);⼤池;Java池;流池等。

SGA相关视图:v$sga:V$SGA这个视图包括了SGA的的总体情况,只包含两个字段:name(SGA内存区名字)和value(内存区的值,单位为字节)。

oracle实例的内存(SGA和PGA)进行调整,优化数据库性能

oracle实例的内存(SGA和PGA)进行调整,优化数据库性能
-----当前分配PGA的总大小,这个值有可能大于PGA,如果PGA设置太小.这个值接近select sum(pga_used_mem) from v$process.
total PGA allocated 52124672 bytes
-----这个值等于参数PGA_AGGREGATE_TARGET的值,如果此值为0,表示禁用了PGA自动管理。
aggregate PGA auto target 75220992 bytes
-----表示PGA还能提供多少内存给自动运行模式,通常这个值接近pga_aggregate_target-total pga inuse.
global memory bound 20971520 bytes
-----工作区执行的最大值,如果这个值小于பைடு நூலகம்M,马上增加PGA大小
total PGA inuse 30167040 bytes
PGA memory freed back to OS 0 bytes
total PGA used for auto workareas 8891392 bytes
maximum PGA used for auto workareas 22263808 bytes
total PGA used for manual workareas 0 bytes ---为0自动管理
maximum PGA used for manual workareas 0 bytes ---为0自动管理
over allocation count 0
select 1 from tab2 where a.col3 = b.col3
)
where ....

oracle process参数

oracle process参数

oracle process参数Oracle Process参数是指在Oracle数据库中,管理和控制进程和线程的一组参数。

利用这些参数,可以调整Oracle数据库的性能和资源管理,以便满足不同的应用程序需要。

在Oracle数据库中,每个进程或线程都由一个特定的进程参数集控制。

这些参数可以控制内存使用、CPU利用率、I/O使用和网络性能等方面。

此外,Oracle Process参数还可以影响数据库的安全性、可靠性和可维护性。

首先,一个关键的Oracle Process参数是sga_max_size。

该参数定义了包含系统全局区(SGA)的内存池的最大大小。

SGA是Oracle中的内存组件,它存储了共享的数据字典缓存区、共享SQL池以及其他重要的数据结构。

在调整SGA大小时,需要平衡内存使用、数据库负载和系统性能之间的关系。

如果SGA太小,数据库性能可能会受到影响;如果SGA太大,可能会导致系统内存不足和其他问题。

另一个重要的进程参数是processes。

这个数字定义了Oracle数据库系统中可以运行的并发进程的最大数量。

通常,processes参数的值应该根据系统硬件资源和数据库工作负载来配置。

如果系统使用的进程数过多,可能导致内存不足和性能下降;另一方面,如果进程数太少,可能会限制数据库并发性能和可扩展性。

还有一些其他的Oracle Process参数,如db_file_multiblock_read_count、db_block_size、max_data_files 等等。

这些参数可以帮助实现数据库性能调优,可用性管理和安全性控制等目标。

例如,db_file_multiblock_read_count参数定义一次I/O操作中读取的数据块数量。

可以增加此值以提高数据传输速度和减少I/O延迟。

而max_data_files定义了一个数据库中的最大数据文件数量,可以避免过度利用磁盘空间和系统资源。

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

这个使用率也应该在90%以上,否则需要增加共享池的大小。
2、缓冲区高速缓存:
它的大小要根据数据量来决定:
SGA=((db_block_buffers * block size)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+1MB
Java池:Java Pool为Java命令的语法分析提供服务
PGA:Program Global Area是为每个连接到Oracle database的用户进程保留的内存。
三、分析与调整:
1、系统全局域:
SGA与操作系统、内存大小、cpu、同时登录的用户数有关。可占OS系统物理内存的1/2到1/3,当然,如果服务器上只有oracle的话,
可以分配的更大一些,如果还有其他服务,如IIS等,那就要分的小一些。
1、共享池:
修改共享池的大小,ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
查看共享SQL区的使用率:
select(sum(pins-reloads))/sum(pins) "Library cache" from v$librarycache;--动态性能表
SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;
系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。
共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,
主要包括:Library cache(共享SQL区)和Data dictionary cache(数据字典缓冲区)
这个使用率应该在90%以上,否则需要增加共享池的大小。
查看数据字典缓冲区的使用率:
select (sum(gets-getmisses-usage-fixed))/sum(gets) "Data dictionary cache" from v$rowcache;--动态性能表
共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息
缓冲区高速缓存:Database Buffer Cache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能
大型池:Large Pool是SGA中一个可选的内存区域,它只用于shared server环境
select sum(pins) "请求存取数",sum(reloads) "不命中数",sum(reloads)/sum(pins) from v$librarycache
其中,pins,显示在库高速缓存中执行的次数;reload,显示在执行阶段库高速缓存不命中的数目,一般 sum(reloads)/sum(pins)的值应接近于零.如果大于1%就应该增加shared_pool_size的值, 来提高共享SQL区缓存可用的内存数量,减少不命中数.
申请失败率=requests/entries,申请失败率应该接近于0,否则说明日志缓冲区开设太小,需要增加ORACLE数据库的日志缓冲区。
3、日志缓冲区
SELECT name, value FROM v$sysstat WHERE name IN ('redo entries','redo log space requests')查看日志缓冲区的使用情况。
查询出的结果可以计算出日志缓冲区的申请失败率:
查看数据库数据缓冲区的使用情况:
SELECT name,value FROM v$sysstat WHERE upper(name) IN ('DB BLOCK GETS','CONSISTENT GETS','PHYSICAL READS')
计算出来数据缓冲区的使用命中率=1-(physical reads/(db block gets+consistent gets)),这个命中率应该在90Biblioteka 以上,否则需要增加数据缓冲区的大小。
相关文档
最新文档