Oracle 9i 性能大提升 SGA PGA 参数修改 &关于OS 64 32 Oracle 32 64 位概念 ...

 
Oracle9I  的SGA 内存管理中,默认 SGA_MAX_SIZE 通常都是100M,这导致了机器性能的浪费,通过调整
SGA 参数的参数值,可以将Oracle 的性能显著提高
--------------Oracle 9i 中修改SGA 参数 begin-----------
1、SGA 主要由三部分组成 :共享池(share pool),数据缓冲区(datebase buffer cache ) ,回滚日志缓冲区
(redo log buffer cache).
sga_max_size = shared_pool_size + db_cache_size + log_buffer

由上面可得主要涉及四个参数的修改
sga_max_size :sga 最大值
db_cache_size:数据库缓冲区
shared_pool_size:共享池值
log_buffer:回滚日志值
2、查看目前的值
2.1  SGA 值 约168M
SQL> show sga;
Total System Global Area  168894212 bytes
Fixed Size                   454404 bytes
Variable Size             142606336 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
2.2 sga 最大值 约168M
SQL> show parameters sga_max_size
NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
sga_max_size                         big integer
168894212
2.3 数据库缓冲区值 约25M
SQL> show parameter db_cache_size;
NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
db_cache_size                        big integer
25165824
2.4 共享池 约58M
SQL> show parameter SHARED_POOL_SIZE;
NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
shared_pool_size                     big integer
58720256
2.5 日志 约524K
SQL> show parameter log_buffer
NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
log_buffer                           integer
524288

3、 由以上可知,内存没有调到最优,更改参数
假定Oracle是   32   bit   ,服务器RAM大于2G   ,注意你的PGA的情况,,则建议  
shared_pool_size   +   data   buffer   +large_pool_size   +   java_pool_size   <   1.6G  

如果服务器RAM如果2G  
shared_pool_size   =   150M   ,data   buffer   =   1.2G 
 
 3.1 alter system set SGA_MAX_SIZE= 1600M scope=spfile;
 3.2 SQL>ALTER SYSTEM SET DB_CACHE_SIZE=1200M
 3.3 SQL>ALTER SYSTEM SET SHARED_POOL_SIZE=150M;
 
 4、 关于OS 64 32     Oracle 32 64 位概念
64 os 可以安装 32位 Oracle(32位的Oracle对内存始终是1.7g,网上有方法突破,但是要想想,Oracle为什么要做这个限制?)
(也可以安装32位 weblogic) ,但是32 os  不能安装64位 Oracle

参考文档1 关于 SGA的基础
http://hi.baidu.com/shirdrn/blog/item/7e6ba72df89ab831349bf78c.html
 

参考文档2 关于 关于SGA设置的一点总结   很好的关于SGA 的设置
  http://hydex.iteye.com/blog/186810

参考文档3 关于 SGA的参数修改的一些建议
http://topic.csdn.net/t/20031013/19/2351321.html

参考文档5  显示信息

http://mba.shengwushibie.com/itbook/BookChapter.asp?id=41233
 
 
   关于SGA 的设置
http://patmusing.blog.163.com/blog/static/135834960201001410357431/
 
 
------------   20120410 创建数据库内存分配  begin  ---------

 

1、9I 安装的时候默认值为

 

共享池: 48MB

缓冲区高速缓存:24MB

JAVA池:32M

大型池:8

PGA:24

合计为176MB

2\9I 安装的时候调整为100%

 

用于ORACLE的物理内存为(2047MB)的百分比

当百分率为100的时候

共享池: 333MB

缓冲区高速缓存:1000MB

JAVA池:32M

大型池:197

PGA:444

合计为2046MB

 

3、自定义分配 

IDEACENTER K330 物理内存 2.99GB

3.1    根据分配原则

 

  SGA不超过1.7GPGA+SGA不超过2G

  shared_pool_size  200M--300M      

  log_buffer : 128K ---- 1M

  large_pool_size 10M --- 50M     

  java_pool_size 30M           

  data buffer ,在做了前面的设置后,凡可以提供给oracle的内存

  PGA :   =(total_mem * 80%) * 20%     (这里的total_mem为机器的内存  total_mem * 80%=分配给ORACLE的内存=2046) 计算所得409

 

3.2    实际分配

3.2.1  SGA

 

shared_pool_size      分配250

large_pool_size  分配 50

java_pool_size             分配 32

data buffer     分配 1200 mb

 

3.2.2

PGA :       分配444

 

 以上合计为  2016

