oracle - 重新编译 Oracle Packages 安全吗

标签 oracle plsql package

嗨 我们有一个基于 Oracle 的第三方应用程序,附带预编译的二进制(包装)包。 但是当我在 Oracle SQL Developer 中编译它们时(右键单击 -> 全部编译),它们就会失效。

重新编译是一个安全的操作,没有副作用吗?

最佳答案

主要的副作用是,如果您编译另一个包所依赖的包,则您可能会面临使任何现有 session 的依赖包无效的风险 - 即使编译没有错误。这对于 session 生命周期较短的应用程序来说很好,但对于 session 生命周期较长的应用程序来说这是一个问题。如果您在 JDBC 中使用连接池,则缓存的 session 将长期存在并且可能会失效。您必须刷新缓存的 session 以避免错误。

您要查找的错误是“ORA-04068:包的现有状态已被丢弃”。

参见here了解更多信息。

特别是对于 SQL Developer - 它不能很好地处理包装包的重新编译。如果您要重新编译它们,请尝试其他工具,例如 TOAD 或 PL/SQL Developer,或在 SQL Plus 命令行中使用“alter package”命令。

关于oracle - 重新编译 Oracle Packages 安全吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3823932/

相关文章:

java - 准备好发布 Java 程序

python - 如何从Python中的不同文件夹导入类

Oracle 包含返回误报 BLOB 的函数

sql - PL/SQL 中的 Oracle 数据库依赖项

oracle - 用于 PL/SQL 开发的 IDE

oracle - ORA-03113 : end-of-file on communication channel with CAST MULTISET 的解决方法

oracle - 为什么参数的默认值是null?

Python - 在 setup.py 安装之前和之后导入包模块

database - Oracle Data Masking 使用临时表中的随机名称

sql - 行到列数据