oracle错误随笔
实例启动时报ORA-00845的解决方法
idle> startup
ORA-00845: MEMORY_TARGET not supported on this system
在Oracle 11g中如果采用AMM内存管理,那么当MEMORY_TARGET的值大于/dev/shm的时候,就会报ORA-00845: MEMORY_TARGET not supported on this system错误,解决办法增加/dev/shm大小,在redhat系列系统中,/dev/shm的默认值是系统总内存的一半
如果启动不了,可以打开oracle初始化参数文件spfileSID.ora,查看MEMORY_TARGET大小
临时修改/dev/shm大小
mount -o size=8G -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
永久修改需要需改/etc/fstab
tmpfs /dev/shm tmpfs defaults,size=8G 0 0
ORA-01102的解决办法
SQL> startup mount
ORACLE instance started.
Total System Global Area 608174080 bytes
Fixed Size 1220844 bytes
Variable Size 176164628 bytes
Database Buffers 427819008 bytes
Redo Buffers 2969600 bytes
ORA-01102: cannot mount database in EXCLUSIVE mode
网上搜了一下
这个错误主要是lk<SID>文件造成的该文件位于ORALCE_HOME下的dbs目录下,
这个lk<SID>的主要作用是说明DATABASE MOUNT上了,不用在MOUNT了.DATABASE UNMOUNT 后会删除掉,如果DATABASE确实没有MOUNT,这个文件在你也MOUNT上,只有手工删除
谈到具体解决方法引入另外一个命令/sbin/fuser
/sbin/fuser的主要功能是使用文件或者套接字来表示识别进程。常把它用来查看相关进程和杀死相关进程。此处用来清除lk<SID>文件
/sbin/fuser -u /u01/app/oracle/product/11.2.0/db_1/dbs/lkHSDB 查询占用该临时文件的进程pid和username
/sbin/fuser -k /u01/app/oracle/product/11.2.0/db_1/dbs/lkHSDB 直接kill相关pid释放文件lk<SID>文件
/sbin/fuser -u /u01/app/oracle/product/11.2.0/db_1/dbs/lkHSDB 再次查看发现已经没有那些进程了
再次启动就没有问题了