在Oracle中,如何判定实例是否运行?
在启动Oracle实例之前,必须定义ORACLE_SID,Oracle根据SID的HASH值来唯一确定一个实例的地址。当打开SQL*Plus工具,输入“sqlplus / as sysdba”以后,系统根据SID进行HASH,查找在共享内存中是否有相应的共享内存段(SHMID)存在,如果有,那么返回connected,否则返回connect to an idle instance,这个实例名是存放在SGA中的variable size中。
通过ORADEBUG IPC可以得到variable所存放的SHM的SHMID号,在OS下使用ipcrm -m SHMID可以删掉这一段共享内存。另外,在OS级别也可以使用sysresv命令来获取SHMID号。
ORADEBUG IPC命令如下所示:
1SQL> ORADEBUG SETMYPID 2SQL> ORADEBUG IPC 3SQL> ORADEBUG TRACFILE_NAME
sysresv命令如下所示:
1[ZFLHRDB2:oracle]:/oracle>ORACLE_SID=raclhr2 2[ZFLHRDB2:oracle]:/oracle>sysresv 3IPC Resources for ORACLE_SID "raclhr2" : 4Shared Memory: 5ID KEY 0xffffffff 0xffffffff 0xd92489e0 9Oracle Instance alive for sid "raclhr2"
& 说明:
有关数据库是否启动的问题的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2112518/、http://blog.itpub.net/26736162/viewspace-2147273/
本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗
DB宝分享的IT资料:https://mp.weixin.qq.com/s/Iwsy-zkzwgs8nYkcMz29ag
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:230161599、618766405
● 微信:lhrbestxh
● 微信公众号:DB宝
● 提供Oracle OCP、OCM、高可用(rac+dg+ogg)和MySQL最实用的技能培训
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:DB宝,学习最实用的数据库技术。
本文分享自微信公众号 - DB宝(lhrdba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。