• 安装多个ORACLE导致多个Oracle HOME的情况!


    Oracle由于版本的不同,在注册表中产生的注册表信息也有所不同,但主要的键值信息还是一样的,例如Oracle10g比oracle9i在注册表中表现的更为“简洁”,在未知的情况下,获取Oracle10g的相关信息,需要模糊查询一下键值 

    SOFTWAREORACLEKey_*

    Key_后面跟着是OracleHomeName的信息,默认情况如 KEY_OraDb10g_home1

    而9i在注册表中的表现比较直接,可以查询这个

    SOFTWAREORACLEALL_HOMESORACLE_COUNTER

    这个值比较直观的告诉你 ,当前机器上有多少个Oracle实例,可以通过HOME(X为数字)找到对应的值,HOME0或HOME1或HOME2...中的ORACLE_HOME_NAME找到对应值。

    如果系统里安装了多个ORACLE产品,那么在注册表里,有可能也会有多个ORACLE HOME,默认的是哪个ORACLE HOME?

    其中在SOFTWAREORACLEALL_HOMESDEFAULT_HOME这个值就是默认的ORACLE HOME,有了DEFAULT_HOME的值,就可以获取默认的oracle实例名。

    PLSQL如果在多实例的环境下 会默认连接默认实例的Oracle Home Name。

    每获取到一个Oracle Home Name 都能获取到Oracle Home 的安装路径(为下面做伏笔)。

    如何想要更改默认的ORACLE_HOME,可以在键值

    把HKEY_LOCAL_MACHINESOFTWAREORACLEALL_HOMESDEFAULT_HOME修改成HOMEX里对应的ORACLE_HOME_NAME。

     注:注册表查询的起始位置是HKEY_LOCAL_MACHINE。

    另:plsql在连接oracle数据库时 通常都能找到机器上所创建的数据库名,有多少就能查到多少,这是为什么呢,它都还没连接到Oracle上呢。

    因为plsql也是先查询了注册表信息后(结合了上面说的查询过程),得到oracle的安装目录,然后读取 NETWORKADMIN 下的tnsnames.ora这个文件,来获取该实例下有多少个数据名的信息。有兴趣的可以打开这个文件看一下,然后在打开plsql,连接之前 数据库下拉框里的信息是否跟这个文件的信息一致呢!

    如果你也想读取都数据库名的信息,怎么读?

    直接读。。。?

    不能这么强硬的,要温柔,可以利用正则表达式,较好的把数据库名的信息(而且仅读数据库名的信息)并显示出来,像plsql一样。

     ======================================================================

    好吧,就说这些,完全有可能写的不对,我也是凭印象写,如果错误,请指正!

  • 相关阅读:
    省队集训 Day1 残缺的字符串
    省队集训 Day3 吴清华
    省队集训 Day3 陈姚班
    Java多线程中的join方法
    Java多线程同步机制之同步块(方法)——synchronized
    java-实用的sql语句
    java-分页之页面分页
    java下实现调用oracle的存储过程和函数
    java-MySQL存储过程
    MySQL存储过程
  • 原文地址:https://www.cnblogs.com/seer/p/3454172.html
Copyright © 2020-2023  润新知