Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2924101
  • 博文数量: 412
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 7374
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-25 15:15
个人简介

学习是一种信仰。

文章分类

全部博文(412)

文章存档

2014年(108)

2013年(250)

2010年(11)

2009年(43)

我的朋友

分类: Oracle

2013-09-18 09:39:11

oracle@Africa:~> sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.1.0 Production on Fri Sep 13 13:52:52 2013

 

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

Connected to an idle instance.

 

SQL> startup

ORA-00845: MEMORY_TARGET not supported on this system

 

oracle@Africa:~> sqlplus pis_product/pis

 

SQL*Plus: Release 11.2.0.1.0 Production on Fri Sep 13 14:45:58 2013

 

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

ERROR:

ORA-01034: ORACLE not available

ORA-27102: out of memory

Linux-x86_64 Error: 12: Cannot allocate memory

Additional information: 1

Additional information: 163843

Additional information: 8

Process ID: 0

Session ID: 0 Serial number: 0

 

Enter user-name:

 

网上解决办法:

1、万仔的一个客户数据库在修改了ORACLE的内存配置后,重启报ORA-27102。很显然,这个错误是不正确的修改了ORACLE的内存配置所导致的。

    该客户的ORACLE数据库是9201,安装在WINDOWS。在32WINDOWSORACLE的内存不能超过2GSGA+PGA),其中SGA不能超过1.7G.。我将其内存更改过来后,ORA-27102错误不再抛出,ORACLE成功启动。当然,由于是9I,所以ORACLESGAPGA的调整始终是一个迭代的过程,很难一次调整到位。你如果增加了PGA,降低SGA时,可能对SQL的排序性能有提升,但可能对DB的读写性能稍微有影响,反之,当你增加SGA,调低PGA时,对DB的读写性能有提升,但降低SQL语句的排序操作性能。SGAPGA的分配比例没有绝对的标准,有些人说1110.8,其实这些都只是经验值,不一定符合你的数据库实际环境。所以,ORACLE的内存调整一定是要经过反复的观察,才可以找到最佳值(调整后,加载工作量,查看各项数据库性能指标,然后根据分析报告,再作进一步的调整,直到找到最佳的内存配置。

 

2、为什么会出现这样的问题叻,是因为在32位的机器上Oracle的内存有限制,内存最大4G32位留50%给操作系统,window是单线程的,不能超过1.7Gout of memory也就出来叻。

那么碰到这个问题我们如何解决了。如果了解Oracleinit的启动的话,做这个恢复就比较简单了,默认oralce是从spfile先启动的,

你可以这样查到路径

SQL> show parameter pfile

NAME                                 TYPE        VALUE

———————————— ———– ——————————

spfile                               string      %ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA

 

所以你先在可以通过修改这个文件里的相关参数的值来恢复,不过修复的时候注意,这是个二进制文件,要保持二进制的格式。

还有方法用我们刚才的pfile来恢复。

SQL>startup pfile=’你备份的init.ora;

如果在window下,需要

SQL>create spfile from pfile=’你备份的init.ora;

重启服务,即可。

在附上一个方法,如果当时忘记备份spfile文件叻,可以用以下方法

删除%ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA文件,然后启动的时候就会去找$ORACLE_BASE/admin/pfile/init.ora或者$ORACLE_BASE/admin/pfile/init$SID.ora,这两个文件是pfile文件,是文本的,你可以直接修改里面的值,然后重启数据库。

 

我的解决:

我的是测试环境,没有深究该问题;

数据库启动时报错,无法启动,重启机器后问题解决。

 

阅读(4617) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~