Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41716
  • 博文数量: 13
  • 博客积分: 1956
  • 博客等级: 上尉
  • 技术积分: 155
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-05 23:06
文章分类

全部博文(13)

文章存档

2011年(3)

2010年(5)

2008年(5)

我的朋友

分类: Oracle

2011-01-01 17:01:38

ORACLE_SID和ORACLE_HOME是最基本的必须设置的两个环境变量。
根据Tom大师所说的,在Unix/Linux下,Oracle的实例是有一块共享内存(SGA)和一组后台进程组成的,
Oracle使用ORACLE_HOME和ORACLE_SID进行hash,得到一个key,
Oracle根据这个key来寻找SGA,如果不设置这两个环境变量,oracle就无法找到分配的SGA,
也就无法连接到实例。这也是这两个环境变量为什么必须设置的原因。

我们可以利用oracle自带的sysresv工具查看到

oracle@solaris:~$ sysresv

IPC Resources for ORACLE_SID "test" :
Shared Memory:
ID        KEY
58          0xdced621c
Semaphores:
ID        KEY
5           0xf52cedb8
Oracle Instance alive for sid "test"

另外,使用ipcs也可以看到共享内存的情况
oracle@solaris:~$ ipcs -m | grep ora
m         58   0xdced621c --rw-rw----   oracle      dba
可以看到,两者是对应的。

由上面的结论可知,在相同的ORACLE_HOME下,必须使用不同ORACLE_SID来区分不同的实例,
在不同的ORACLE_HOME下,可以有相同的ORACLE_SID,Oracle照样可以区分不同的实例,
这点在盖国强先生的《深入解析Oracle》中也得到了验证。




阅读(969) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~