在做sql查询的时候发现在2亿表中查询sql响应时间很慢,遂想修改sga
将出现的问题记录下来ORA-27102: out of memory
SQL> alter system set sga_max_size=5G scope=spfile;
System altered.
(这里需要注意在32位的win2003系统中我的内存是8g,但是分配给sga的最大内存不能超过1.7g,在64位系统可以)
导致出现ORA-27102
SQL> startup force
数据库启动不了,这里我找了自己的oracle本地home没有传说的spfile,将pfile文件夹中的
init.ora.118201118470文件进行编译启动,在重新打来sqlplus进入实例后
SQL> CREATE SPFILE FROM PFILE=\'E:\\ora9i\\admin\\eygle\\pfile\\init.ora\';
创建成功
在重新装载
SQL> startup force
启动成功。
我在修改的时候需要保证sga不能高于1.7g
所以又重新装载了遍
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ --------------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 1000M
sga_target big integer 300M
SQL> alter system set sga_max_size=1500m scope=spfile;
SQL> alter system set sga_target=1000m scope=spfile;
SQL> startup force
修改成功,数据库能正常访问!
SGA_TARGET:
在10g之前,SGA的各个内存区的大小都需要通过各自的参数指定,并且都无法超过参数指定大小的值,尽管他们之和可能并没有达到SGA的最大限制。此外,一旦分配后,各个区的内存只能给本区使用,相互之间是不能共享的。拿SGA中两个最重要的内存区Buffer Cache和Shared Pool来说,它们两个对实例的性能影响最大,但是就有这样的矛盾存在:在内存资源有限的情况下,某些时候数据被cache的需求非常大,为了提高 buffer hit,就需要增加Buffer Cache,但由于SGA有限,只能从其他区“抢”过来——如缩小Shared Pool,增加Buffer Cache;而有时又有大块的PLSQL代码被解析驻入内存中,导致Shared Pool不足,甚至出现4031错误,又需要扩大Shared Pool,这时可能又需要人为干预,从Buffer Cache中将内存夺回来。
有了这个新的特性后,SGA中的这种内存矛盾就迎刃而解了。这一特性被称为自动共享内存管理(Automatic Shared Memory Management ASMM),控制这一特性的,就仅仅是这个参数SGA_TARGE。设置这个参数后,你就不需要为每个内存区来指定大小了。SGA_TARGET指定了 SGA可以使用的最大内存大小,而SGA中各个内存的大小由Oracle自行控制,不需要人为指定。Oracle可以随时调节各个区域的大小,使之达到系统性能最佳状态的个最合理大小,并且控制他们之和在SGA_TARGET指定的值之内。一旦给SGA_TARGET指定值后(默认为0,即没有启动 ASMM),就自动启动了ASMM特性。
分享到:
相关推荐
Oracle数据库发生ORA-04031错误原因浅析及处理 Oracle数据库是甲骨文公司提供的一种分布式数据库管理系统,以分布式数据库为核心的软件产品。它具有完整的数据管理功能,作为一个关系数据库,它是一个非常实用的...
ORACLE修改SGA后无法启动的临时解决方法.比较实用的东西
ORA-27104: system-defined limits for shared memory was misconfigured –oracle的sga超过安装oracle配置的最大内存 ipcs -l —— Messages Limits ——– max queues system wide = 32768 max size of message ...
调整参数后引起,ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 3 2768M 的解决方案
sga调整过大oracle无法启动解决方案文档记录了LINUX环境下将ORACLE的SGA设置过大导致数据库无法启动的解决方案
"Oracle 11g调整物理内存提示ORA-00845 MEMORY_TARGET" Oracle 11g 中的内存自动管理机制 ===================================== Oracle 11g 中引入了一个新的内存自动管理机制,即 MEMORY_TARGET 参数,这个...
由于oracle.exe占用内存过高,修改SGA的大小后导致监听服务不能启动,数据库不能连接等一系列问题和错误,希望此资源能够帮你解决问题,或者给你带来帮助!
ORA-00064: 对象过大以至无法分配在此 O/S 这些错误代码都是与存储管理相关的,可能是由于存储管理、磁盘空间、文件系统等操作时出现的错误。 其他错误 ORA-00065: FIXED_DATE 的初始化失败 ORA-00066: LOG_FILES...
更改ORACLE SGA的详细步骤 如果修改后启动不了ORACLE,还原ORACLE初始设置的方法方法: 2、使用dos端登录oracle Sqlplus /nolog; Conn / as sysdba; 3、找 pfile,在 /.../admin/XXX(服务名)/pfile 下,init.ora....
oracle实例的内存(SGA和PGA)进行调整,优化数据库性
Oracle 实例内存(SGA 和 PGA)调整 Oracle 实例内存调整是 Oracle 数据库性能优化的重要方面。SGA(System Global Area)和 PGA(Process Global Area)是 Oracle 实例中的两个主要内存区域。本文将详细介绍 SGA 和 ...
正常情况下,Oracle SGA在32位操作系统下的最高上限是1.7GB;若要调到1.7GB以上,就会提示ORA-27102(out of memory)错误。
修改 SGA_TARGET 参数 8-24 禁用 ASMM 8-25 手动调整动态 SGA 参数的大小 8-26 程序全局区 (PGA) 8-27 自动 PGA 内存管理 8-29 PGA 管理资源 8-30 使用内存指导调整 SGA 的大小 8-31 使用内存指导调整 PGA 的...
Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...
当我把SGA设置为1.56G的情况下,Oracle.exe进程占用的内存达到1.6G时,Oracle的客户端就无法再连进去了,报“ora-12500”的错误。据说Oracle在32 bit windows平台上有1.7G的限制,但是我不知道需要调整什么参数让...
1、若数据库机器上没有装Console或者没有使用Console配置网络服务名.... 修改为: 代码如下: # listener.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\listener.ora # Gen
1 Oracle 结构组件 目标 1-2 基本结构概述 1-3 Oracle 服务器 1-4 Oracle 实例 1-5 建立连接和创建会话 1-6 Oracle 数据库 1-7 物理结构 1-8 内存结构 1-9 系统全局区(SGA) 1-10 共享池 1-12 库缓存 1-13 数据字典...
Oracle的常用命令,包含查看系统的SGA区的状态,查看系统的锁,过滤表清除SQL生产,查看表空间袋使用情况,查插入表的性能,等等,这些都是DBA常用的一些命令,希望能给一些朋友带来帮助!!!
Oracle 在 Windows 2003 下修改使用内存大于 1.7G 的步骤需要修改多个设置,包括 boot.ini 文件、Windows 注册表、初始化参数文件 init.ora 和注册表等,以便扩大 SGA 内存使用,并提高 Oracle 数据库管理系统的性能...
Oracle 11g体系结构深入剖析和运维管理(二)资源目录:【】10_SQL语句执行过程剖析【】11_SQL语句解析类型_硬解析_软解析【】12_shared内存块组成结构及4031错误产生原因分析【】13_共享SQL减少硬解析【】14_如何解决...