oracle的sid是什么
oracle的sid的意思是oracle数据库的少数标识符是你在建立一个数据库时系统自动赋予的一个初始ID。sid主要用于在一些DBA操作以及与操作系统交互,从操作系统的角度访问实例名,必须通过ORACLE SID,且它在注册表中也是存在的。
一、基本介绍
SID是System IDentifier的缩写,而ORACLE_SID就是Oracle System Identifier的缩写,在Oracle系统中,ORACLE_SID以环境变量的形式出现,在特定版本的Oracle软件安装(也就是ORACLE_HOME)下,当Oracle实例启动时,操作系统上fork的进程必须通过这个SID将实例与其他实例区分开来,这就是SID的作用。
Oracle的sid在不同的系统环境下,查看方式不相同,方法分别如下:
1、windows 下查看注册表
开始 输入regedit 查看
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1\ORACLE_SID就是
2、linux或者unix下可以
echo $ORACLE_SID
注意:ORACLE_SID要大写
3、在sql命令下可以查看
连接后查询:
SQL> select instance_name from v$instance;
二、作用
我们知道Oracle的实例(instance)是由一块共享内存区域(SGA)和一组后台进程(background processes)共同组成;而后台进程正是数据库和操作系统进行交互的通道,这些进程的名称就是通过ORACLE_SID决定的。
实例的启动仅需要一个参数文件,这个参数文件的名称就是由ORACLE_SID决定的。对于init文件,缺省的文件名称是init.ora,对于spfile文件,缺省的文件名为spfile.ora,Oracle依据ORACLE_SID来决定和寻找参数文件启动实例,参数文件的缺省位置为$ORACLE_HOME/dbs(Windows上为$ORACLE_HOME\database目录)。
spfile从Oracle 9i开始引入并成为了缺省使用的参数文件,Oracle启动实例时按照以下顺序从缺省目录查找参数文件:spfile.ora ‘spfile.ora ‘init.ora。如果这3个文件都不存在,则Oracle实例将无法启动。
通过这些信息可以知道,在同一个ORACLE_HOME下,Oracle能够根据ORACLE_SID将实例区分开来;但是如果在不同的ORACLE_HOME下,Oracle将不屏蔽相同名称的ORACLE_SID,也就是说,在同一台主机的不同ORACLE_HOME下,Oracle也是能够创建相同ORACLE_SID的实例的。
以下一个测试,首先启动一个Oracle 8i下ORACLE_SID为eygle的实例:
$ exportORACLE_SID=eygle
$ sqlplus “/ as sysdba”
SQL*Plus: Release 8.1.7.0.0 – Production on Fri Feb 16 10:23:58 2007
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Connected to an idle instance.
SQL>startup nomount;
ORACLE instance started.
SQL>! ps -ef|grep smon
oracle8 11092 1 0 10:24:02 ? 0:00 ora_smon_eygle
接下来又可以启动另外ORACLE_HOME下ORACLE_SID为eygle的实例:
$ exportORACLE_SID=eygle
$ sqlplus “/ as sysdba”
SQL*Plus: Release 9.2.0.4.0 – Production on Fri Feb 16 10:24:43 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
SQL>startup nomount;
ORACLE instance started.
SQL>! ps -ef|grep pmon_eygle
oracle9 11180 1 0 10:24:48 ? 0:00 ora_pmon_eygle
oracle8 11084 1 0 10:24:02 ? 0:00 ora_pmon_eygle
最后,推荐我们的管理工具给大家。