重命名 plsql 包后 Oracle SQL Developer 冻结

Posted

技术标签:

【中文标题】重命名 plsql 包后 Oracle SQL Developer 冻结【英文标题】:Oracle SQL Developer freezes after renaming plsql package 【发布时间】:2019-01-08 15:57:20 【问题描述】:

如果我重命名包然后编译包,SQL-Developer 会冻结。这是一个已知问题吗/是否有针对此行为的解决方案?

在早期版本(例如 4.x)中,创建了一个新包。

添加或删除函数和程序正在运行,但未更改包的名称。我在sqldeveloper被冻结后做了一个截图-我必须用windows taskmanager杀死它。

新包创建完成,我启动新的sqldeveloper后可以编辑它。

谢谢

SQL Developer 版本 18.3.0.277 Oracle 数据库 12c

完整的 jstack 输出:https://pastebin.com/VXZb2rSn

java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Found 1 deadlock.

【问题讨论】:

问题依然存在(V19.1.0) 【参考方案1】:

打开一个包(规范!)

create or replace PACKAGE PACKAGE_SO AS 

  /* TODO enter package declarations (types, exceptions, methods etc) here */ 

END PACKAGE_SO;

获取代码,“重命名”包。

create or replace PACKAGE PACKAGE_SO_NEW_NAME AS 

  /* TODO enter package declarations (types, exceptions, methods etc) here */ 

END PACKAGE_SO_NEW_NAME;

编译。

我得到一个弹出对话框,表明一个新的包已经创建,在短暂的停顿后,我得到一个新的代码编辑器。

我的第一个包裹不再打开。

我需要刷新树上的 Package 项目才能看到新的出现。

这是版本 18.3,使用 Java 8,在 Mac 上针对 18c (12.2) 数据库。

现在,为什么它不适合你?

似乎底层框架代码正试图在非 UI 线程上执行用户界面工作,但它被卡住了。

不确定是什么原因导致您出现这种情况,而不是我,但这将是一个错误。

【讨论】:

我在 Windows、不同的机器、不同的数据库上工作,但总是相同的行为。如果我重命名现有的包(规范或正文),开发人员会崩溃。 @systemlos 如果您确实遇到了崩溃,请分享 java 堆栈转储。如果您只是让应用程序冻结(而不是崩溃),请使用您的 java home bin 目录中的 jstacke.exe 并附加到 sql 开发人员进程 ID 以获取一个 - 并在此处分享 你是对的,这是一个冻结。发布了 jstack 输出 @systemlos 应该还有很多,这不是完整的堆栈,只有 2 个线程值得 不,我没有取消停靠代码编辑器。发布了 pastebin 链接。

以上是关于重命名 plsql 包后 Oracle SQL Developer 冻结的主要内容,如果未能解决你的问题,请参考以下文章

pl sql developer怎么执行sql

pl sql developer怎么执行sql

oracle怎么创建表空间

plsql developer如何导出数据库,不是导出表!

SQL记录-PLSQL游标

如何用PLSQL Developer连接远程的ORACLE数据库