ORA-01102 一次因tmpfs小于memory_target和共享锁引发的事件(两个独立事件)

在11.2.0.4的库上发现用的是sga和pga手动管理

然后本人就修改了sga和pga,设置了memroy_target;

重启数据库报错

ORA-00845: MEMORY_TARGET not supported on this system

查找资料发现是因为默认的tmpfs是内存的一半,memory_target必须小于改值,但我设置的值却大于了该值

用以下方法修改tmpfs的大小

vi /etc/fstab 

tmpfs                   /dev/shm                tmpfs   defaults,size=35G        0 0             

红色部分添加后重新加载tmpfs

umount tmpfs

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))

发现无法加载

---------------------------------------------------------------------------------------------------------------------------------------------------------

接下来本人的思路就是用pfile来启动数据库,修改memory的值小于tmpfs先将数据库跑起来再说

结果遇到了更大的麻烦,根本无法启动数据库了

ORA-01102 cannot mount database in EXCLUSIVE mode

这个问题解决办法如下(官方描述)

Problem Explanation: 
====================  
A database is started in EXCLUSIVE mode by default.   Therefore, the  
ORA-01102 error is misleading and may have occurred due to one of the  
following reasons: 
   - there is still an "sgadef<sid>.dbf" file in the "ORACLE_HOME/dbs" 
      directory  
   - the processes for Oracle (pmon, smon, lgwr and dbwr) still exist 
   - shared memory segments and semaphores still exist even though the  
      database has been shutdown 
   - there is a "ORACLE_HOME/dbs/lk<db_name>" file 
Solution Description: 
===================== 
Verify that the database was shutdown cleanly by doing the following: 
1. Verify that there is not a "sgadef<sid>.dbf" file in the directory 
     "ORACLE_HOME/dbs".    
     % ls $ORACLE_HOME/dbs/sgadef<sid>.dbf 
     If this file does exist, remove it. 
     % rm $ORACLE_HOME/dbs/sgadef<sid>.dbf 
2. Verify that there are no background processes owned by "oracle"  
     % ps -ef | grep ora_ | grep $ORACLE_SID 
     If background processes exist, remove them by using the Unix  
     command "kill".   For example: 
     % kill -9 <Process_ID_Number> 
3. Verify that no shared memory segments and semaphores that are owned  
     by "oracle" still exist 
     % ipcs -a 
     If there are shared memory segments and semaphores owned by "oracle",
     remove the shared memory segments  
     % ipcrm -m <Shared_Memory_ID_Number> 
     and remove the semaphores  
     % ipcrm -s <Semaphore_ID_Number> 
NOTE:   The example shown above assumes that you only have one  
           database on this machine.   If you have more than one 
           database, you will need to shutdown all other databases 
           before proceeding with Step 4. 
4. Verify that the "$ORACLE_HOME/dbs/lk<db_name>" file does not exist 
     if exit,remove it use ‘rm’ command.
5. Startup the instance 
最后本人是通过第3点,杀掉共享内存startup成功的.

遇到同样问题的可以参考


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值