PGA 内存分配的文章 http://blog.csdn.net/zyxvic1981/article/details/7352869  有关于PGA的计算

 

 
------------   20120410 创建数据库内存分配  end ---------

--------------Oracle 9i 中修改SGA 参数 end-----------
 
 
------------------------------------ORA-04030   进程内存不足 begin --------------------
1、 原有系统 PAG 参数设置为 250M 
现修改为  pga_aggregate_target=600m 
alter system set pga_aggregate_target=600m scope=spfile;
2 、本机器物理内存大小3G ,Oracle 为 32位。
根据 SGA+PGA 约为总内存的80%,且SGA<1.7G的标准 ,设定参数为
sga_max_size =1600M
 pga_aggregate_target=600m  
 
---- 上面的方案没有解决问题 ,尝试 新的   begin ----------- 
SQL> alter system set dbwr_io_slaves=2 scope=spfile;
系统已更改。
SQL> alter system set backup_tape_io_slaves=true scope=spfile;
系统已更改。
SQL> alter system set sga_target=1400m;
系统已更改。
SQL> alter system set sga_max_size=1400m scope=spfile;
系统已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
Oracle 例程已经关闭。
SQL> alter system set large_pool_size=80m;
alter system set large_pool_size=80m
*
第 1 行出现错误:
ORA-01034: Oracle not available
进程 ID: 2156
会话 ID: 14 序列号: 39

SQL> startup
Oracle 例程已经启动。
Total System Global Area 1464717312 bytes
Fixed Size                  1377108 bytes
Variable Size             671091884 bytes
Database Buffers          780140544 bytes
Redo Buffers               12107776 bytes
数据库装载完毕。
数据库已经打开。
SQL> alter system set large_pool_size=80m;
系统已更改。
SQL> alter system set pga_aggregate_target=300m scope=spfile;
系统已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
Oracle 例程已经关闭。
SQL> startup
Oracle 例程已经启动。
Total System Global Area 1464717312 bytes
Fixed Size                  1377108 bytes
Variable Size             746589356 bytes
Database Buffers          704643072 bytes
Redo Buffers               12107776 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter pga;
NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
pga_aggregate_target                 big integer
300M
SQL> show parameter sga;
NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
lock_sga                             boolean
FALSE
pre_page_sga                         boolean
FALSE
sga_max_size                         big integer
1400M
sga_target                           big integer
1400M
---- 上面的方案没有解决问题 ,尝试 新的   end----------- 
 
 
   -----------scope  BEING--------
应该是scope=both和scope=spfile
Oracle 里面有个叫做spfile的东西,就是动态参数文件,里面设置了Oracle 的各种参数。所谓的动态,就是说你可以在不关闭数据库的情况下,更改数据库参数,记录在spfile里面。更改参数的时候,有4种scope选项。scope就是范围
++ scope=spfile 仅仅更改spfile里面的记载,不更改内存,也就是不立即生效,而是等下次数据库启动生效。有一些参数只允许用这种方法更改
++ scope=memory 仅仅更改内存,不改spfile。也就是下次启动就失效了
++ scope=both 内存和spfile都更改
++ 不指定scope参数,等同于scope=both.
   -----------scope  END --------
ORA-04030     参考链接 http://blog.csdn.net/ky000/article/details/6662845
http://blog.csdn.net/zhangout/article/details/6454794
------------------------------------ORA-04030 end --------------------
 
 
 PGA(Program Global Area程序全局区)是一块包含一个服务进程的数据和控制信息的内存区域 。它是Oracle在一个服务进程启动是创建的, 是非共享的(参考链接 http://www.cuug.com/xueyuanzhuanqu/jishuwenzhang/201110/jishuwenzhang-1112.html)
 
------------------------------------ORA-12528 begin--------------------
# listener.ora Network Configuration File: e:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (Oracle_HOME = e:\app\Administrator\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:e:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
    (SID_DESC =
      (GLOBAL_DBNAME = prod)
      (Oracle_HOME = e:\app\Administrator\product\11.2.0\dbhome_1)
      (SID_NAME = prod)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )
ADR_BASE_LISTENER = e:\app\Administrator
问题 解决  :加入这一段
    (SID_DESC =
      (GLOBAL_DBNAME = prod)
      (Oracle_HOME = e:\app\Administrator\product\11.2.0\dbhome_1)
      (SID_NAME = prod)
    )
 
------------------------------------ORA-12528  end --------------------
 
 
 
 
 

你可能感兴趣的:(数据库)