用PLSQL調試存儲過程的時候,經常會遇到這個的情況,點調試後,繼續點單步都是灰色,想停下來,但是取消也要點很多次才能取消掉。 就像下麵的情況: 一直以為是個BUG,直到最近有人告訴我了真相。 出現這個問題的原因,是因為 1:調試存儲過程要發起兩個會話(運行、調試) 2:我們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= 不給看) ) )
這樣就可以了。