为了防止sid和instance_name不同的情况,现在要求根据sid取得instance_name。用sql语言,我刚刚接触oracle,不知道该怎么写sql,望知道的告诉我下,项目急用,多谢。

解决方案 »

  1.   

    你是RAC环境?
    描述的清楚点。
      

  2.   

    用sys_context函数取得instance_name
    SELECT SYS_CONTEXT('USERENV','INSTANCE_NAME') FROM DUAL;取得db_name
    SELECT SYS_CONTEXT('USERENV','DB_NAME') FROM DUAL;
      

  3.   

    SQL> SELECT i.instance_name,s.sid FROM gv$session s,v$instance i
      2  WHERE s.inst_id=i.instance_number AND s.sid=170;INSTANCE_NAME           SID
    ---------------- ----------
    eht                     170SQL> 
      

  4.   

    就是tnsnames.ora里面,一般情况下sid和instance_name是相同的。但是用户可能会修改instance_name,所以需要取得最新的instance_name。
    环境?这个我不是很清楚什么意思,有差别吗。不好意思,我不知道这样问对不对。
      

  5.   

    客户端的tnsname配成什么,服务器不可能知道吧?
    如果是服务器的,那么servicename上面已经说的很清楚了。