oracle实例内存详解
- 格式:docx
- 大小:354.70 KB
- 文档页数:8
oracle对应参数Oracle数据库的参数众多,每个参数都有其特定的作用和影响。
以下是一些常见的Oracle数据库参数及其说明:db_block_size:这是一个Oracle数据库块的大小(字节)。
该值在创建数据库时设置,而且此后无法更改。
其值范围通常为1024 - 65536(根据操作系统而定),默认值为2048(根据操作系统而定)。
db_cache_size:这是为高速缓存指定标准块大小的缓冲区。
其值范围至少为16M,默认值为48M。
compatible:此参数允许您使用一个新的发行版,同时保证与先前版本的向后兼容性。
其值范围默认为当前发行版,默认值由发行版确定。
parallel_automatic_tuning:这是并行执行的参数。
如果值为TRUE,将在大存储池之外指定消息缓冲区。
其值范围为TRUE或FALSE,默认值根据具体情况而定。
parallel_execution_message_size:这也是并行执行的参数。
如果值大于2048或4096,就需要更大的共享池。
其值范围根据具体情况而定,默认值也根据具体情况而定。
use_indirect_data_buffers:这是控制可支持超过4GB物理内存的32位平台对扩展缓冲区高速缓存机制的使用情况的参数。
其值范围为TRUE或FALSE,默认值为FALSE。
user_dump_dest:这是为服务器将以一个用户进程身份在其中写入调试跟踪文件的目录指定路径名的参数。
其值范围为一个有效的本地路径名、目录或磁盘,默认值根据操作系统而定。
utl_file_dir:这是允许数据库管理员指定PL/SQL文件I/O许可的目录的参数。
此外,还有一些其他重要的参数,如SERVICE_NAME和GLOBAL_DBNAME。
SERVICE_NAME是客户端要请求的服务名,出现在tnsnames.ora文件中;GLOBAL_DBNAME是服务器提供的服务名,出现在listener.ora文件中。
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数据库内存优化是提高数据库性能的重要手段之一。
通过设置合理的内存参数,可以有效地削减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。
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的执⾏速度。
什么是数据库,其实很简单,数据库就是存储数据的一种媒介。
比如常用的文件就是一种,在Oracle10G中,数据的存储有好几种。
第一种是文件形式,也就是在你的磁盘中创建一批文件,然后在这些文件中存储信息。
第二种就是磁盘阵列形式,这个是什么意思呢,这个就是说明数据库不是存放为某个文件,而是把一个或者多个磁盘格式化成Oracle的一种格式了,等于整个磁盘就是存放Ora cle数据库的,不能作为别的用途。
这样的优点是存储性能高,因为不再借助别的文件格式了,而是把整个磁盘都成为Oracle最适应的文件系统格式。
当然还可能有别的形式,比如网络什么的。
不过我们最常用的还是文件格式的,在文件格式中,数据库指的就是那些数据文件,控制文件以及REDO文件等等一系列文件。
而什么是Instance呢,Instance其实就是指的操作系统中一系列的进程以及为这些进程所分配的内存块。
在Oracle中,我们可以新建一个Oracle的Insta nce,这个时候虽然有了进程还有SGA等一系列的内存快,但是这个时候并没有把数据库文件读取进来。
所以只是一个实例,在后来,你可以通过命令手动或者自动地把数据库文件加载进我们的数据库Instance中,这个时候的数据库才可以让我们真正的开始访问操作。
所以说,数据库的应用如果想实现,数据库和数据库Instance是缺一不可的,如果只有数据库的那些文件,那么,只能代表数据在这个文件中,但是我们无法直接进行操作。
而如果只有数据库Instance,那么我们虽然可以急性操作,但是也不知道操作哪些数据,操作生成的数据也无法保存等等。
所以,当一个Or acle Instance真正Load了一个Oracle Database了以后,数据库才可以被我们使用。
在这里要注意一点的是,Oracle的实例在启动以后,只能load一次数据库,如果想把数据库与Instance断开,然后再重新挂在一个数据库Instance,那么就需要你首先把数据库Instance进程结束,然后重新建立这个instance的一个进程,再load另外一个数据库。
oracle 存储过程优秀例子Oracle存储过程是一种在数据库中存储并可以被重复调用的程序单元。
它可以用于实现复杂的业务逻辑,提高数据库的性能和安全性。
下面列举了十个优秀的Oracle存储过程例子。
1. 用户注册存储过程该存储过程可以用于用户注册过程的验证和处理。
它可以检查用户提交的信息是否有效,并将用户信息插入到用户表中。
如果有错误或重复信息,它会返回相应的错误消息。
2. 商品库存更新存储过程该存储过程用于处理商品出库和入库的操作。
它会更新商品表中的库存数量,并记录相应的操作日志。
如果库存不足或操作失败,它会返回错误消息。
3. 订单生成存储过程该存储过程用于生成订单并更新相关表的信息。
它可以检查订单的有效性,计算订单总金额,并将订单信息插入到订单表和订单明细表中。
如果有错误或重复订单,它会返回相应的错误消息。
4. 日志记录存储过程该存储过程用于记录系统的操作日志。
它可以根据传入的参数,将操作日志插入到日志表中,并记录操作的时间、操作人和操作内容。
这样可以方便后续的审计和故障排查。
5. 数据备份存储过程该存储过程用于定期备份数据库中的重要数据。
它可以根据预设的时间间隔,将指定表的数据导出到备份表中,并记录备份的时间和备份人。
这样可以保证数据的安全性和可恢复性。
6. 数据清理存储过程该存储过程用于定期清理数据库中的过期数据。
它可以根据预设的条件,删除指定表中的过期数据,并记录清理的时间和清理人。
这样可以减少数据库的存储空间和提高查询性能。
7. 权限管理存储过程该存储过程用于管理数据库中的用户权限。
它可以根据传入的参数,为指定用户或角色分配或撤销相应的权限。
同时,它可以记录权限的变更历史,以便审计和权限回溯。
8. 数据统计存储过程该存储过程用于统计数据库中的数据。
它可以根据预设的条件,查询指定表中的数据,并根据统计规则生成相应的统计报表。
这样可以方便用户对数据进行分析和决策。
9. 数据导入存储过程该存储过程用于将外部数据导入到数据库中。
oracle 资源配置参数(实用版)目录1.Oracle 简介2.Oracle 资源配置参数的作用3.Oracle 资源配置参数的分类4.Oracle 资源配置参数的具体设置方法5.Oracle 资源配置参数的优化建议正文一、Oracle 简介Oracle 是一款广泛应用于企业级数据管理的关系型数据库管理系统。
其性能优越、安全性高、可扩展性强,成为众多企业的首选数据库解决方案。
在 Oracle 数据库中,资源配置参数对于优化数据库性能至关重要。
二、Oracle 资源配置参数的作用Oracle 资源配置参数是用于调整数据库系统中各种资源的分配和优化的重要手段。
合理的资源配置可以提高数据库性能,降低系统故障率,保证数据的安全与稳定。
三、Oracle 资源配置参数的分类Oracle 资源配置参数主要分为以下几类:1.CPU 资源配置参数:用于调整数据库系统中 CPU 资源的分配,如CPU 使用率、I/O 使用率等。
2.内存资源配置参数:用于调整数据库系统中内存资源的分配,如SGA(共享内存区)、PGA(程序全局区)等。
3.存储资源配置参数:用于调整数据库系统中存储资源的分配,如数据文件、控制文件、日志文件等。
4.网络资源配置参数:用于调整数据库系统中网络资源的分配,如TCP 连接数、最大客户端连接数等。
四、Oracle 资源配置参数的具体设置方法1.CPU 资源配置参数设置:可以通过调整 Oracle 实例的 SGA 和PGA 参数,以及调整操作系统的资源分配来优化 CPU 资源配置。
2.内存资源配置参数设置:可以通过调整 SGA 和 PGA 的大小,以及调整操作系统的内存分配策略来优化内存资源配置。
3.存储资源配置参数设置:可以通过调整数据文件、控制文件和日志文件的大小,以及调整文件系统的磁盘空间分配来优化存储资源配置。
4.网络资源配置参数设置:可以通过调整 Oracle 实例的连接参数,以及调整操作系统的网络配置来优化网络资源配置。
一、概述Oracle数据库是目前全球使用最广泛的关系型数据库管理系统之一,它提供了强大的数据管理和处理功能,被广泛应用于企业级应用中。
Oracle数据库实例是Oracle数据库的核心概念之一,它在Oracle数据库运行过程中起着至关重要的作用。
本文将深入探讨Oracle数据库实例的概念、特点及其在数据库运行中的作用。
二、Oracle数据库实例的概念1. Oracle数据库实例的定义Oracle数据库实例是指在数据库启动时,Oracle进程和内存结构的集合。
它包括了一系列的进程和内存结构,用于管理数据库的数据访问、事务处理、共享资源控制等功能。
2. Oracle数据库实例的特点(1)独立性:每个数据库实例都是相互独立的,它们可以在同一服务器上运行,也可以在不同的服务器上运行。
(2)并发性:Oracle数据库实例能够处理大量的并发访问请求,保证了数据库的高效运行。
(3)持久性:Oracle数据库实例是持久的,一旦启动,它将一直运行,直到被关闭或者服务器宕机。
三、Oracle数据库实例的组成1. 进程:Oracle数据库实例包括了多个关键进程,如后台进程、前台进程等,用于处理用户的请求、管理数据缓冲池、执行SQL语句等。
2. 内存结构:Oracle数据库实例的内存结构包括了SGA(System Global Area)和PGA(Program Global Area),SGA用于存储全局共享的数据和控制信息,PGA用于存储每个进程私有的数据和控制信息。
四、Oracle数据库实例的作用1. 数据访问管理:Oracle数据库实例负责管理用户的数据访问请求,包括读取数据、更新数据、删除数据等操作。
2. 事务处理:Oracle数据库实例支持ACID(原子性、一致性、隔离性、持久性)事务功能,保证了数据库的数据完整性和一致性。
3. 共享资源控制:Oracle数据库实例负责管理数据库中的共享资源,如锁、缓存等,保证了多个用户之间对数据库的安全访问。
一、名词解释(1)SGA:SystemGlobal Area是Oracle Instance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。
(2)共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括:Librarycache(共享SQL区)和Datadictionarycache(数据字典缓冲区)。
共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息。
(3)缓冲区高速缓存:DatabaseBufferCache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能。
(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代码ALTERSYSTEMSET SHARED_POOL_SIZE =64M;b.缓冲区高速缓存DatabaseBufferCache:查看共享池大小Sql代码SQL>show parameter db_cache_size查看数据库数据缓冲区的使用情况:Sql代码SELECTname,valueFROM v$sysstat orderbynameWHEREnameIN(''DB BLOCK GETS'',''CONSISTENTGETS'',''PHYSICALREADS'');SELECT * FROM V$SYSSTAT WHERENAMEIN('parse_time_cpu','parse_time_elapsed','parse_count_ hard');计算出来数据缓冲区的使用命中率=1-(physicalreads/(db block gets+consistent gets)),这个命中率应该在90%以上,否则需要增加数据缓冲区的大小。
c.日志缓冲区查看日志缓冲区的使用情况:Sql代码SELECTname,valueFROM v$sysstat WHEREnameIN('redo entries','redo log space requests')查询出的结果可以计算出日志缓冲区的申请失败率:申请失败率=requests/entries,申请失败率应该接近于0,否则说明日志缓冲区开设太小,需要增加ORACLE数据库的日志缓冲区。
d.大型池:可以减轻共享池的负担,可以为备份、恢复等操作来使用,不使用LRU算法来管理。
其大小由数据库的'共享模式/db模式'如果是共享模式的话,要分配的大一些。
指定Large Pool的大小:Sql代码ALTERSYSTEMSET 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>altersystemset workarea_size_policy=autoscope=both;System altered.SQL>altersystemset pga_aggregate_target=512mscope=both;System altered.SQL>show parameter workareaNAMETYPEVALUE------------------------------------ ----------- ------------------------------workarea_size_policy stringAUTO--这个设置成AUTOSQL>show parameter pgaNAMETYPEVALUE------------------------------------ ----------- ------------------------------pga_aggregate_target big integer536870912SQL>c.监控自动PGA内存管理的性能V$PGASTAT:这个视图给出了一个实例级别的PGA内存使用和自动分配的统计。
SQL>set lines 256SQL>set pages 42SQL>SELECT * FROM V$PGASTAT;NAMEVALUE UNIT---------------------------------------------------------------- ---------- ------------ aggregate PGA target parameter 536870912 bytes--当前PGA_AGGREGATE_TARGET的值aggregate PGA auto target 477379584 bytes--当前可用于自动分配了的PGA大小,应该比PGA_AGGREGATE_TARGET 小globalmemorybound26843136 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 forauto workareas 0 bytes--PGA分配给auto workareas的大小maximum PGA used forauto workareas 1049600 bytestotal PGA used formanual workareas 0 bytesmaximum PGA used formanual 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>SELECTround(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 likethefollowing: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服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。
PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反,PGA 是只被一个进程使用的区域,PGA 在创建进程时分配,在终止进程时回收。