RAC:在子查詢使用gv$檢視,有時查詢不出資料

denglt發表於2012-09-20
今天寫一個監控RAC中所有節點的指令碼,發現在子查詢中使用gv$檢視,有時不能查詢出資料.
 
環境,實驗如下
 
SQL> conn  /  as sysdba;
Connected.
SQL> select * from v$version;
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0      Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Productio
NLSRTL Version 10.2.0.4.0 - Production
5 rows selected.
SQL> select inst_id,instance_name from gv$instance;
INST_ID INSTANCE_NAME
------- ----------------
      1 gxdb1
      2 gxdb2
2 rows selected.

SQL> select (select saddr
  2            from gv$session
  3           where inst_id = s.inst_id
  4             and sid = s.SID) saddr,
  5         s.INST_ID,
  6         s.SID
  7    from gv$session_wait s
  8   where rownum = 1;
SADDR           INST_ID     SID
---------------- ------- -------
                       2    2033
1 row selected.
 
注:SADDR沒有資料

SQL> select (select saddr
  2            from gv$session
  3           where inst_id = s.inst_id
  4             and sid = s.SID) saddr,
  5         s.INST_ID,
  6         s.SID
  7    from gv$session_wait s
  8   where s.inst_id = 2
  9     and s.sid = 2033;
SADDR           INST_ID     SID
---------------- ------- -------
0700000CC2CD6D20       2    2033
 
這次有資料了
 
1 row selected.

SQL> select distinct (select saddr
  2                     from gv$session
  3                    where inst_id = s.inst_id
  4                      and sid = s.SID) saddr,
  5                  s.INST_ID,
  6                  s.SID
  7    from gv$session_wait s
  8   where s.inst_id = 2
  9     and s.sid = 2033;
SADDR           INST_ID     SID
---------------- ------- -------
                       2    2033
1 row selected.
 
使用了distinct 又看不到資料了.
 
還有一些其他情況也會看不到資料,不一一例舉了.
 
這算不算是Oracle的bug呢.呵呵...

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/195110/viewspace-744411/,如需轉載,請註明出處,否則將追究法律責任。

相關文章