`
qqdwll
  • 浏览: 136656 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle 更改SGA, Memory target

阅读更多
   本想玩玩更改 Oracle SGA的。 没想到碰到的事情还不少。 下面就来说说这个可怕的过程。

开始, 更改sga成功。
SQL> sqlplul /nolog
SQL> conn as sysdba
SQL>   alter system set sga_max_size=1500m scope=spfile;


可当我重启数据库的时候却悲剧了, 数据库启动失败。 提示某些参数设置太小。 下面就开始了恢复数据库的历程了 。

环境:
Oracle: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production

OS:
HP-UX B.11.31
Version:   U (unlimited-user license)


   刚开始, 按照数据库的错误提示, 某些值设置小,(例如 sga_max_size)。于是就在目录 。。。\admin\sid\pfile\创建了一个pfile 文件init.ora, 内容是:
SPFILE='$Oracle_HOME\dbs\spfilesid.ora'
sga_max_size=1800m


  在sqlplus 里面, 继续启动数据库

startup pfile=init.ora


大家主要路径, 我用的是相对路径。 可仍然启动失败, 说其他的参数设置的太小。

这时候, 我想如果继续这样设置下去的话, 那我的设置多少具体的参数啊。 而且每一个具体内存参数的大小, 我也不太清楚设置多少为最佳。

突然想起来, Oracle11g, 是有自动内容管理的Automatic Memory Management (AMM)的。 我只要设置MEMORY_TARGET 和 MEMORY_MAX_TARGET的值就好了.

Oracle自动帮我们优化里面每种类型的内存大小。 像SGA, PGA。 SGA中的shared pool,  buffer cache, large pool, java pool  和其它。

这里简单的引入下 MEMORY_TARGET和MEMORY_MAX_TARGET的概念。
MEMORY_TARGET specifies the Oracle system-wide usable memory.
MEMORY_MAX_TARGET (…) decide on a maximum amount of memory that you would want to allocate to the database for the foreseeable future.

其实这写值的大小限制, 还跟我们mount上的资源大小有关。 这个就飘过。 大家可以看看这篇文章, 关于那两个值大小可以设置为多大及可能空间不足的情况下的解决方案 [url] http://www.ora600.be/news/oracle-11g-memorytarget-memorymaxtarget-and-devshm[/url]

接下来, 把pfile里面的sga_max_size=1800m 删掉。 现在的内容是:
SPFILE='$ORACLE_HOME/dbs/spfileslamdev.ora'
memory_max_target=3000M
memory_target=2800M



改好后, 在sqlplus里 启动数据库:
SQL> startup pfile=init.ora


这下数据库终于可以成功启动了。 哈哈

SQL> show parameter sga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 3008M
sga_target                           big integer 2512M




但别高兴的太早, 还是shutdown 再 startup 下比较保险。

SQL> shutdown immediate

数据库成功停掉。
SQL> shartup


这次, 数据库更第一次一样, 还是失败。 这下是因为没有把更改的东西写进spfile。 只要重来:
SQL>startup pfile=init.ora


但这次也有错误, 提示share空间不够。 问题还挺多哈。

我以前有看过类似的错误, 大概是 share里的东西还在运行。 这个有workaround.

先把spfile copy 一份, 然后打开spfile进行更改保存。 随便改, 因为我们就是要破坏spfile。 改好后, 启动数据库
SQL>startup

这时肯定是失败的。 然后把我们之前备份的那个spfile恢复。 从pfile启动:
SQL>startup pfile=init.ora


这下可以成功启动了。 把内容更改进spfile:

SQL>alter system set memory_max_target=3000m scope=spfile;
... 成功更改
SQL>alter system set memory_target=2800m scope=spfile;
... 成功更改


这下都做好了, 停掉数据库再启动。 一切ok了。  随便玩玩, 害的我晚饭推迟3个小时。



  
1
0
分享到:
评论

相关推荐

    更改ORACLE SGA的详细步骤

    注意:在 Oracle 11g 中,`sga_max_size` 不能大于 `memory_max_size`。 3. **重启数据库实例**: 修改参数后,需要立即关闭并重新启动数据库实例以应用更改: ``` shutdown immediate; start up; ``` 4. **...

    oracle11g修改SGA大小后报错的详细解决方案.docx

    6. 在修改 SGA 大小时,需要注意 SGA_MAX_SIZE、SGA_TARGET、MEMORY_TARGET 和 MEMORY_MAX_TARGET 的值的关系,确保其协调一致。 结论 修改 SGA 大小需要谨慎,需要根据实际情况进行调整,避免引发一系列错误。...

    Oracle 报错ORA-00845 MEMORY_TARGET not supported on this system

    MEMORY_TARGET是Oracle 11g引入的一个动态内存管理特性,用于自动管理SGA和PGA内存的大小。 首先,需要了解MEMORY_TARGET参数的作用。在Oracle中,SGA(System Global Area)和PGA(Program Global Area)是两个...

    oracle11G调整物理内存提示ORA-00845 MEMORY_TARGET

    "Oracle 11g调整物理内存提示...我们还讨论了 Oracle 11g 中的内存管理机制,包括 MEMORY_TARGET、MEMORY_MAX_TARGET 和 SGA_TARGET 三个参数的作用。通过正确地设置这些参数,可以提高 Oracle 数据库的性能和稳定性。

    Oracle_SGA

    - **自动内存管理(Automatic Shared Memory Management, ASMM)**:如果设置了`SGA_TARGET`参数为非零值,则会启用ASMM。这允许Oracle根据内存需求自动调整SGA中自动管理的组件大小。 - **启用条件**:要启用ASMM,...

    memory_target 解决方案

    当`MEMORY_TARGET`被设置为非零值时,Oracle会自动管理SGA(System Global Area)和PGA(Program Global Area)之间的内存分配,确保整个实例的内存使用不会超出设定的目标值。这种方式比传统的固定内存分配方式更灵活,...

    调整参数后引起,ORA-00838: Specified value of MEMORY_TARGET is too small

    调整参数后引起,ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 3 2768M 的解决方案

    根据系统类型、DB版本和OS内存自动计算Oralce建议的memory_target、SGA和PGA大小

    根据系统类型、DB版本和OS内存自动计算Oralce建议的memory_target、SGA和PGA大小

    oracle memory manage 1

    MEMORY_TARGET = SGA_TARGET + max(PGA_AGGREGATE_TARGET, maximum PGA allocated) = 272M + max(90M, 120M) = 392M (272M + 120M) ``` ### 设置`MEMORY_MAX_TARGET` 为了防止数据库实例消耗过多的系统资源,...

    oralce SGA的自动管理、监控实现.docx

    1. **动态内存管理**:Oracle 11g的动态内存管理是通过两个关键参数来实现的:`Memory_target` 和 `Sga_target`。 - 当`Memory_target`和`Sga_target`都为0时,SGA的自动管理不启用。 - 如果`Memory_target`为0...

    oracle memory manage

    MEMORY_TARGET = sga_target + MAX(pga_aggregate_target, maximum PGA allocated) ``` - 其中,假设 `sga_target` 的值为272M,`pga_aggregate_target` 的值为90M,`maximum PGA allocated` 的值为120M,则: `...

    oracle自动内存管理

    当设置了`MEMORY_TARGET`时,Oracle会自动管理SGA和PGA的内存分配,以确保整个实例的内存使用效率最大化。 2. **`MEMORY_MAX_TARGET`**:该参数定义了数据库实例可以使用的最大物理内存上限,其值应大于或等于`...

    oracle学习(内存参数设置)

    Oracle可以随时调节各个区域的大小,使之达到系统性能最佳状态的最合理大小,并且控制他们之和在SGA_TARGET指定的值之内。 在10g中,可以使用一个新参数SGA_TARGET来设定实例所需的SGA最大值,并替代以上参数。假设...

    Oracle修改内存使用情况

    可以使用`V$PGA_TARGET_ADVICE`视图获取Oracle对于PGA调整的建议,`V$SGA_ADVICE`和`V$SGA_TARGET_ADVICE`则用于SGA的调优。此外,`V$SGA`和`V$PGA`视图也能提供当前内存使用情况的详细信息。 6. **性能测试**:...

    Oracle 12C In-Memory Column Store特性

    修改`memory_target`为大于1GB的值,然后创建新的SPFILE并重启数据库。 2. **MEMORY_TARGET不支持**: 某些系统可能不支持`MEMORY_TARGET`,此时可以通过调整其他相关参数来满足内存需求。 3. **临时文件系统...

    数据库优化之后,报错ora-00838

    关键在于正确理解和调整`MEMORY_TARGET`与`SGA_TARGET`、`PGA_AGGREGATE_TARGET`之间的关系,确保数据库有足够的内存资源来支持其正常运行。此外,了解PFILE和SPFILE的区别及使用方法也是非常重要的,这有助于在...

    Oracle启用大页内存.docx

    将`memory_max_target`和`memory_target`设置为0,手动设定`sga_max_size`、`sga_target`和`pga_aggregate_target`。 - `memory_max_target`和`memory_target`控制整个数据库实例的总内存使用量。 - `sga_max_...

    oracle11g 大页内存设置

    - **SGA**: Shared Global Area (SGA) 是一组共享内存结构,这些内存结构由 Oracle 数据库实例中的所有进程所共享。 - **PGA**: Program Global Area (PGA) 是由服务器进程为每个用户进程分配的一块私有内存区域。 ...

Global site tag (gtag.js) - Google Analytics