如何决定SGA的大小(7.X,8.X,9.X,10.X)[讨论]_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 5312 | 回复: 0   主题: 如何决定SGA的大小(7.X,8.X,9.X,10.X)[讨论]        下一篇 
zhouqingfa
注册用户
等级:中士
经验:234
发帖:13
精华:0
注册:2012-6-8
状态:离线
发送短消息息给zhouqingfa 加好友    发送短消息息给zhouqingfa 发消息
发表于: IP:您无权察看 2012-6-8 16:34:40 | [全部帖] [楼主帖] 楼主

注意:这篇文章介绍的是Oracle7Oracle8数据库。Oracle的最新版本,最好使用提醒信息在STATSPACK/ AWR报告中,或查找V$ SHARED_POOL_ADVICE

注:255409.1脚本大小共享池使用的V $ shared_pool_advice
注:4061621.8错误4061621 - 共享池咨询不考虑PLSQL的对象,

目的:

    下面的内容解释了如何近似SGA的大小(系统整个部分)

范围和应用
    精确的计算SGA sizebased init.ora参数值是非常困难和耗费时间的。这是困难的,因为不同的端口在SGA中分配的数据结构的具体尺寸。它是耗时的,因为有许多多参数影响SGAsize。例如,任何参数,配置资源,如进程和会话的数量,将有一个SGA的大小的影响。

这篇文章主要集中于以下几点:

-一旦与运行时数据库连接,就会显示SGA的大小
-对不同的SGA的版本提出简略的概要
-如何根据init.ora参数来评估SGA的大小

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如何在8.0X,8i,9i10g中近似SGA的大小
===============================================================

这部分讨论Oracle8, Oracle8i, Oracle9i, and Oracle 10gOracle7在后面再讨论

显示SGA的大小
-----------------------

SGA的大小信息由启动的数据库来显示,它也能使用svrmgrl或者sqlplus来显示,看下面的例子。

8.0.X

- svrmgrl
connect internal
show sga
8.1.X
- svrmgrl or sqlplus /nolog
connect internal
show sga
9.X / 10g
- sqlplus
SQL*Plus: Release 9.0.1.0.0 - Production on Thu Aug 23 15:40:29 2001


c)版本2001oracle公司,已授权。

Enter user-name: sys as sysdba
Enter password:
Connected to:
Oracle9i Enterprise Edition Release 9.0.1.0.0 - Production
With the Partitioning option
JServer Release 9.0.1.0.0 - Production
SQL> show sga
Total System Global Area 72123504 bytes
Fixed Size 279664 bytes
Variable Size 67108864 bytes
Database Buffers 4194304 bytes
Redo Buffers 540672 bytes
Different sub-divisions of the SGA
----------------------------------
Sample from svrmgrl SHOW SGA:
Total System Global Area 23460696 bytes
Fixed Size 72536 bytes
Variable Size 22900736 bytes
Database Buffers 409600 bytes
Redo Buffers 77824 bytes
Total System Global Area
- Total in bytes of all the sub-divisions that makes up the SGA.


固定大小

包含一般信息数据库和实例,后台进程需要访问的状态 

没有用户数据存储在这里 

这个���域通常是不小于100K

变量大小
这部分由下面init.ora参数所影响的

shared_pool_size
large_pool_size
java_pool_size
- See 'Approximating Size of the SGA' section of this article for version
specific information.


数据库缓存区

-拥有从数据文件中读取数据块的副本

size = db_block_buffers * block size


重做缓存区

-  SGA中的一个循环缓冲区持有制成带来更多更棒数据库的更改信息 

强迫最低限度被设置为4倍的最大的数据库块大小为thehost操作系统。

注:从SGA内存结构移动到在10g.Reference的共享池:270935.1注意共享池,在10g的尺寸

近似SGA的大小
-----------------------------

8.0.X版本:

为了近似SGA的大小,可以使用下面的公式

