oracle的sga

                                                               sga

   

SGA的管理

■有三种方式:

          ●8i:SGA的总大小由所有内存组件大小之和决定,不能直接定义SCA大小。对内部组件大小的修改必须在数据库重起                    后 才能生为,所以叫做SGA的静态管理。

          ●9i: SGA总大小由初始化参数SGA_ MAX SIZE确定,各个内存组件大小之和不能超过这个参数。在这个大小之下,                      SGA 各个内存组件可以在不重起数据库的情况下直接修改大小,所以叫做SGA的动态管理。

          ●10g:  SGA大小既可以像9i一样动态管理,也可以实施SGA的自动管理,只需要设置初始化参数SGA_ TARGET, SGA                       各个内存组件  三就可以由数据库自动设置大小,设置的依据来源于系统自动收集的统计信息

 

 ■在9i以后,SGA的内部组件大小可以动态调整,也可以由数据库自动管理,在设置内存大小的时候,分配的基本单位是粒            度(granule)。Granule是一段连续的虚拟内存,大小取决于SGA _MAX SIZE的大小

           ●如果SGA_ MAX _SIZE小于128M, Granule为4M, 否则Granule为16M

           ●各个内存组件分配大小必须是Granule的整倍数

           ●整个SGA最小不小于3个Granule大小

■9i中的规则如下:

       ●linux/unix
             SGA<=12BM granutle 4M

             SGA >128M granule 16M   

      ●Windows
            SGA<=128M granule 4M

            SGA >128M granule 8M

■10g中的分配规则为

        ● linuxunix

        ●Windows
            SGA<=1G granute 4M否则16M

shared pool

■用于存储:

   ◆最近执行的SQL 语句

   ◆最近使用的数据定义
■由两个与性能相关的部分组成:

   ◆库缓存
   ◆数据字典缓存
■由參数SHARED POOL SIZE决定大小

库缓存

■存储最近使用的SQL和PL/SQL语句的信息

■共享最常用的语句

■管理上遵循LRU规则

■包括两个部分:
   ◆共享SQL区

   ◆共享PLSQL区
■大小由Shared Pool的大小决定

数据字典缓存■存储在数据库中最近使用的定义
■包括数据文件,表,索引,列,用户,权限和其他的数据库对象
■在分析阶段,服务器进程查找数据字典去验证对象的名字以及是否是合法访问
■对于查询和DML语句,如果数据字典的信息在缓存中能够提高响应时间大小由Shared Pool的大小决定

SGA中关键的内存片段。特别是性能与扩展上。
是sqI.pl/sql程序进行语法分析,编译,执行的内存区域。
库lbrary cache数据字典data dictionary cache,控制结构control structure组成。shared pool. size 决定大小。10G以后自动管理。
过小导致latch争用,ora-0431 错误。Lbrarycache 争用与等待。
>alter system set flush shared pool命令可清除shared pool内存中信息与我们相关的就是lthrancrache 库缪油或sal语句绍油了
用户提交一个sq语可,通过PGA转建到SGA, oracle 对册可进行分析.

