大量Oracle软件包

大量Oracle软件包,oracle,stored-procedures,oracle11g,Oracle,Stored Procedures,Oracle11g,我正在基于依赖关系图为Oracle存储过程(SP)生成代码。为了减少重新编译单元的大小,我将它们组织在Oracle软件包中。但这会导致大量软件包(250+)。程序数量为1000+ 我的问题:大量的软件包是否会给Oracle 11gR2+带来性能问题?或者是否存在任何与部署/管理相关的问题?有人可以分享他们使用大量Oracle软件包的经验吗 在我开发的一个产品中,该模式有数千个存储过程、函数和包,总共有将近50万行代码。甲骨文不应该对此有任何问题。最头疼的是对象的维护和版本控制 我们将每个包头和包

我正在基于依赖关系图为Oracle存储过程(SP)生成代码。为了减少重新编译单元的大小,我将它们组织在Oracle软件包中。但这会导致大量软件包(250+)。程序数量为1000+


我的问题:大量的软件包是否会给Oracle 11gR2+带来性能问题?或者是否存在任何与部署/管理相关的问题?有人可以分享他们使用大量Oracle软件包的经验吗

在我开发的一个产品中,该模式有数千个存储过程、函数和包,总共有将近50万行代码。甲骨文不应该对此有任何问题。最头疼的是对象的维护和版本控制

我们将每个包头和包体存储在单独的文件中,以便能够独立地对它们进行版本设置(包头的更改频率通常比包体的更改频率低得多),并且我们使用了一个编辑器,该编辑器支持使包内的导航更易于管理。当您在一个包中有一百个或更多的过程和函数时,找到进行更改的正确位置所花费的时间与实际完成工作所花费的时间相同!另一个伟大的工具是,它索引了整个代码库,并使搜索变得超级快速


在部署方面,我们只使用了一个简单的脚本包装SQL*Plus来加载文件并记录任何编译或连接问题。有更多的高级工具位于源代码管理系统之上,“管理”部署和依赖项,但我们从未发现这是必要的。

在oracle中编写包的目的是实现模块化方法的概念,其解释如下:

  • 将逻辑程序和功能整合到一个包中
  • 有一种方法可以在全局中定义成员变量,并且可以通过包内或包外访问
  • 包中定义的程序单元将立即加载到内存中进行处理,并减少上下文切换时间
  • 链接下提供了更多详细信息: