Rumah  >  Artikel  >  pangkalan data  >  Beberapa petua dan kaedah untuk menyahpepijat prosedur tersimpan dalam Oracle

Beberapa petua dan kaedah untuk menyahpepijat prosedur tersimpan dalam Oracle

PHPz
PHPzasal
2023-04-25 16:12:571922semak imbas

Prosedur tersimpan Oracle ialah objek pangkalan data tersusun yang boleh dilaksanakan berulang kali Untuk mengoptimumkan prestasi pangkalan data dan menjimatkan masa, banyak pembangun menggunakan prosedur tersimpan. Tetapi apabila ralat berlaku dalam prosedur tersimpan, penyahpepijatan boleh menjadi rumit. Artikel ini akan memperkenalkan beberapa petua dan kaedah untuk menyahpepijat prosedur tersimpan dalam Oracle.

1. Tetapkan bendera nyahpepijat prosedur tersimpan

Untuk memulakan nyahpepijat prosedur tersimpan, anda perlu menetapkan bendera nyahpepijat dalam kod. Oracle menyediakan pakej yang dipanggil DBMS_DEBUG di mana bendera penyahpepijatan ditetapkan. Kaedah khusus ialah:

  1. Sambung ke pangkalan data Oracle:

sqlplus / as sysdba

  1. Buat pakej DBMS_DEBUG:

SQL> @%ORACLE_HOME%RDBMSadmindbmsdbg.sql

  1. Tukar kepada pemilik prosedur tersimpan yang perlu dinyahpepijat:

SQL>

  1. Mulakan mod penyahpepijatan:

SQL> EXECUTE DBMS_DEBUG_JDWP.CONNECT_TCP('localhost', '4000');

nama hos setempat dan 4000 ialah port penyahpepijatan Java.

  1. Tetapkan bendera nyahpepijat dan mulakan nyahpepijat:

SQL> LAKSANAKAN DBMS_DEBUG_JDWP.SET_BREAKPOINT('schema.package.procedure', 'procedure',1);

Di mana skema ialah skema di mana prosedur tersimpan terletak, pakej ialah pakej di mana prosedur tersimpan terletak, prosedur ialah nama prosedur tersimpan dan 1 ialah nombor baris di mana nyahpepijat perlu ditetapkan.

2. Penyahpepijat jauh bagi prosedur tersimpan

Sebelum penyahpepijat jauh prosedur tersimpan, anda perlu terlebih dahulu menyediakan penyahpepijat Java (seperti Eclipse atau IntelliJ IDEA) secara setempat. Kemudian ikuti langkah ini untuk menetapkan bendera penyahpepijatan jauh dalam Oracle:

  1. Mulakan prosedur tersimpan dalam Oracle
  2. Mulakan mod penyahpepijatan dalam penyahpepijat Java tempatan
  3. Dalam Oracle Sambung ke penyahpepijat Java setempat dalam pakej DBMS_DEBUG:

SQL> LAKUKAN DBMS_DEBUG_JDWP.CONNECT_TCP('localhost','4000′);

SQL> LAKSANAKAN DBMS_DEBUG_JDWP.SET_BREAKPOINT('schema.package.procedure', 'procedure',1);
  1. dalam Java tempatan Mulakan mod nyahpepijat dalam penyahpepijat

Tamatkan mod penyahpepijatan jauh dalam pakej DBMS_DEBUG yang memberitahu Oracle:

  1. SQL> LAKSANAKAN DBMS_DEBUG_JDWP.DISCONNECT;
  2. 3. Selain itu menetapkan bendera penyahpepijatan, anda juga boleh menggunakan penyahpepijat dalam Oracle. Penyahpepijat memudahkan proses penyahpepijatan dan menjadikannya lebih intuitif.

Buka PL/SQL Developer

Buka kod sumber prosedur tersimpan yang perlu dinyahpepijat

Klik kanan pada baris yang perlu dinyahpepijat dan pilih "Togol Breakpoint ” untuk menetapkan titik putus

    Klik “Tools” -> “Debug” -> “Compile as Debug”
  1. Klik “Debug” -> “Start Debug”
  2. Jalankan operasi yang perlu dinyahpepijat sebelum prosedur tersimpan dipanggil
  3. Apabila prosedur tersimpan mencapai titik putus, penyahpepijat akan secara automatik mengganggu perjalanan prosedur tersimpan
  4. Nyahpepijat boleh digunakan Gunakan kawalan dalam penyemak imbas untuk melangkah melalui penyahpepijatan, melihat pembolehubah, dsb.
  5. Selepas penyahpepijatan selesai, klik "Nyahpepijat" -> "Hentikan Penyahpepijatan" untuk menamatkan penyahpepijatan
  6. 4. Log penggunaan Atau pilihan nyahpepijat
  7. Menggunakan pilihan log atau nyahpepijat dalam prosedur tersimpan, anda boleh mengesan aliran pelaksanaan dan data prosedur tersimpan dengan mudah. Anda boleh menggunakan pakej DBMS_OUTPUT untuk mengeluarkan mesej dalam prosedur tersimpan atau menggunakan pilihan penyahpepijatan.
  8. DBMS_OUTPUT:
Menggunakan pakej DBMS_OUTPUT dalam prosedur tersimpan, mesej boleh dipaparkan semasa pelaksanaan prosedur tersimpan. Contoh kod adalah seperti berikut:

BUAT ATAU GANTIKAN PROSEDUR my_procedure IS

BERMULA

​​DBMS_OUTPUT.PUT_LINE('Hello World!');

END;

Pilihan nyahpepijat:

Pilihan nyahpepijat ditetapkan menggunakan pernyataan PRAGMA dalam prosedur tersimpan. Contoh kod adalah seperti berikut:

BUAT ATAU GANTIKAN PROSEDUR my_procedure IS
v_debug BOOLEAN := TRUE;

v_message VARCHAR2(100);

MULAI

​​JIKA v_debug THEN 🎜>

TAMAT JIKA;

...
TAMAT;

Di atas ialah beberapa petua dan kaedah untuk menyahpepijat prosedur tersimpan dalam Oracle. Menggunakan kaedah ini, anda boleh menyahpepijat prosedur tersimpan dengan lebih cekap dan menjadikannya berjalan lebih pantas. Jika anda perlu berurusan dengan prosedur tersimpan dalam Oracle untuk masa yang lama, adalah sangat disyorkan agar anda menguasai teknik ini.

Atas ialah kandungan terperinci Beberapa petua dan kaedah untuk menyahpepijat prosedur tersimpan dalam Oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn