簡體   English   中英

遠程調試PL / SQL包

[英]Remote debug PL/SQL packages

假設我有一個正在運行的Java Web應用程序,我正在其中嘗試使用調用數據庫中PL / SQL包的JDBC來保存一些數據。

在Java代碼中,已調用execute()函數,要保存的數據已發送到數據庫中的PL / SQL包中,該包將處理數據並最終將其保存。

有沒有一種方法可以使用Oracle SQL Developer或PL / SQL Developer即時調試稱為PL / SQL的程序包,這些IDE是否支持這種遠程調試功能?

您正在尋找的是Oracle SQL Developer中提供的遠程調試功能。 有幾個先決條件要滿足:

  1. 您要調試的所有軟件包都應編譯為debug
    alter package SCHEMA.PACKAGE_NAME compile debug;
  2. 您應該使用適當的特權授予要從其執行遠程調試的模式的用戶:
    • grant debug connect session to USER_NAME; 用於連接遠程用戶的會話
    • grant debug any procedure to USER_NAME; 用於調試程序(包括捆綁在軟件包中的程序)
    • 如果您使用Oracle 12c,則應考慮其他ACL限制,在此處此處查看 ,還請注意,有一些有用的Oracle視圖,例如dba_network_acl_privileges用於檢查您現有的ACL特權
  3. 遠程用戶應該能夠為調試器“發出信號”
    • grant execute on SYS.DBMS_DEBUG_JDWP to REMOTE_USER_NAME; 有權訪問其CONNECT_TCP過程

如果這些要求都滿足(或者你能滿足他們),您可以按照例如該條目中蘇哈珀的博客(或該文章在同一作者的博客甲骨文,或這一個 ),以達到自己的目標。 簡而言之:

  1. 您應該在特定端口上本地啟動調試偵聽器並設置斷點(或設置適當的調試器選項)。
  2. 遠程用戶應在運行目標代碼之前運行exec DBMS_DEBUG_JDWP.CONNECT_TCP( 'ip-address', port ) ,這可以在會話登錄觸發器上實現。
  3. 遠程調試代碼。

對此可能有一些更具體的說明(對於Oracle,它不只是真實的),但這就是我通常的處理方式。

我還要提到PL / SQL Developer不幸的是不支持遠程調試(使用DBMS_DEBUG包而不是DBMS_DEBUG_JDWP ),即使在最新版本中也是如此。 Oracle SQL Developer是用Java編寫的,而PL / SQL Developer不是Java的,我認為這是問題的根源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM