0

Windows と AIX で実行されるサーバー アプリケーションがあります。クライアント アプリケーションが Windows で実行されているインスタンスに接続し、クエリをサーバー側に送信するレポートを実行すると、すべてがうまくいきますが、クライアント アプリケーションがサーバー インスタンスに接続すると、 AIX で実行され、サーバー側に同じクエリを送信する同じレポートを実行すると、アプリケーションがハングします。

調査の結果、sqlplus を使用して AIX のコマンド ラインからクエリを直接実行したため、クエリがハングの原因であることがわかりました。

DB は、Windows Server を搭載した別のマシンで実行されている Oracle であることに注意する必要があります。

私が話しているクエリは次のとおりです。

select z_name, s_date,
        n_count, f_count, m_count, s_count, d_count, a_count,
        (n_count + f_count + m_count + s_count + d_count + a_count) as d_total
from
(select z_name, s_date,
          nvl((select s_count from vReport S1 where S1.z_id = S.z_id and S1.s_date = S.s_date and s_app = 'NC'), 0) as n_c_count,
          nvl((select s_count from vReport S1 where S1.z_id = S.z_id and S1.s_date = S.s_date and s_app = 'FS'), 0) as f_s_count,
          nvl((select s_count from vReport S1 where S1.z_id = S.z_id and S1.s_date = S.s_date and s_app = 'MC'), 0) as m_c_count,
          nvl((select s_count from vReport S1 where S1.z_id = S.z_id and S1.s_date = S.s_date and s_app like 'SAA %'), 0) as s_c_count,
          nvl((select s_count from vReport S1 where S1.z_id = S.z_id and S1.s_date = S.s_date and s_app = 'DC'), 0) as d_c_count,
          nvl((select s_count from vReport S1 where S1.z_id = S.z_id and S1.s_date = S.s_date and s_app = 'SA'), 0) as a_c_count,
          nvl((select sum(s_count) from vReport S1 where S1.z_id = S.z_id), 0) as d_total
from rvReport S
where s_date between TO_DATE('2012-08-01 00:00:00','YYYY-MM-DD HH24:MI:SS') and  TO_DATE('2012-08-02 23:59:59','YYYY-MM-DD HH24:MI:SS')
and  z_id in (3,61,41,21) 
union 
select distinct z_name, SYSDATE,
          nvl((select sum(s_count) from vReport S1 where S1.z_id = S.z_id and s_app = 'NC' and s_date between TO_DATE('2012-08-01 00:00:00','YYYY-MM-DD HH24:MI:SS') and  TO_DATE('2012-08-02 23:59:59','YYYY-MM-DD HH24:MI:SS')), 0) as n_c_count,
          nvl((select sum(s_count) from vReport S1 where S1.z_id = S.z_id and s_app = 'FS' and s_date between TO_DATE('2012-08-01 00:00:00','YYYY-MM-DD HH24:MI:SS') and  TO_DATE('2012-08-02 23:59:59','YYYY-MM-DD HH24:MI:SS')), 0) as f_s_count,
          nvl((select sum(s_count) from vReport S1 where S1.z_id = S.z_id and s_app = 'MC' and s_date between TO_DATE('2012-08-01 00:00:00','YYYY-MM-DD HH24:MI:SS') and  TO_DATE('2012-08-02 23:59:59','YYYY-MM-DD HH24:MI:SS')), 0) as m_c_count,
          nvl((select sum(s_count) from vReport S1 where S1.z_id = S.z_id and s_app like 'SAA %' and s_date between TO_DATE('2012-08-01 00:00:00','YYYY-MM-DD HH24:MI:SS') and  TO_DATE('2012-08-02 23:59:59','YYYY-MM-DD HH24:MI:SS')), 0) as s_c_count,
          nvl((select sum(s_count) from vReport S1 where S1.z_id = S.z_id and s_app = 'DC' and s_date between TO_DATE('2012-08-01 00:00:00','YYYY-MM-DD HH24:MI:SS') and  TO_DATE('2012-08-02 23:59:59','YYYY-MM-DD HH24:MI:SS')), 0) as d_c_count,
          nvl((select sum(s_count) from vReport S1 where S1.z_id = S.z_id and s_app = 'SA' and s_date between TO_DATE('2012-08-01 00:00:00','YYYY-MM-DD HH24:MI:SS') and  TO_DATE('2012-08-02 23:59:59','YYYY-MM-DD HH24:MI:SS')), 0) as a_c_count,
          nvl((select sum(s_count) from vStats S1 where S1.z_id = S.zone_id  and s_date between TO_DATE('2012-08-01 00:00:00','YYYY-MM-DD HH24:MI:SS') and  TO_DATE('2012-08-02 23:59:59','YYYY-MM-DD HH24:MI:SS')), 0) as z_total
from rvReport S
where s_date between TO_DATE('2012-08-01 00:00:00','YYYY-MM-DD HH24:MI:SS') and  TO_DATE('2012-08-02 23:59:59','YYYY-MM-DD HH24:MI:SS')
and z_id in (3,61,41,21)
) STEMP

注: 言い忘れましたが、ユニオンを削除した後の select ステートメントの "and z_id in (3,61,41,21)" という条件を指定すると、クエリは AIX で実行され、ハングすることはありませんが、返されます。間違ったデータ。

4

0 に答える 0