Oracle由于版本的不同,在注册表中产生的注册表信息也有所不同,但主要的键值信息还是一样的,例如Oracle10g比oracle9i在注册表中表现的更为“简洁”,在未知的情况下,获取Oracle10g的相关信息,需要模糊查询一下键值
SOFTWARE\ORACLE\Key_*
Key_后面跟着是OracleHomeName的信息,默认情况如 KEY_OraDb10g_home1
而9i在注册表中的表现比较直接,可以查询这个
SOFTWARE\ORACLE\ALL_HOMES\ORACLE_COUNTER
这个值比较直观的告诉你 ,当前机器上有多少个Oracle实例,可以通过HOMEX (X为数字)找到对应的值,HOME0或HOME1或HOME2...中的ORACLE_HOME_NAME找到对应值。
如果系统里安装了多个ORACLE产品,那么在注册表里,有可能也会有多个ORACLE HOME,默认的是哪个ORACLE HOME?
其中在\SOFTWARE\ORACLE\ALL_HOMES\DEFAULT_HOME这个值就是默认的ORACLE HOME,有了DEFAULT_HOME的值,就可以获取默认的oracle实例名。
PLSQL如果在多实例的环境下 会默认连接默认实例的Oracle Home Name。
每获取到一个Oracle Home Name 都能获取到Oracle Home 的安装路径(为下面做伏笔)。
如何想要更改默认的ORACLE_HOME,可以在键值
把HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES\DEFAULT_HOME修改成HOMEX里对应的ORACLE_HOME_NAME。
注:注册表查询的起始位置是HKEY_LOCAL_MACHINE。
另:plsql在连接oracle数据库时 通常都能找到机器上所创建的数据库名,有多少就能查到多少,这是为什么呢,它都还没连接到Oracle上呢。
因为plsql也是先查询了注册表信息后(结合了上面说的查询过程),得到oracle的安装目录,然后读取 NETWORK\ADMIN 下的tnsnames.ora这个文件,来获取该实例下有多少个数据名的信息。有兴趣的可以打开这个文件看一下,然后在打开plsql,连接之前 数据库下拉框里的信息是否跟这个文件的信息一致呢!
如果你也想读取都数据库名的信息,怎么读?
直接读。。。?
不能这么强硬的,要温柔,可以利用正则表达式,较好的把数据库名的信息(而且仅读数据库名的信息)并显示出来,像plsql一样。
======================================================================
好吧,就说这些,完全有可能写的不对,我也是凭印象写,如果错误,请指正!