再说ORA-00845: MEMORY_TARGET not supported on this system
admin
2023-05-03 16:01:54
0

    

网上很多关于这个错误的文章,有些还引用了Oracle文档中的说明。

Setting Memory Target at Instance Startup on Linux
Starting with Oracle Database 11g Release 1 (11.1), Oracle provides the option of automatically managing SGA and PGA with a combined MEMORY_TARGETparameter without having to set SGA_TARGET and PGA_AGGREGATE_TARGET explicitly. This is supported on Linux, Windows, Solaris, HPUX, and AIX (reference Bug 7258378).
If you see the ORA-00845 error reported on Linux machines at Oracle instance startup when using the MEMORY_TARGET parameter, then check the size of /dev/shm. If /dev/shm is not configured, then mount it sized to be at least the value of MEMORY_TARGET. If /dev/shm is configured but the amount of available space reported (through df -k /dev/shm) is less than MEMORY_TARGET, then free the space or mount a larger /dev/shm to satisfy the MEMORY_TARGET size. Note that if you set theMEMORY_MAX_TARGET parameter greater than MEMORY_TARGET, then ensure that /dev/shm is sized to be at least the value of MEMORY_MAX_TARGET.
Memory Target for Oracle Database InstancesRunning Database Configuration Assistant (DBCA) defaults to this Automatic Memory Management option. In the case of upgrade or manual database creation,MEMORY_TARGET can be specified in the initialization parameter file.

 

大部分人理解为,要求/dev/shm至少必须不小于MEMORY_MAX_TARGET的大小。

但是根据测试的实际情况,必须是/dev/shm的可用空间不小于MEMORY_MAX_TARGET的大小。

例如

SQL> show parameter target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target                   integer     0
db_flashback_retention_target        integer     1440
fast_start_io_target                 integer     0
fast_start_mttr_target               integer     0
memory_max_target                    big integer 6336M
memory_target                        big integer 6336M
parallel_servers_target              integer     16
pga_aggregate_target                 big integer 0
sga_target                           big integer 0

 

根据参数,memory_max_target 参数为6.18G

[root@oracledb ~]# mount -o remount,size=10G /dev/shm
[root@oracledb ~]# df -h
Filesystem                        Size  Used Avail Use% Mounted on
/dev/mapper/vg_centosdbo-lv_root   50G   42G  5.3G  89% /
tmpfs                              10G  9.9G 144M  99% /dev/shm
/dev/sda2                         485M   39M  421M   9% /boot
/dev/sda1                         200M  260K  200M   1% /boot/efi
/dev/mapper/vg_centosdbo-lv_home  1.3T  504G  744G  41% /home
[root@oracledb ~]# su – oracle

 

 

 

即便这里我设置size大小为10G。但是可用空间只有144M.

这时我启动数据库:

SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 30 14:29:21 2016

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

SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system

仍然会报错。

如下所示,如果保证可用空间大于memory_max_target,则数据库正常启动。

[root@oracledb ~]# mount -o remount,size=16G /dev/shm
[root@oracledb ~]# df -h
Filesystem                        Size  Used Avail Use% Mounted on
/dev/mapper/vg_centosdbo-lv_root   50G   42G  5.3G  89% /
tmpfs                              16G  6.2G  9.9G  39% /dev/shm
/dev/sda2                         485M   39M  421M   9% /boot
/dev/sda1                         200M  260K  200M   1% /boot/efi
/dev/mapper/vg_centosdbo-lv_home  1.3T  504G  744G  41% /home
[root@oracledb ~]# sqlplus /nolog
-bash: sqlplus: command not found
[root@oracledb ~]# su - oracle
[oracle@oracledb ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 30 14:30:41 2016

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

SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area 6614106112 bytes
Fixed Size                  2213896 bytes
Variable Size            3556771832 bytes
Database Buffers         3019898880 bytes
Redo Buffers               35221504 bytes
Database mounted.
Database opened.
SQL>  

 

由此可能的情况是,/dev/shm默认为系统内存的一半,虽然理论上可能已经大于MEMORY_TARGET,但数据库启动是可能仍然会报错。

比如我所用的测试库,MEMORY_TARGET是6.18G

而默认/dev/shm为内存的一半,即7.7G左右。但数据库启动时仍然报错。

 

[root@oracledb ~]# free -g
             total       used       free     shared    buffers     cached
Mem:            15         11          4          0          0         10
-/+ buffers/cache:          0         14
Swap:            7          0          7
[root@oracledb ~]# 

 

相关内容

热门资讯

豪华邮轮病毒,横跨三大洲始末 5月11日,泛海探险公司确认,隶属于该公司的“洪迪厄斯”号邮轮抵达西班牙特内里费岛后,全部87名乘客...
苏泊尔球釜电饭煲不通电是什么原... 1、有可能是温度保险管出现了问题,每个电饭煲都有温度保险管,而不是家常用的保险丝,如果保险管出现了问...
九阳铁釜电饭煲不通电原因 1、可能是面板烧了。2、控制电路没有工作,先检查控制电源是否正常。电饭煲的面板显示器线路接触不良,找...
空调线控器出现“黑... 珠海总部对于退回的多联机线控器黑屏“故障”,部分是由于不清楚线控器的灯光功能,误触发线控器关闭了灯光...
长虹柜机温度传感器是多少K 每一个空调传感器的传感温度都会对应着不同的空调工作型号和参数,常见的有5K,10K和15K,当然在不...
测电笔测不出的漏电 1、如果漏电的电压比较低的话有时候测电笔就测试不出来的。2、有时候测电笔在出厂的时候没有检测好,就有...
“拖延毫无出路”:美智库疾呼出... 【文/观察者网 潘昱辰 编辑/高莘】“如果没有国家战略扶持,美国汽车产量将持续下滑,直接影响美国国家...
凤凰记者拍到空军一号飞抵首都机... “哪儿呢?”“来了,这!这!这!”5月13日晚,特朗普专机空军一号抵达北京首都机场 ,凤凰卫视记者拍...
黄仁勋最后时刻登上“空军一号”... 美国当地时间5月12日,美国总统特朗普启程访华。途中,“空军一号”于阿拉斯加加油停靠时,英伟达公司总...
美财长贝森特专机先期抵达北京 13日下午,在特朗普抵达前,美国财长贝森特的专机先期飞抵北京,凤凰卫视记者拍摄到了专机降落前的画面。