有两个程序,程序1和程序2,其中程序1用的是oracle9i,配置oracle9i后程序1能正常运行,程序2用的是oracle10g,程序1配置完毕后安装oracle10客户端,配置oracle10g后程序2,程序2能正常运行。但是这个时候再运行程序1就报错,连接不上数据库了。
备注:服务器端分别安装在了两台机器上,程序1连接1号服务器的数据库,程序2连接2号服务器的数据库,但是我怎么样做才能让一台机器同时运行程序1和程序2呢???

解决方案 »

  1.   

    程序1 难道不能装在 Oracle 10g 上吗?
      

  2.   


    可以同时安装并使用,不过在相关调用的过程中需要指定环境变量,就是当你在调用9i时,你就必须指定9i的环境变量,比如$ORACLE_HOME, $ORACLE_SID等。 
      

  3.   

    Oracle 10g 应该支持向下兼容,你可以只安装 Oracle 10g 然后创建两个实例
    将程序1,程序2 装在不同实例下
      

  4.   

    程序1和程序2都不是自己做的,我也不知道用的是什么驱动,怎么样能通过简单的设置就能解决问题呢
    因为现在我的机器上oracle9i和oracle10g都已经安装了
      

  5.   

    请问3楼的高手,是在我的电脑->属性->高级-》环境变量-》系统变量-》path里面添加一下吗?
    使环境变量中同时存在oracle9i和oracle10g的环境变量?
      

  6.   


    同时定义?就是因为环境变量有问题才需要设置,服务器中只能指定一个呀,你可以在程序里想想方法。比如在调用程序之前,先设置下环境变量. 9i的设9i的ORACLE_HOME,10g就设10g的. 
      

  7.   


    关键程序1和程序2都是别人做的,我没法调试,只能配置oracle
      

  8.   

    按常规,Oracle 10g 是兼容 9i 的
    可以问一下开发人员,或者搭一个测试环境,将程序1 安装在 Oracle 10g 上另外即使你将两个环境变量都写到 path 里,系统仍然只会读出一个来 
      

  9.   

    在10G中新建个实例,把9i的数据导入到10G,问题不就解决了吗?
      

  10.   

    两台数据库同时可以装在同台主机上,关键是监听要配好
    下面转来别人的一篇文章,自己也曾测试成功过
    最近因工作需要,需要在本机安装Oracle10g,之前本机已经安装了一个Oracle9i,后来在安装完Oracle10g之后,发现Home Selector中还是只有一个Home,报告的错误是:"there is only one(1) oracle home defined on this machine...",因为当时10g和9i没有装在同一个目录中,所以以为是目录问题,然后把10g卸载了,重新安装后还是存在这个问题,这个时候,灵机一动,原来有一台服务器上安装了一个Oracle9i和Oracle form,但是服务器上的Home Selector中是可以在Oracle9i和Oracle form之间切换的,于是把注册表打开,研究了一下,惊喜的发现:HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/ALL_HOMES/下面有一个ID0,里面包含三个键值:NAME,PATH,NLS_LANG,于是在本机注册表中新建了一个ID1,把ID0里面的三个键值如法炮制,其中的PATH指向10g的安装目录,然后再启动Home Selector,问题解决了.修改后的注册表内容如下:Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES]
    "HOME_COUNTER"="1"
    "DEFAULT_HOME"="OraHome92"
    "LAST_HOME"="0"[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES\ID0]
    "NAME"="OraHome92"
    "PATH"="D:\\oracle\\ora92"
    "NLS_LANG"="NA"[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES\ID1]
    "NAME"=hex(7):4f,00,72,00,61,00,48,00,6f,00,6d,00,65,00,31,00,30,00,67,00,00,\
      00,00,00
    "PATH"=hex(7):44,00,3a,00,5c,00,6f,00,72,00,61,00,63,00,6c,00,65,00,5c,00,70,\
      00,72,00,6f,00,64,00,75,00,63,00,74,00,5c,00,31,00,30,00,2e,00,32,00,2e,00,\
      30,00,5c,00,64,00,62,00,5f,00,31,00,00,00,00,00
    "NLS_LANG"=hex(7):4e,00,41,00,00,00,00,00最后,还要谈一谈listener配置和tnsnames配置的问题:因为Oracle默认端口为1521,本机的1521已被Oracle9i的listener 占据,所以,最终把Oracle10g的listener 端口号设置成了另外一个端口1522,请注意,在使用10g的Net Configuration Assistant进行listener配置 时,一定不要修改listener 的任何默认设置:名称(LISTENER)或端口号(1521)(因为如果修改了默认名称或者端口号会造成在Windows服务管理器中找不到10g的listener 服务的问题),配置完成后,Oracle应用程序会自动将9i的listener 停止,因为其端口1521与当前的10g的listener 冲突了,请保持镇定,先在Windows服务管理器中手动停止10g的listener 服务(本机名称为OracleOraDb10g_home1TNSListener),然后进入D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN(本机安装目录),在文本编辑器中修改listener.ora中LISTENER的端口号为1522,保存listener.ora文件,最后,在Windows服务管理器中分别手动启动9i和10g的listener 服务(本机名称分别为OracleOraHome92TNSListener和OracleOraDb10g_home1TNSListener),如你所愿,两个listener 服务都会成功启动.剩下的就是本地Net服务名的配置了,也就是tnsnames的配置,配置过程与9i相同,唯一需要注意的就是把端口号修改为1522即可.在本机调试的时候,可以依据需要利用Home Selector在9i和10g之间自由切换,同时,其他机器请求本机的10g和9i服务均一切正常.
      

  11.   

    我现在就是oracle8和oracle9 同时使用, 两个的监听配置也要设置好,然后再用那个时,更改一下环境变量。我这里有个 oracle home selector 程序,每次用它来选择当前的是oracle8 还是oracle9.
      

  12.   

    能把oracle home selector 程序发给我一份吗?
    [email protected]
      

  13.   

    也发我个,好吗,谢谢[email protected]
      

  14.   

    我现在在纠结9i和11g同时使用,Win64装的32位的11G,太坑爹了,根本读不到路路劲。