ORA-01081: "cannot start already-running ORACLE - shut it down first"
admin
2023-05-15 01:02:08
0次

                                                           

	Applies to: 
Oracle Server - Enterprise Edition - Version: 8.1.7.4 to 11.2.0.2.0 - Release: 8.1.7 to 11.2
Generic UNIX

当检查oracle实例后台进程不存在这时启动启动数据库报错: 
 

  ORA-01081: "cannot start already-running ORACLE - shut it down first" 

造成此种原因是

Orphaned shared memory segments and semaphores did not get cleared properly 
from the last instance shutdown.

在oracle实例最后一次shutdown时,某一个孤立的共享内存段和信号没有被清理干净

解决方法


可以利用ipcs来找出共享内存段或者信号,利用ipcrm来手动清除
orphaned shared memory segments(孤立的共享内存段) 和semaphores(信号量)


[root@rac01 ~]# ipcs -a 

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
           
0x4e44b264 557069     oracle    640        287309824  25                      
0xd06e774c 524302     oracle    640        132120576  16                      

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x000000a7 0          root      600        1         
0x2e7fd0cc 131073     oracle    640        44        
0x334b5294 262146     oracle    640        154    



[root@rac01 ~]# ipcs -m 

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
       
0x4e44b264 557069     oracle    640        287309824  25                      
0xd06e774c 524302     oracle    640        132120576  16                      


ipcs: 检查分配的共享内存
ipcrm:手动释放共享内存段

取得ipc信息:

ipcs [-m|-q|-s]
-m       输出有关共享内存(shared memory)的信息
-q       输出有关信息队列(message queue)的信息
-s       输出有关“信号量”(semaphore)的信息
-a       使用所有打印选项. (针对 -b, -c, -o, -p, and -t的速记符)


Example:
 
	ipcrm -m    shmid 号   - for shared memory 
	ipcrm -s    semid  号      - for semaphores 
 

OR

Shutdown all the instances belonging to the user. Next, run "ipcs -b" to find the remaining IPC 
facilities, owned by the same user, and remove them.  However, if you're running multiple production 
instances, this may not be  acceptable. 

在多实例的情况下
 
 
1. 运行 
  	 ipcs -a > /tmp/ipcs_before.out  
 
2. 用 SQL*Plus 连接所有实例做一个简单的查询 
         
	 select * from dual; 
 
3. 再次运行 
  	  ipcs -a > /tmp/ipcs_after.out  
 
4. 对比 "/tmp/ipcs_before.out" 与 "/tmp/ipcs_after.out"  文件
  查找 LPID 没有改变的共享内存段
  
   These are the orphaned shared memory segments you are looking for:  
  
 
    LPID 显示最后过程中附加或者分立共享内存段的进程 ID


     因为,通过在每一个活着的实例中执行查询,你会涉及到属于各自实例的共享内存段,
   但是未涉及的共享内存段将变成孤立的一个
 
5. After identifying the orphaned shared memory segments, you can find  
   the orphaned semaphores by locating the semaphores with the same  
   value of CTIME in "ipcs -a" output as the value of CTIME for the  
   orphaned shared memory segments: CTIME shows the time when the  
   associated entry was created or changed. 

   在识别孤立的共享内存段后,可以通过ipcs -a的输出确定具有相同CTIME值的信号找到孤立的共享内存段
   作为相关孤立共享内存段的值
 
   NOTE:  This step may not be necessary on the platforms implementing 
          post-wait kernel extension (AT&T Unix, AIX), when semaphores  
          are not used by Oracle at all.

更多相关内容:

解决oracle数据库ORA-01081: cannot start already-running ORACLE - shut it down first的方法

ORA-00904:"WM_CONCAT":标识符无效

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...