((db_block_buffers * block size) +
(shared_pool_size + large_pool_size + log_buffers) + 1MB


8.1.X版本:

为了近似SGA的大小,可以使用下面的公式 :

((db_block_buffers * block size) +
(shared_pool_size + large_pool_size + java_pool_size + log_buffers) + 1MB


9.X/10g版本:

Oracle9i/Oracle 10g版本中,SGA以前可以被配置成静态的,而现在可以动态的配置

SGA动态的大小是有线面这些数据库初始化参数所决定的: DB_BLOCK_SIZE, DB_CACHE_SIZE,

SHARED_POOL_SIZE, and LOG_BUFFER.


oracle9i开始的时候,这个SGA框架是动态的。这就意味着下面的一些用于SGA大小的参数可能会在实例运行过程中改变。

缓冲区高速缓存 ( DB_CACHE_SIZE) --  标准块的高速缓存字节数大小

共享池 ( SHARED _POOL_SIZE) --  共享SQLPLSQL statements)的区域字节大小

大的连接池 (LARGE_POOL_SIZE) (default is 0 bytes) -- 使用共享服务系统大的连接池的字节大小为了session内存,信息缓冲并行执行并且为I/O高速缓冲备份和存储进程
LOG_BUFFER参数使用时,缓冲重做项重做log.It,是静态的参数和代表的SGAandcan非常小的部分只能通过停止并重新启动数据库读取此参数值从初始化参数文件thechanged改变(init.ora中)。

需要注意的是,即使你不能改变的MAX_SGA_SIZE参数valuedynamically,你有任何改变其三个dependentprimary参数选项:DB_CACHE_SIZESHARED_POOL_SIZELARGE_POOL_SIZE三思而后行内存动态调整调整。

(注:LARGE_POOL_SIZE不能够被动态地改变在Oracle9.0.1,它isanticipated将在下一个版本中动态)。


为了帮助您指定一个最佳的缓存值,您可以使用启用统计信息收集与不同的高速缓存大小,通过V$ DB_CACHE_ADVICE performanceview predictbehaviordynamicDB_CACHE_ADVICE参数。使用ALTER SYSTEM... SET子句...语句,使这个parameter.See Oracle9i/Oracle10g数据库性能指南和参考,更多使用此参数informationabout

Oracle9i开始,有一个创建表空间​​withmultiple块大小,并指定相应的每块大小的高速缓存大小的概念。 SYSTEM表空间中使用了一个标准的块大小和additionaltablespaces最多可以使用4个非标准的块大小。

指定标准块大小由DB_BLOCK_SIZE参数。 itscache大小DB_CACHE_SIZE参数指定。非标准块大小指定的CREATE TABLESPACEstatement BLOCKSIZE的条款。使用的符号isspecified每个相应的非标准块大小的高速缓存大小:DB_nK_CACHE_SIZE参数值NIS2481632字节。

标准块大小,被称为缺省的块大小,通常设置带来更多更棒的操作系统块大小,或多个保持原位大小,以字节为单位的大小相同。 DB_CACHE_SIZE参数,称为默认缓存大小,指定标准块大小(默认是48M字节)的高速缓存的大小。系统表空间使用标准块大小和默认的缓存大小。

无论是标准块大小或任何非标准块大小andtheir相关的高速缓存大小,可用于任何其他的表空间。 ,ifyou打算使用多个块大小在您的数据库存储设计,youmust至少在指定DB_CACHE_SIZEDB_nK_CACHE_SIZE parameterValue的,。您必须指定所有其他非标准块大小,你打算使用所有的子缓存。此块大小/缓存大小计划的让youuse四个不同的非标准你的表空间的块大小andlets指定各自的高速缓存大小为每个相应的块大小。

因为DB_BLOCK_SIZE参数的值可以改变重新creatingthe数据库,此参数值必须选择不变仔细andremain数据库的生命。 

(共享全局区)SGA的近似大小,使用下列公式计算:

DB_CACHE_SIZE + DB_KEEP_CACHE_SIZE + DB_RECYCLE_CACHE_SIZE + DB_nk_CACHE_SIZE
+ SHARED_POOL_SIZE + LARGE_POOL_SIZE + JAVA_POOL_SIZE + LOG_BUFFERS + 1MB
NOTE: ADD IN EACH DB_nk_CACHE_SIZE. THERE CAN BE UP TO 4 DB_nk_CACHE_SIZE
(2, 4, 8, 16, 32k) DEFINED. ONE OF THE BLOCK SIZES IS THE DEFAULT
BLOCK SIZE AND ITS CACHE SIZE IS DEFINED BY DB_CACHE_SIZE.


额外的一些信息
-----------------------

在显示SGA的重做缓冲区不匹配的init.oraparametersetting LOG_BUFFER

强迫最低��度被设置为4倍的最大的数据库块大小为thehost操作系统。有关详细信息,请参阅:注意30753.1 INIT.ORA参数LOG_BUFFER的“参考注

-  JAVA_POOL_SIZE不占显示SGAV $ sga.This是在一个固定在8.1.6的错误。

-  JAVA_POOL_SIZE8.1.5.The默认限制20000K.Ifinit.ora中指定的,它必须必须比1000K更大,或届时你会收到一个ORA-01078错误启动“处理初始化参数中的失败”。

-  JAVA_POOL_SIZE8.1.6.The默认的限制,可以在init.ora中设置20000K.This参数,但执行最低限度的is32768~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

oracle7中近似SGA的大小并且显示已经存在的SGA
===========================================================

(共享全局区)SGA的近似大小,使用下列公式计算:

( (db_block_buffers * block size) + shared_pool_size + log_buffers) /.9
Example (from 7.0.16 on PORT 2 HP-UX 9000):
From the init.ora
DB_BLOCK_BUFFERS = 200
LOG_BUFFERS = 8192
SHARED_POOL_SIZE = 3500000
Default Block Size = 2048 bytes
The Block Size is an Operating System specific default.
db_block_buffers * block size + shared_pool_size + log_buffers
( (200 * 2048) + 3500000 + 8192 ) / .9
409600 + 3500000 + 8192 = 3917792 bytes
dividing by 0.9 = 4,353,102 bytes or 4M
The division by .9 is used to take into account the variable portion of
the SGA -- this is only an approximation of the actual value.
Our calculations come up to 4353102 but the actual value is 4504072(see below).
To check the actual size of the SGA, issue these commands using either
sqldba or svrmgrl:
7.0.X - 7.2.X
% sqldba lmode=y
SQLDBA> connect internal
SQLDBA> show sga
7.1.X - 7.3.X
% svrmgrl
SVRMGR> connect internal
SVRMGR> show sga


输出例子:

Total System Global Area 4504072 bytes Fixed Size 37704 bytes
Variable Size 4048576 bytes
Database Buffers 409600 bytes
Redo Buffers 8192 bytes ('log buffers')
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论