memory_target指定的值过小

目录:

版本1

Oracle12c

版本2

 

版本3

 

关键字

修改占用内存

 

  1. 问题现象
    1. 在对Oracle服务所占内存进行修改后,重新使用cmd的管理员进行登录:

C:\Users\NsnServer>sqlplus 用户名/密码 as sysdba;

  1. 提示如下信息:

SQL*Plus: Release 12.1.0.2.0 Production on 星期一 12月 19 09:32:33 2016

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

已连接到空闲例程。

(3)“已连接到空闲进程”:使用如下语句启用连接:

SQL> startup

 (4)提示如下错误:

ORA-00838: Specified value of MEMORY_TARGET is toosmall, needs to be at least 3248M

  1. 原因分析
    1. 由于设置了Oracle的MEMORY_TARGET参数的值小于了SGA_TARGET和PGA_TARGET的总和,因此报错。 但是此时数据库已经启不来了;
  2. 处理步骤
    1. 在数据库不能更改spfile的情况下,我们可以更改pfile,再用pfile启动;
    2. SQL>create file='C:\MyOracle\Oracle\product\12.1.0\dbhome_1\dbs\spfileorcl_bak.ora' from spfile;
      1. 提示:文件已创建

 memory_target指定的值过小_第1张图片

  1. 使用记事本编辑pfile文件中memory_target的值。设置的新值要大于报错提示的内存大小;

a)

memory_target指定的值过小_第2张图片

  1. 之后启动实例:

a) SQL>startup pfile =C:\MyOracle\Oracle\product\12.1.0\dbhome_1\dbs\spfileorcl_bak.ora

b)ORACLE 例程已经启动。

c)

memory_target指定的值过小_第3张图片

  1. 提示数据库已经打开后,还要改回spfile启动方式:

a) SQL> create spfile frompfile='C:\MyOracle\Oracle\product\12.1.0\dbhome_1\dbs\sp

fileorcl_bak.ora';

b)文件已创建。

  1. 启动例程:

a) SQL> startup force;

b)ORACLE 例程已经启动。

  1. 最后,可以查看一下新设置的memory_target值:

SQL> show parametermemory_target

NAME                    TYPE        VALUE

------------------------------------  -----------     ---------

memory_target            big integer      3360M

  1. 效果

(1)重启cmd,管理员方式登录,已经可以正常连接到数据库了

C:\Users\NsnServer>sqlplus 用户名/密码 as sysdba;

 

SQL*Plus: Release 12.1.0.2.0 Production on 星期一 12月 19 10:44:55 2016

 

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

连接到:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

 

SQL>

你可能感兴趣的:(异常排查,异常解决方案急诊室)