Orhan AKDOĞAN > Genel

Oracle – Dynamic Cursor SQL

 
CREATE OR REPLACE PROCEDURE query_invoice(
       month VARCHAR2, 
       year VARCHAR2) IS
    TYPE cur_typ IS REF CURSOR;
    c cur_typ;
    query_str VARCHAR2(200);
    inv_num NUMBER;
    inv_cust VARCHAR2(20);
    inv_amt NUMBER;
BEGIN
    query_str := 'SELECT num, cust, amt FROM inv_' || month ||'_'|| year 
      || ' WHERE invnum = :id';
    OPEN c FOR query_str USING inv_num;
    LOOP
        FETCH c INTO inv_num, inv_cust, inv_amt;
        EXIT WHEN c%NOTFOUND;
        -- process row here
    END LOOP;
    CLOSE c;
END;

Oracle – “ORA-01000: maximum open cursors exceeded” hatası

Bu hata Oracle Sistem Parametrelerinde belirtilen açık cursor değerinin üzerine çıkıldığında alınır.

Aşağıdaki sorgular ile,
Oracle parametrelerindeki değeri görebilir,
Kullanılan cursor adetlerini izleyebilir
ve open_cursors değerini değiştirebilirsiniz.

--Oracle Parametrelerindeki "open_cursors" değerini gösterir.
SELECT a.NAME, a.VALUE, upper(i.instance_name) instance_name
FROM v$parameter a, v$instance i
Where name='open_cursors'

-- Oracleda Kullanılan Cursor Adetlerini gösterir
Select s.username "User",sum(a.value) "Toplam Cursor", avg(a.value) "Ortalama", max(a.value) "Max", s.machine "Makine"
From v$sesstat a, v$statname b, v$session s
where a.statistic# = b.statistic# and s.sid=a.sid
and b.name = 'opened cursors current'
group by s.username, s.machine
order by "Toplam Cursor" desc

--Oracle Parametrelerindeki "open_cursors" değerini update eder.
ALTER SYSTEM SET open_cursors = 5000 SCOPE=BOTH;

Windows Servisini Manuel Olarak eklemek

sc.exe create "Migration"  binPath= "C:\Program Files\orhan\Migration Service\Migration.exe" DisplayName= "Migration"  START= AUTO

sc description "Migration" "Oracle dan SQL Server'a veri transferi yapar."

net start " Migration" pause

Hoşgeldin Yeni Yıl

Hoşgeldin Yeni Yıl :)

Korumalı: Elif Su

Bu içerik parola ile korunmaktadır. Görmek için lütfen aşağı parolanızı girin:

Merhaba Dünya

Merhabalar, yeni blog ile uzun soluklu bir paylaşım sürecine başlıyorum.