■如果以前执行过,则按照以前执行的计划执行,通常是软分析[soft parse|或快速软分析

    ◆通过PCA提交Sql语句>parse语句>soft parse->执行语句- >通过PCA输出

■如果没执行过,oracle 开始分析语句的语法,语义,按照优化器规则获得最佳执行计划,并在内存中保存这个语句与之对应    的执行计划等相关信息,便于下次快速调用。

   ◆通过PGA提交Sql语句parse语句hard parse→分析与得到优化方案[CBOor RB0|→根据优化方案制定执行计划》执行语句    ◆一-通过PGA输出

数据高速缓存区

■暂存从数据文件中获得的数据块的数据映像

■同样遵循LRU算法管理内存
■当再次需要操作这些数据时可以从内存中直接获取和更新,语句执行效率能够大幅度的提高
■初始化参数DB_ BLOCK SIZE决定了数据块的大小,这也是数据库I/O的最小单位
■数据高速缓存区由多个独立的子缓存池构成,可以独立的设置大小:
    ◆Default池  DB CACHE SIZE
    ◆Keep池  DB KEEP CACHE SIZERecycle池  

    ◆DB RECYCLE CACHE SIZE

■只有defualt池可以被sga自动管理

                                                                                                SQL

Buffer 

Cache

的大小

配置

 SELECT component,current_size,min_size FROM v$sga_dynamic_components;

 

使用

advice

来确认

buffer

cache

的大小

 alter system set dby cache_ size=20M scope=memory;
SELECT size_for_estimate "Cache Size(MB)",size_factor,buffers_for_estimate "Buffers",
estd_physical_read_factor est_read_factor,
estd_physical_reads estd_phy_red,
estd_physical_read_time est_phy_read_t FROM v$db_cache_advice
WHERE NAME='DEFAULT'AND block_size=(SELECT VALUE FROM v$parameter WHERE NAME='db_block_size');

在0LTP系统中,对于DB_CACHE_SIZE的设置,推荐配置是:

DB_CACHE_SIZE=SGA_MAX_SIZE/2~ SGA_MAX_SIZE*2/3

Block

状态

0,FREE, no valid block image

1,XCUR, a current mode block, exclusive to this instance

2, SCUR, a current mode block, shared with other instances

3,CR,a consistent read (stale) block image

4,READ, buffer is reserved for a block being read from disk

5, MREC, a block in media recovery mode

6,IREC, a block in instance (crash) recovery mode

select O.object_name,
decode(state,0,'free',1,'xcur',2,'scur',3,'cr',4,'read',5,'mrec',6,'irec',7,'write',8,'pi')state,count(*) blocks
from x$bh b,dba_objects O
where b.obj=O.data_object_id
group by O.object_name, state 
order by blocks desc;

 

lru_flag

LRU_ FLAG=2,表示lru链的冷端

LRU_ FLAG=8,表示在LRU链的热端

LRU_ FLAG=0,表示没有标识

select class,flag,state,1ru_f1ag from x$bh where dbarfil=1 and dbablk = 30;

pool



 
     

 

 

select decode (wbpd.bp_id,1,'keep',2,'recycle',3,'default',4,'2k pool',5,'4k pool',6,'8k pool',7,'16k pool8,',8,'32k pool',
'unknown') pool,bh.owner,bh.object_name object_name,count(1) numOfBuffers 
from x$kcbwds wds,x$kcbwbpd wbpd,
(select set_ds,x.addr,o.name object_name,u.name owner from sys.obj$ o,sys.user$ u, x$bh X 
where o.owner#=u.user# and o.dataobj#=x.obj and x.state!=0 and o.owner#!=0) bh
where wds.set_id >=wbpd.bp_lo_sid and wds.set_id<=wbpd.bp_hi_sid
and wbpd.bp_size!= 0 and wds.addr=bh.set_ds  --and object_name='T2'
group by decode (wbpd.bp_id,1,'keep',2,'recycle',3,'default',4,'2k pool',5,'4k pool',6,'8k pool',7,'16k pool8,',8,'32k pool',
'unknown'),bh.owner,bh.object_name
order by 1, 4,3,2;

SELECT obj object,dbarfil file#,dbablk block,tch touches
FROM x$bh WHERE
tch>10 ORDER BY tch desc

 

例,

10%

 

 

 

 

 

 

 

select 
decode(state,0,'FREE',1,decode(lrba_seq,0,'AVAILABLE','BEING USED'),
3,'BEING USED',state) "BL0CK STATUS",
count(*) from x$bh
group by 
decode(state,0,'FREE',1,decode(lrba_seq,0,'AVAILABLE','BEING USED'),
3,'BEING USED',state)

 

最浪费

内存的

前10个

语句占

所有语

句的比

例,建

议控制

在5%

以内

 

 

 

 

 

select sum(pct_bufgets) "Percent" from 
(select rank() over ( order by buffer_gets desc)
as rank_bufgets,to_char(100*ratio_to_report(buffer_gets)over (),'999.99')
pct_bufgets from v$sqlarea) where rank_bufgets<11;

  
  
  
  
  

 

 

重做日志缓冲区■暂存数据库中所有数据块的改变
■内存管理方法是FIFO
■重做日志被用于提供数据恢复功能
■暂存重做日志的目的是为了提高语句的执行速度
■大小由参数LOG_ BUFFER决定,但这个内存区不能动态调整大小
大池

■大池是系统全局区中可选的一个内存区
■主要在下面几种情况下使用:
    ◆共享服务器的用户全局区(UGA)
    ◆使用RMAN作 备份恢复-|并行进程  09
■大小由参数LARGE POOL SIZE决定,也可以动态改变大小

java池

■是系统全局区中一个可选内存区。

■用于Java程序的解析 和执行
■大小由参数JAVA POOL_ SIZE决定,也可以动态调整
■如果granule是4M, 默认是24M: 如果granule是16M, 默认大小是32M如果在数据库创建时选择了安装JVM组件,那么这     个池必须配置

   
   

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL:日志知识点盘点

本篇内容包括&#xff1a;binlog&#xff08;二进制日志&#xff09;、redo log 以及 undo log 一、binlog&#xff08;二进制日志&#xff09; binlog 用于记录数据库执行的写入性操作(不包括查询)信息&#xff0c;以二进制的形式保存在磁盘中。binlog是mysql的逻辑日志&…

ROWNUM的使用

一个伪列看起来像是一个表中的列&#xff0c;但实际上并不保存在表中。你可以查询&#xff0c; 但是不能插入&#xff0c;修改和删除其中的值。一个伪列也类似于一个没有参数的函 数。但是在典型情况下&#xff0c;在结果集中可以为每一行返回相同的值&#xff0c;而伪列通 常为…

MySQL:主从相关知识点盘点

本篇内容包括&#xff1a;MySQL 主从复制简介、主从复制的原理以及主从搭建 一、MySQL 主从复制简介 在实际的生产中&#xff0c;为了解决Mysql的单点故障已经提高MySQL的整体服务性能&#xff0c;一般都会采用**「主从复制」**。 比如&#xff1a;在复杂的业务系统中&#x…

oracle导出expdp

expdp/impdp 是 oracle 10g 版本后推出的服务器端工具--数据泵&#xff0c;作用是为了将数据库中的逻辑对象&#xff0c;比如表、用户、全库、表空间进 行导入&#xff0c;导出 命令解析 ATTACH ATTACH [[schema_name.]job_name] schema_name 表示用户名,job_name 表示导出的作…

oracle导入impdp

expdp/impdp 是 oracle 10g 版本后推出的服务器端工具--数据泵&#xff0c;作用是为了将数据库中的逻辑对象&#xff0c;比如表、用户、全库、表空间进 行导入&#xff0c;导出REMAP_DATAFILE 该选项用于将源数据文件名转变为目标数据文件名, 在不同平台之间搬移表空间时可能需…

oracle高水位线

ORACLE在逻辑存储上分4个粒度: 表空间, 段, 区 和 块. 1.1 块: 是粒度最小的存储单位,现在标准的块大小是8K,ORACLE每一次I/O操作也是按块来操作的,也就是说当ORACLE从数据文件读数据时,是读取多少个块,而不是多少行. 每一个Block里可以包含多个row. 1.2 区:…

oracle检查点

检 查 点 概述 ■l当修改数据时&#xff0c;需要首先将数据读入内存中&#xff08;Buffer Cache&#xff09;&#xff0c;修改数据的同时&#xff0c;Oracle会记录重做信息&#xff08;Redo&#xff09;用于恢复。因 为有了重做信息的存在&#xff0c;Oracle不需要在提交时…

文献翻译:Java theory and practice: Fixing the Java Memory Model, Part 2

Java theory and practice: Fixing the Java Memory Model, Part 2 译&#xff1a;Java 理论与实践&#xff1a;修复 Java 内存模型&#xff0c;第 2 部分 翻译自&#xff1a;http://www.ibm.com/developerworks/library/j-jtp03304/&#xff08;原文写于2004年3月&#xff0…

oracle的buffercache

LRU空闲或者干净的链&#xff0c;可以从这里找到未修改的数据LRUW脏链&#xff0c;一个脏块同时挂到了lruw和检查点队列&#xff0c;LRUW分冷端和热端&#xff0c;冷端即为更新频率较低的一端&#xff0c;热端为更新频率较高的一端&#xff0c;dbwn写入数据文件时从冷端开始写入…

oracle的undo

Undo段中区的状态free expiredinactiveactive 显示UNDO区信息 SELECT extent_ id, bytes&#xff0c; status FROM dba_ _undo_ _extentsWHERE segment_ name SYSSMU1S ; 图解一一个事务的操作流程 Undo段的组成:段头、回滚块 事务ID …

SQLPlus命令详细说明

SQLPlus命令详细说明 2011-10-19 17:23:01 分类&#xff1a; Oracle 1. 执行一个SQL脚本文件 SQL>start file_name SQL> file_name 2. 对当前的输入进行编辑 SQL>edit 3. 重新运行上一次运行的sql语句 SQL>/ 4. 将显示的内容输出到指定文件 SQL> S…

oracle的EMCTL

Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。 C:\Users\Administrator>emctl start dbconsole Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to da tabase unique name. C:\Users\Administ…

RHEL7 修改SSH默认端口

1.查询seliunx [roottest10597 ~]# getenforce Enforcing [roottest10597 ~]# semanage port -l|grep ssh ssh_port_t tcp 222.设置selinux端口 [roottest10597 ~]# semanage port -a -t ssh_port_t -p tcp 10022 [roottest10597 ~]# semanage …

oracle预定义异常

NO_DATA_FOUND&#xff1a;执行查询无数据、引用一个末初使化的表、通过UTL_FILE包调用到尾的文件TOO_MANY_ROWS&#xff1a;采用SELECT INTO语句&#xff0c;但返回的记录超过了1条DUP_VAL_ON_INDEX:插入或者更新语句&#xff0c;与唯一索引相冲突TIMEOUT_ON_RESOURCE:等待资源…

常用系统函数oracle

单行函数日期函数ADD_MONTHS(date, n):用于从一个日期值增加或减少一些月份 MONTHS_BETWEEN(date1, date2):判断两个日期之间相差的月份 LAST_DAY(date): 函数返回包含日期的月份的最后一天 ROUND(date[,fmt]): 将日期d按照fmt指定的格式舍入&#xff0c;fmt为字符串 TRU…

oracle游标

游标&#xff08;cursor &#xff09;是一个私有的SQL工作区域,是一个指向上下文区的句柄或指针&#xff0c;位于内存中的 "临时表"。 游标是SQL的一个内存工作区&#xff0c;由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某…

找出占用cpu最高的线程

ps -eo %cpu,pid |sort -n -k1 -r | head -n 1| awk {print $2}| xargs top -b -n1 -Hp | grep COMMAND -A1 |tail -n 1 |awk {print $1}| xargs printf 0x%x ➊ 在命令行输入top&#xff0c;然后shiftp查看占用CPU最高的进程&#xff0c;记下进程号 ➋ 在命令行输入top -Hp…

系统学习SpringFramework:Spring 概述

本篇内容包括&#xff1a;Spring/SpringFrame 概述、Spring IOC 和 AOP 概述、Spring 全家桶内容概述&#xff08;包括&#xff1a;Spring Boot、Spring Cloud、Spring Cloud data flow …&#xff09;等内容&#xff01; 一、Spring/SpringFrame 概述 Spring 是一个生态体系&…

存储过程与函数oracle

存储在数据库中供所有用户程序调用的子程序叫做存储过程&#xff0c;存储函数。 存储过程是在大型数据库系统中&#xff0c;用PL/SQL语言编写的能完成一定处理功能的存储在数据库字典中的程序&#xff0c;它是一个命名的 PL/SQL 块&#xff0c;经编译后存储在数据库中&#xff…

系统学习SpringFramework:Spring IOC

本篇内容包括&#xff1a;IOC 和 DI 的概念、Spring 容器&#xff0c;即 BenaFactory 与 AplicationConext 等 IOC 相关内容。 一、IOC 和 DI 的概念 1、IOC IoC&#xff08;Inversion of control &#xff09;即“控制反转”&#xff0c;它是一种设计思想而非一个技术实现。…