ORACLE常见错误:ORA-00823、ORA-00838

  • Post author:
  • Post category:其他

  • 问题:

启动数据库失败,报错: Specified value of sga_target greater than sga_max_size
在这里插入图片描述

  • 原因

这个异常通常是因为改动了sga_max_size或者sga_target这两个参数值,导致sga_target比sga_max_size值大。

Oracle 10g开始,引入SGA_TARGET初始化参数, 让oracle自动管理SGA中
(Buffer cache (DB_CACHE_SIZE),
Shared pool (SHARED_POOL_SIZE),
Large pool (LARGE_POOL_SIZE),
Java pool (JAVA_POOL_SIZE),
Streams pool (STREAMS_POOL_SIZE))的内存自动分配,
即ASSM(Automatic Shared Memory Management)

SYS> show parameter sga;

NAME                                 TYPE           VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean        FALSE
pre_page_sga                         boolean        FALSE
sga_max_size                         big integer    632M
sga_target                           big integer    0
  • 解决

使用sysdba用户登录数据库

[oracle@database ~]$ sqlplus /nolog  
SQL> conn /as sysdba  

生成配置文件

SQL> create pfile from spfile;(这个命令生成的文件在ORACLE_HOME环境变量dbs文件夹下,名字为initorcl.ora)

[oracle@database ~]$ vim $ORACLE_HOME/dbs/initorcl.ora
#修改sga_max_size比sga_target大就行了

在这里插入图片描述

修改好之后

SQL> create spfile from pfile;
SQL> startup;

ORA-00838

  • 问题

启动数据库失败,报错: Specified value of MEMORY_TARGET is too small

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OY5CcKvu-1660902366304)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220804140156920.png)]

  • 原因

查看ORACLE解释

00838, 00000, "Specified value of MEMORY_TARGET is too small, needs to be at least %sM"
// *Cause: The specified value of MEMORY_TARGET was less than the sum of the 
//         specified values for SGA_TARGET and PGA_AGGREGATE_TARGET.
// *Action: Set MEMORY_TARGET to at least the recommended value.

 减少SGA值,或增大MEMORY_TARGET值, 或还原修改前状态即可解决问题
  • 解决

使用sysdba用户登录数据库

[oracle@database ~]$ sqlplus /nolog  
SQL> conn /as sysdba  

生成配置文件

SQL> create pfile from spfile;(这个命令生成的文件在ORACLE_HOME环境变量dbs文件夹下,名字为initorcl.ora)

[oracle@database ~]$ vim $ORACLE_HOME/dbs/initorcl.ora
#修改memory_target的值大于1888M就行了

在这里插入图片描述

SQL> create spfile from pfile;
SQL> startup;

版权声明:本文为s_alted原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。