【DB笔试面试856】在Oracle中,如何判定实例是否运行?

时间:2022-07-23
本文章向大家介绍【DB笔试面试856】在Oracle中,如何判定实例是否运行?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

问题

在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命令如下所示:

SQL> ORADEBUG SETMYPID
SQL> ORADEBUG IPC
SQL> ORADEBUG TRACFILE_NAME

sysresv命令如下所示:

[ZFLHRDB2:oracle]:/oracle>ORACLE_SID=raclhr2
[ZFLHRDB2:oracle]:/oracle>sysresv
IPC Resources for ORACLE_SID "raclhr2" :
Shared Memory:
ID              KEY
5242886         0xffffffff
5242883         0xffffffff
1048583         0xd92489e0
Oracle 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/

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处