Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3058462
  • 博文数量: 206
  • 博客积分: 3409
  • 博客等级: 中校
  • 技术积分: 4066
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-24 10:21
个人简介

● ITPUB名人堂嘉宾 ● ChinaUnix社区博客专家 ● ChinaUnix社区Oracle板块版主 ● 优酷网认证音乐牛人:EricGuitar ● SDOUG 核心成员 ●E-mail:gaoqiangdba@163.com

文章分类

全部博文(206)

文章存档

2021年(11)

2020年(7)

2019年(7)

2016年(5)

2015年(36)

2014年(23)

2013年(15)

2012年(23)

2011年(61)

2010年(18)

分类: Oracle

2019-04-16 19:16:55

  

环境:RHEL 5 ,64位,Oracle 11 R2。


在做实验的时候,由于想开两台虚拟机做数据库迁移测试和数据比对,由于笔记本物理内存不够,想将Linux虚拟机内存调小,VMware中设置完成之后进入系统发现数据库没起来,提示:


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


经网上查询,发现是因为/dev/shm在跟着虚拟机内存调整之后(一般为物理内存的一半)小于MEMORY_TARGET值导致的该错误。


Oracle官方解释:
Starting with Oracle Database 11g, the Automatic Memory Management feature requires more shared memory (/dev/shm)and file descriptors. The size of the shared memory should be at least the greater of MEMORY_MAX_TARGET and MEMORY_TARGET for each Oracle instance on the computer. If MEMORY_MAX_TARGET or MEMORY_TARGET is set to a non zero value, and an incorrect size is assigned to the shared memory, it will result in an ORA-00845 error at startup.


查看MEMORY_TARGET:


SQL> sho 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 700M
memory_target                        big integer 700M
parallel_servers_target              integer     8
pga_aggregate_target                 big integer 0
sga_target                           big integer 0


查看shm大小:


[root@dbserver ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       26G   18G  6.5G  74% /
/dev/sda1              99M   21M   73M  23% /boot
tmpfs                 636M     0  636M   0% /dev/shm
none                  636M  104K  636M   1% /var/lib/xenstored


MEMORY_TARGET确实是小于/dev/shm值的大小。




解决问题的方法有两个:

1.修改fstab文件:
[root@dbserver ~]# cat /etc/fstab 
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0


将/dev/shm那一行修改成如下形式:
tmpfs                   /dev/shm                tmpfs   defaults,size=1G 0 0     -----------size一定要大于MEMORY_TARGET 重启便可使修改生效。


2.手动重新挂载
[root@dbserver ~]# mount -o remount,size=1G /dev/shm
然后起数据库:
[root@dbserver ~]# su - oracle
[oracle@dbserver ~]$ sqlplus / as sysdba


SQL*Plus: Release 11.2.0.1.0 Production on Fri Mar 7 06:29:59 2014


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


Connected to an idle instance.


SQL> startup
ORACLE instance started.


Total System Global Area  730714112 bytes
Fixed Size                  2216944 bytes
Variable Size             574622736 bytes
Database Buffers          146800640 bytes
Redo Buffers                7073792 bytes
Database mounted.
Database opened.
SQL> 


OK! 


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