大量Oracle软件包



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

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

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

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

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

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

  1. 将逻辑过程和功能整合到一个包中
  2. 有一种方法可以在全局中定义成员变量,并且可以使用包内或包外访问
  3. 包中定义的程序单元将立即加载到内存中进行处理,并减少上下文切换时间

链接下提供了更多详细信息:https://oracle-concepts-learning.blogspot.com/

最新更新