IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

关于oracle ebs系统apps的一些故事

叶德华的博客 2015-01-24 23:42:54 累计浏览 2,320 次
本机暂存

   Why call it Apps and not Oracle ERP ?

   以前就很想知道为什么人们常常把Oracle E-Business Suite称作“Apps”?就因为Apps是Oracle Applications的缩写么?也许是。其实这个问题给了我一个很好地理由来解释APPS schema的进化史。

   九年前我开始从事Oracle Financials的工作,那时每一个模块都有它自己database schema(当然现在还有,比如po,inv,wip,ar...),对于一个做采购的用户(EBS 10.6版本前),想要查看数据,就要使用po的Schema来查看。同样,如果一个AR模块的report或者form想要访问PO_HEADERS_ALL,他们就需要加上前缀'PO'、PO.PO_HEADERS_ALL。但是EBS里有很多的数据库Schema(一般情况下一个模块一个Schema),每一个表都有它所对应的schema,这样我们写SQL或者在写代码的时候,经常要加一个Schema前缀到表的前面,这就比较讨厌。

   所以后来,Oracle引入了一个新的schema——“APPS”,其他schema下的数据,在apps下都能看到,这样我们就不用每次都要加前缀才能查看其他模块的数据了,用户可以轻松的访问任何模块的表数据。同样,如果想要增加一个新的表到系统中,我们需要做以下几件事情:

-- Step 1:
Connect to po/po@XX_DEVDB
Create table PO_HEADERS_ALL ( ...all columns here )
-- Step 2:
Grant all on po_headers_all to apps
-- Step 3:
connect to apps/apps@XX_DEVDB
Create or replace synonym PO_HEADERS_ALL for PO.PO_HEADERS_ALL

   上面的代码的意思就是,先在相应的schema下面创建table,然后授予apps对该table的权限,再登录apps,在apps schema下创建同义词。通过以上的几步,你就会发现,APPS schema不用加前缀(po.po_headers_all)就可以访问PO_HEADERS_ALL了。

   现在在Oracle ERP里,我们已经有超过100个schema了,比如:po、ar、ap、gl……,Form、Report、workflow里我们只需要连接到apps schema下即可所有模块的数据,ALL ROADS LEAD TO ROME,这里ALL Schema Lead to APPS.因此假设你想关联ap_invoices_all table(AP schema) 和PO_HEADERS_ALL table(AP schema),你只需要简单的连上APPS,然后写:

SELECT 'x'
  FROM po_headers_all  p,
       ap_invoices_all a
 WHERE a.po_id = p.po_id;

   在10.6版本前你不得不这么写:

SELECT 'x'
  FROM po.po_headers_all  p,
       ap.ap_invoices_all a
 WHERE a.po_id = p.po_id;

   Moral of the Story is:

   (1)所有的PL/SQL Package要在APPS Schema下创建。

   (2)所有的View要在APPS Schema下创建。

   (3)对于每一个独立Schema下的表数据,在Apps schema下要同样有一个synonym存在。

   (4)不是在Apps Schema下创建表。

   (5)对于客户化来说,至少应该有一个custom schema来用于客户化表的创建。

   综上,也就是说其实APPS Schema下面并不拥有表,表都是其他Schema下的,在APPS中只是存在一个访问其他Schema下表的同义词。

   PS:本文转自“Paul's Notes”的《Why call it Apps and not Oracle ERP》,只做学习、交流之用。

同分类推荐文章

  1. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
  2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
  3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. Facebook 网站架构 (累计阅读 11,108)
  2. 腾讯php程序员面试题目答案 (累计阅读 8,970)
  3. 分布式系统的事务处理 (累计阅读 7,382)
  4. PHP Extension开发基础 (累计阅读 6,642)
  5. 如何设计用户登录 (累计阅读 6,642)
  6. MySQL 5.6 测试之 Replication(主从复制) (累计阅读 6,267)
  7. 用 redis 实现和保护 12306 (累计阅读 5,623)
  8. 数据库的堆表与索引组织表的数据存储格式讨论 (累计阅读 5,596)
  9. 给学PHP、工作中在用PHP的朋友们推荐几本书 (累计阅读 5,363)
  10. Django框架ORM操作详解 (累计阅读 5,140)