我想请教大家个问题,我在虚拟机中安装了linux,里面又装了oracle,在window下登陆到linux啥的都没问题.
我昨天安装PL/SQL developer想通过它连接到虚拟机中的oracle,可是登陆的时候有一个database选项,我看资料说要修改oracle服务端的tnsname.ora,请问这个应该怎么改呢,我想即使改服务端,那么客户端连接的时候怎么知道要连接的服务端的地址呢 ?谢谢大家

解决方案 »

  1.   

    不是修改服务端的,是修改客户端的tnsnames.ora文件。
    如果没有安装oracle的客户端或者oracle instance在你的windows上,是无法链接linux的oracle的。可以从网上下载个简化的oracle客户端,就可以了。
      

  2.   

    谢谢楼上的朋友,我安装了windows下的oracle客户端,也修改了tnsname.ora,内容如下:
    ORCL_192.168.0.99 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.99)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = orcl)
          (SERVER = DEDICATED)
        )
      )listener.ora内容如下:
    SID_LIST_ORCL_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = C:\oracle\product\10.2.0\client_4)
          (PROGRAM = extproc)
        )
      )ORCL_LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.99)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
        )
      )可是在PL/SQL中登陆的时候还是显示 TNS:无监听程序。请问该怎么办呢?是不是在Linux下的Oracle服务端也要配置什么东西?
      

  3.   

    linxu下需要启动listener:
    > lsnrctl start注:
    客户端只需要修改tnsnames.ora,
    服务器端需要确认listener.ora的设置是否正确。类似如下:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /oracle/app/product/10g)
          (PROGRAM = extproc)
        )
        (SID_DESC =
          (GLOBAL_DBNAME = ncdb)
          (ORACLE_HOME = /oracle/app/product/10g)
          (SID_NAME = xxdb)
        )
      )LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
        )
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
        )
      )
      

  4.   

    再次感谢朋友,我照你说的做了,客户端的listener.ora如下:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /home/oracle)
          (PROGRAM = extproc)
        )
      )LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
        )
        (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.99)(PORT = 1521))
        )
      )服务端的tnsname.ora如下:ORCL_192.168.0.99 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.99)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = orcl)
          (SERVER = DEDICATED)
        )
      )
    EXTPROC_CONNECTION_DATA =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
        )
        (CONNECT_DATA =
          (SID = PLSExtProc)
          (PRESENTATION = RO)
        )
      )
    然后> lsnrctl start 可是在PL/SQL里连接的时候提示:ORA-12505:TNS:监听程序无法识别连接描述符中所给出的SID请问这是怎么回事呢,是不是我红色标注的那行错了?应该怎样设置呢,谢谢
      

  5.   

    那个是客户端,那个是服务器,你明白吗?????
    客户端修改tnsnames.ora!!!
    服务器端修改listener.ora!!!!服务器端需要启动listener: lsnrctl start你的客户端是:windows,服务器端是:linuxORA-12505:TNS:监听程序无法识别连接描述符中所给出的SID 
    意思是sid设置的不对。
      

  6.   

    哎,抱歉真不好意思,我知道客户端修改tnsnames.ora服务器端修改listener.ora,是发帖的时候不小心打错
    了,可是服务端的listener和客户端的tnsnames.ora就向我上面贴出来的那样也还是不行,请问怎么回事呢,
    我也知道这个SID不对,可是不知道SID正确的值应该是什么。。
      

  7.   

    my god!!!
    直接说不知道sid不就ok了吗.linux下执行:
    ps -eaf|grep ora会看到很多类似如下的进程:
    oracle 25601     1  0 06:56:14 ?        0:00 oracleqfz (LOCAL=NO)上面对应的oracle的sid就是:qfz,应该能知道怎么得到的吧。看看你的吧。
      

  8.   

    SQL Handler -- 是用 Java 开发的、专门用于 Oracle 数据库操作的一种图形界面工具: 多线程、多连结、支持 PL/SQL、功能实用、操作方便、界面简洁清新,能运行于所有平台包括 Windows、Linux 及 Unix,勿需安装 Oracle 客户端,只需一个 2.3 MB 的可执行 JAR 文件 SQLHandler.jar 及帮助文件 Help.html 有意者请进入
     http://bbs.chinaunix.net/viewthread.php?tid=927771
    下载 SQLHandler.jar
    或直接联系:[email protected]主要功能有:以表格的形式显示 Select SQL 语句的查询结果,可以直接对查询结果进行再操作,如修改、插入、删除、保存、多功能拷贝、导出、行列移动、列排序等;能对大型的文本字段(如 CLOB, LONG)查看、编辑等  运行命令 "desc tablename" 能清楚地显示表 Table 的所有字段 Field (包括名称、数据类型及长度、默认值、非空)、所有的索引 Index、所有的约束条件 Constraints(主键、唯一键、检查键、子表、外键、甚至外键的外键)  支持多条SQL语句的成批运行,用控制台监控每条语句的运行,在运行过程中可以中断/暂停/继续正在运行的 SQL、甚至可以更正出错误的 SQL,从而提高操作效率  支持彩色文本编辑,即关键字、注释块、引号内字符串、操作符等,用不同的彩色字体加以区别; 还有,如果光标停在括号处,高亮度显示配对的括号,增强可读性 方便高效的行块和列块操作,能对行块和列块中的文本进行拷贝、剪切、删除、左右移动等,以满足特殊需求  按钮"Format SQL" 能将语句块中的杂乱语句以缩进的格式进行重编排  运行命令 "explain plan for SQL" 或按菜单项 "Explain Plan",能快速地显示 SQL 的执行计划; "Export" 按钮或菜单项,能直接将 SELECT 语句结果转化为 INSERT 语句,方便于数据移植、拷贝等  运行命令"schema tablename"能显示表 Table 或视图 view 的生成 schema,即 Table 或 view 是如何创建的(包括索引 Index及约束条件 Constraints)  全面支持 PL/SQL(包括 Procedure、 Function、Trigger、 Package),能够显示 DBMS_OUPTPUT.PUT_LINE 的输出;能够给出错误信息,甚至光标能够精确定位错误所在的行列位置,极大地方便于调试  提供对常用数据字典(如 Tables、Views、Indexes 等)通配符查询、删除、修改等