SQL> startup force;
1) ORA-00845: MEMORY_TARGET not supported on this system
问题分析:
该错误是由于/dev/shm小于MEMORY_TARGET的大小,或者是/dev/shm根本就没有挂载,如果同时设置了MEMORY_TARGET和MENORY_MAX_TARGET,那么/dev/shm至少必须和MEMORY_MAX_TARGET的大小一致
问题探究:
1) 什么是/dev/shm
查看已挂载的文件系统
从这里可以看出,/dev/shm 是已经挂在了的,挂在的文件类型是 tmpfs,tmpfs是linux的一种临时文件系统,它的大小是不固定的,默认的大小是实际内存的一半。
默认的挂载点是/dev/shm /dev/shm 就是一个目录,所以tmpfs也可以挂载到一个自定义的目录
tmpfs可以使用系统内存,也可以使用swap,所以我可以把tmpfs的size适当的调高一点。
由于tmpfs是存在于内存中的,所以在卸载tmpfs或者是关机重启linux操作系统的时候,tmpfs的内容就会丢失。
tmpfs是基于内存的,而swap是基于磁盘的,所以两者是不同的,而且tmpfs的IO很高。
解决方法:
由上面的可以看到,系统内存1G,swap大小,2G;
将/dev/shm 调大;
1)vi /etc/fstab
#添加
tmpfs /dev/shm tmpfs defaults,size=1G 0 0
然后将/dev/shm 重新挂载
mount -a
1.1)umount /dev/shm
如果提示:
linux-unvz:~ # umount /dev/shm/
umount: /dev/shm: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
查看是哪些进程占用,然后kill掉;
fuser -m /dev/shm/
/dev/shm: 5154m 5235m 5238m
linux-unvz:~ # kill -9 5154 5235 5238
linux-unvz:~ # umount /dev/shm/
linux-unvz:~ # df -Th /dev/shm/
Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 1.0G 0 1.0G 0% /dev/shm
然后再启动,就ok了;
SQL> startup;
ORACLE instance started.
Total System Global Area 1135747072 bytes
Fixed Size 2227664 bytes
Variable Size 855638576 bytes
Database Buffers 268435456 bytes
Redo Buffers 9445376 bytes
Database mounted.
Database opened.
SQL> ALTER SYSTEM SET MEMORY_MAX_TARGET = 1024M SCOPE = SPFILE;
System altered.
SQL>
其他参数的修改:
SQL>ALTER SYSTEM SET MEMORY_MAX_TARGET = 1024M SCOPE = SPFILE;
SQL>ALTER SYSTEM SET MEMORY_TARGET = 1024M SCOPE = SPFILE;
SQL>ALTER SYSTEM SET SGA_TARGET =0 SCOPE = SPFILE;
SQL>ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0 SCOPE = SPFILE ;