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

来源:互联网 发布:室内设计软件手机版 编辑:程序博客网 时间:2024/06/09 14:40
Applies to: Oracle Server - Enterprise Edition - Version: 8.1.7.4 to 11.2.0.2.0 - Release: 8.1.7 to 11.2Generic 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  ORShutdown 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.

原创粉丝点击