应用于:
Oracle服务器,企业级版本: Version: 8.1.7.4 到 11.0
文档中的信息可以应用于任何平台
目标:
在一个进程启动之后,为了找到启动这个进程的环境,以下的这些方法可以被用来使用,依据于操作系统平台。
解决方法:
1.确定在操作系统级别的进程的pid,例如smon进程
ps -ef | grep smon
2.获取进程的环境
SOLARIS:
pargs -e <pid from above> | grep ORACLE
LINUX:
cat /proc/<pid from above>/environ
AIX:
ps eauwww <pid from above>
HP-UX:
在这个unix版本中,没有命令可以直接的获取进程的环境,他只能提取来自于he _environ的一个debugger,这种方法也能应用在其他的Unix版本中,如下:
gdb smon <pid from above>
把gdb依附于上面提到的pid,这个smoon名字仅仅是一个标记用来表示我们所依附的是smoon进程,但是参数中所关联的却是pid,在依附于进程后,可以通过下面的这个命令中从_environ list中提取出信息
p ((char**)_environ)[0]@30
它会会列举出前30个环境变量,如果有更多的定义的变量的话,仅仅在@后增加参数即可
同时,这个列表也可以从另一个列表中提取出一些内容,使用迭代器像下面这样:
p ((char**)_environ)[i]
which would extract element #i+1.
Windows:
为了在Window系统中获取信息,有两件事是必须的:
1.检查注册表的Oracle_*j键用来开始oracle进程。这些键在如下的目录中:
HKEY_LOCAL_MACHINE/Software/Oracle/HOME<x>
(before 10g)
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_<home name>
from 10g on.
2.检查环境变量用来启动oracle进程
针对这一点,就需要从sysinternals中的进程浏览器实体工具中获取,可以从以下几个途径获取:
www.sysinternals.com
(http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)
在启动procexp实体工具后,在进程列表中找到oracle进程,右击,然后选择属性。当进程在启动的情况下,环境选项卡会显示出所有的环境变量(即使命令是动态的)
这个实体工具也会从注册表中显示出键值对,但是查看他们却是相当困难的。