关于SGA与memory_target 大小冲突照成数据库无法挂载问题

时间:2020-12-18 01:30:28

关于SGA与memory_target 大小冲突照成数据库无法挂载问题

 

错误信息:

ORA-00844: Parameter not taking MEMORY_TARGET into account

ORA-00851: SGA_MAX_SIZE xxx cannot be set to more than MEMORY_TARGET xxx.

 1.      简介

Oracle 11g中,ORACLE把SGA与PGA统一管理,总和为memory_target参数的设定,也就是MAX(SGA+PGA)<= memory_target(当然可以在创建新实例的时候确定是否使用这种方案,在10g中是没有的)。

如果错误设定sga_max_size>=memory_target(相等也不行,PGA至少需要大概十几M内存),则无法进行startup nomount,但是修改SGA命令又需要至少在startup nomount下面执行,所以必须使用另一种方式修改该参数。

 2. 修改SGA与memory_target 大小

在SGA大于memory_target的情况下,使用startup nomount会出现异常:

ORA-00844: Parameter not taking MEMORY_TARGET into account

ORA-00851: SGA_MAX_SIZE 1073741824 cannot be set to more than MEMORY_TARGET 872415232.

 

这时候需要执行以下步骤:

SQL> create pfile='/home/oracle/init0321.ora' from spfile;

File created.

SQL> !vi /home/oracle/init0321.ora

然后修改:

*.memory_target=1073741824

*.sga_max_size=805306368

*.sga_target=805306368

 

sga_max_size等于memory_target会出现,

ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 1036M,

因为PGA还需要部分空间

 

SQL> startup pfile='/home/oracle/init0321.ora';

SQL> create spfile from pfile='/home/oracle/init0321.ora';

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup;

 

Pfile与spfile默认位置:

Spfile  ${ORACLE_INSTALL_PATH}/product/11.2.0/dbh ome_1/dbs/spfileorcl.ora

 

如果参数没指定pfile位置,则默认使用下面文件

Pfile  ${ORACLE_INSTALL_PATH}/product/11.2.0/dbhome_1/dbs/ initorcl.ora