plsql調試存儲過程卡住的原因以及處理


用PLSQL調試存儲過程的時候,經常會遇到這個的情況,點調試后,繼續點單步都是灰色,想停下來,但是取消也要點很多次才能取消掉。

就像下面的情況:

    

一直以為是個BUG,直到最近有人告訴我了真相。

出現這個問題的原因,是因為

   1:調試存儲過程要發起兩個會話(運行、調試)

   2:我們plsql的默認配置會話方式,是多路會話(工具-首選項-連接)(關於這個詳見:https://www.cnblogs.com/kerrycode/p/4100865.html)。

         如果在rac環境,實際PLSQL每次新增一個會話,數據都會根據自身情況隨機分配instance。不信的話可以開不同的窗口運行

         select * from v$instance 看結果。

   3:plsql發起調試,數據庫如果把調試和運行的會話分配給了不同的instance,這時候,就會出現上面的情況。

解決問題的辦法有兩個:

  1:把plsql的會話改為雙路(單路不能調試),但是這個有個缺點,就是雙路只能有一個SQL在運行。也就是說,你調試存儲過程的時候,不能在這個打開的plsql做其他任何其他事情。

  2:修改tns,改為指定instance。在tns配置中加上instance,比如:

不給看=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 不給看.不給看.不給看.不給看 )(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)(SERVICE_NAME = 不給看)(instance_name= 不給看)
    )
  )

這樣就可以了。

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM