oracle中增加pga和sga

修改oracle数据库SGA和PGA大小

SGA的大小:一般物理内存20%用作操作系统保留,其他80%用于数据库。
SGA普通数据库可以分配40%-60%之间,PGA可以分配20%-40%之间。

1、以system的身份登录
并查看SGA信息:
SQL>show parameter sga;
查看PGA信息:
SQL>show parameter pga;

2、修改sga_target
SQL>alter system set sga_target=436M;

3、修改sga_max_size
SQL> alter system set sga_max_size=436M scope=spfile;
www.2cto.com
4、重启数据库使其生效:
SQL>shutdown immediate;
注意,重启前一定先完成上述两部操作,且sga_target不得大于sga_max_size,一般保持两者相等。否则可能导致数据库无法启动。
SQL>startup

5、查看SGA是否生效:
SQL>show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- -----
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 436M
sga_target big integer 436M

6,查询PGA大小
SQL> show parameter workarea
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy string AUTO

SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 90M

pga_aggregate_target默认特别小只90M
当然太小了,因为我们当前使用的是非生产环境,90M无所谓,因为我们没有什么连接,到底需要满足多少连接到底该设多大呢

一般是物理内存的80%*20%是16%,一般生产里面都是16G的空间,16G*16% = 2.56G 接近3G给pga

_pga_max_size参数:是每一个会话能够分配的最大空间的数量,这个值不是固定的

SQL>select ksppinm "Name", ksppstvl/1024/1024 ||‘M‘ "Value", ksppdesc "Desc" from x$ksppi x, x$ksppcv y where x.indx = y.indx and ksppinm =‘_pga_max_size‘;
结果
Name Value Desc
------------- ------ --------------------------------------------------
_pga_max_size 200M Maximum size of the PGA memory for one process

从结果看这个参数是200M(默认值),也就是对每个session来讲最大只能分200M,对当前来讲每个session最多在pga空间只能分200M

7,修改PGA的自动管理方式和大小
SQL> alter system set workarea_size_policy=auto scope=both;
SQL> alter system set pga_aggregate_target=3072m scope=both;
修改后重启数据库。

线上oracle数据库建议内存修改方式:

1),系统总内存:64G
2),目前数据库使用内存:
sga:2G
pga:90M
3),建议调整后的大小:
sga:30G
pga:10G

4),查看具体参数:

SQL> show parameter sga; --------------查看sga的区域大小
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 2G
sga_target big integer 2G

SQL> show parameter pga; --------------查看pga的默认区域大小
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 90M

SQL> show parameter workarea; ----------查看oracle内存区域的工作方式(确保是在自动的模式下)
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy string AUTO

5),修改参数:
SQL> alter system set sga_max_size=30720M scope=spfile; ---------------先修改最大pga的大小

SQL> shutdown immediate;----------- 重启,使得以上的修改生效
SQL> startup
SQL> alter system set sga_target=30720M; --------- 接着修改sga的大小(该大小不能超过以上设置的最大的pga的大小。否则报错)

SQL> alter system set pga_aggregate_target=10240M scope=both;

SQL> shutdown immediate;----------- 重启,使得以上的修改生效
SQL> startup

6),查看修改后的效果
SQL> show parameter sga;
SQL> show parameter pga;

时间: 2024-08-10 19:15:55

oracle中增加pga和sga的相关文章

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

一.名词解释 (1)SGA:SystemGlobal Area是OracleInstance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池.数据缓冲区.日志缓冲区. (2)共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括:Librarycache(共享SQL区)和Datadictionarycache(数据字典缓冲区). 共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息. (3)缓冲区高速缓存:

【转载】Oracle之内存结构(SGA、PGA)

[转自]http://blog.itpub.net/25264937/viewspace-694917/ 一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个服务进程.后台进程专有:每个进程都有一个PGA. 二.SGA 包含实例的数据和控制信息,包含如下内存结构: 1)Database buffer cache:缓存了从磁盘上检索的数据块. 2)Redo log buffer:缓存了写到磁盘之前的重

Oracle之内存结构(SGA、PGA)

一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个服务进程.后台进程专有:每个进程都有一个PGA. 二.SGA 包含实例的数据和控制信息,包含如下内存结构: 1)Database buffer cache:缓存了从磁盘上检索的数据块. 2)Redo log buffer:缓存了写到磁盘之前的重做信息. 3)Shared pool:缓存了各用户间可共享的各种结构. 4)Large pool:一个可选

Oracle中对现有表增加列

alter   table   Tablename   add(column1   varchar2(20),column2   number(7,2)...) Oracle中修改列名不可以,但是可以删除列,增加列 alter   table   Tablename   drop   column   column1   alter   table   Tablename   add(column1   varchar2(20),column2   number(7,2)...)

Oracle中ID的自动增加以及获取系统时间的小技巧

引自http://blog.csdn.net/lejuo/article/details/4479065 ID自动增加,就像MS- SQL Server里面创建表格时,给表的主键设置为自动增加一样. 在Oracle里面,通过如下的SQL语句实现:(plsql可以直接在sequence创建) -- Create sequence create sequence MSG_IN_ID_SEQminvalue 1maxvalue 999999999999999999999999999start with

ORACLE中给表、列增加注释以及读取注释

在ORACLE中给表.列增加注释以及读取注释 1.给表填加注释:SQL>comment on table 表名 is '表注释"; 2.给列加注释:SQL>comment on column 表.列 is '列注释'; 3.读取表注释:SQL>select * from user_tab_comments where comments is not null; 4.读取列注释:SQL>select * from user_col_commnents where comme

在Oracle Spatial中增加Web Mercator投影坐标系

参考资料: 1. 最重要的参考文章,基本上就是按这个做的!!!:https://www.inf.unibz.it/dis/wiki/doku.php?id=students:minnerebner:oracle:addingsrid . 2. 实例参考:http://www.cnblogs.com/cleverxy/archive/2012/04/28/2474563.html 步骤1是从0开始,这个应该有一些基础了,可以对照看一下里面对8801~8807.9802~9807的解释,然后再去数据

自己整理的oracle中常见的命令

自己整理的oracle中常见的命令: oracle11g已经不支持isqlplus了.内置了oracle sql developer 1-----用户多次登录错误,被锁定: ALTER USER username ACCOUNT UNLOCK: 2-----修改用户密码: alter user system identifid by manager; 3-----创建/删除用户: create user lisi identified by lisi; drop user lisi cascad

转-oracle中比较两表表结构差异和数据差异的方法

oracle中比较两表表结构差异和数据差异的方法 原作者:li2008xue2008ling 出处:http://blog.csdn.net 在工作中需要完成这么一个需求:比较两个表的表结构是否形相同,并找出差异.比较两个表中的数据是否相同,并找出差异数据? 分析:由于表结构中字段比较多,手工比较很浪费时间,而且不能保证不出错误.对于表中的数据那就能多了,更不能靠这种方式比较. 为了思考问题简单和方便测试,首先先建立两个测试表,并插入一些测试数据吧,sql如下: create table t_A