简答题 7.  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命令如下:
   
   sysresv命令如下:
   
【答案解析】