space oracle synonym占用多少磁盘?

How many disk space oracle synonym takes?

我们公司有一个问题,因为每个人都共享开发 oracle 数据库。因此,如果一个开发人员想要修改一个过程或包,例如,其他人的应用程序将失败,直到第一个开发人员结束他的工作。

所以我认为如果我可以在我的数据库中创建一个用户用于每个工作需求在数据对象的一个​​(或多个)同义词中,那就太好了。

例子来了:

我有一个需求,例如D9877。我对这个需求的工作是修改一个名为 MYPCKG 的包。因此,为了开始分配,我首先在 MYPCKG 的同义词中创建一个 Oracle 用户 D9877。这样,任何修改都将应用于同义词,而不会影响任何其他开发人员。

这是我的问题:

我觉得你对同义词的理解不太正确。

同义词是另一个对象上的 link。作为 Windows 上的文件快捷方式或 Linux 上的 link 上的快捷方式。

为了能够并行更改某些包,您需要确保您的应用程序可以安装在专用架构上。您可以从主应用程序架构中为 tables 创建本地同义词(因为 tables 确实需要 space!),并在您的架构中编译包。其他开发人员可以拥有自己的应用程序版本(即包、视图)。

但是您需要考虑一些情况,例如触发器(在同一个 table 上有 2 个版本的触发器可能会很棘手),一些动态 DDL 到 table 由您的应用程序执行,比如截断 table 等

同义词占用几个字节的磁盘space,但这一点都不重要。这种方法不会解决这个问题。

首先,您似乎误解了同义词的含义。它是同一对象的另一个名称。您不能 'apply modifications to the synonym',但即使可以,您也会修改对象本身。

有时可以使用同义词来区分软件包版本。假设你有 A 包;都用它。您可以将包 A_VERSION_1 和 A_VERSION_2、public 同义词 A 用于 A_VERSION_2 和私有同义词 A 用于 A_VERSION_2。如果这样做,您将可以使用 A_VERSION_2 调试您的应用程序,而所有其他应用程序使用 A_VERSION_1.

坏消息是这种方法也行不通。它仅在您直接从应用程序调用 A 时有效。但是让我们假设我们有两个包,A 和 B(authid 定义器)。 B 使用 A。您从您的应用程序调用 B,您应该修改 A。在这种情况下,B 永远不会查看您的私有同义词。你也需要用它的私有同义词来制作 B_VERSION_2 等等。鉴于数据库对象之间的调用次数,这是不可能的使用方式。