Oracle_Form_实战总结
- 格式:pdf
- 大小:698.16 KB
- 文档页数:40
Lab 1: 创建客户化应用本节介绍如何创建一个客户化应用。
Step 1: 建立Directory以applprod用户登录操作系统运行:$ cd $APPL_TOP在目录$APPL_TOP下建立目录satyam,其结构如图(注意大小写的区分)图1.1Step 2: 修改Environment File以applprod用户登录操作系统修改环境文件 PROD.env ,增加如下2行:SATYAM_TOP = “/demoapp/demoappl /satyam/1.0.0”Export SATYAM_TOP重启ORACLE APPLICATIONS,以使更改生效。
Step 3: 创建Tablespace/User以applprod用户登录操作系统运行:$ sqlplus在SQL-PLUS中,以用户名SYSTEM连结数据库运行以下命令建立TABLESPACE:create tablespace satyam_datadatafile ' /demo/demodata/satyam_data01.dbf'size 500M reuse autoextend on next 10M ;create tablespace satyam_idxdatafile '/demo/demodata/satyam_idx01.dbf'size 100M reuse autoextend on next 10M ;运行以下命令建立USER:create user satyamidentified by satyamdefault tablespace satyam_datatemporary tablespace temp ;运行以下命令授权:grant connect, resource to satyam ;grant select any table to satyam ;grant select any sequence to satyam ;如果是一次性导入的话下面是运行创建Table, Sequence, Trigger, Synonym, View,Package等的脚本,在下一节再讨论。
Step 4: Application Setup操作者必须先登录OA系统,并以“系统管理员”职责进入“浏览器”窗口。
(1) Application Register在功能菜单中选择“应用-注册”,打开“应用”窗口新建一条记录(具体内容如下),保存后,关闭该窗口Application SATYAM CustomizationShort Name SATYAMBasepath SATYAM_TOPDescription SATYAM Customization(2) Oracle Users在功能菜单中选择“安全性-ORACLE-注册”,打开“ORACLE用户”窗口新建一条记录(具体内容如下),保存后,关闭该窗口Database User Name SATYAMPassword 相应口令(系统要求输入2次,以确认)Privilege EnabledInstall Group 1Description SATYAM Customization(3)Data Groups在功能菜单中选择“安全性-ORACLE-数据组”,打开“数据组”窗口用窗口菜单“查询-查找”来检索出“标准”数据组。
并在其下的明细行中新建一条记录(具体内容如下),保存后,关闭该窗口(如果OA启用了MRC,则需要在“MRC”数据组中添加同样一条记录)。
Application SATYAM CustomizationORACLE ID APPSDescription(4)Request Groups在功能菜单中选择“安全性-责任-请求”,打开请“求组窗口”,创建一条新记录。
Group SATYAM Concurrent ProgramsApplication SATYAM CustomizationCodeDescription接下来的步骤是建立Menu,Responsibility,Profile等,在此就不再一一赘述了。
Lab 2: 创建客户化数据库对象的注意事项在开发客制化Form往往要创建的新的数据库对象。
比如。
比如一个客制化的应用为SATYAM,对应的Schema为SATYAM,那么实在对象如table、Sequence、index、triggers等应建在SATYAM Schema的表空间中,其他代码对象如packages, views, procedures, functions等创建在Apps Schema下,常见错误是把表建在Apps Schema下,又来建别名,这个时候删除别名时会报对象不存在,而建别名的时候又报对象已存在。
Apps Schema应创建其他用户对象的synonyms或者得到授权访问这些对象。
下面是一段典型创建客户化表,索引,视图等对象的典型代码,可以对比验证下是否符合上一段所说的原则。
PROMPT CONNECT DATABASE...CONNECT SATYAM/&&SATYAM_PASSWORD@&&SID_NAME;--以SATYAM用户登录,创建实在对象PROMPT CREATE TABLE......DROP TABLE satyam_catalog_group_headers_all;CREATE TABLE satyam_catalog_group_headers_all( CATALOG_GROUP_HEADER_ID NUMBER not null,CATALOG_GROUP_SERIAL_NUMBER VARCHAR2(30),CATALOG_GROUP_NAME VARCHAR2(100),CATALOG_GROUP_DESCRIPTION VARCHAR2(240),… ,ORG_ID NUMBER not null,CREATION_DATE DATE not null,CREATED_BY NUMBER not null,LAST_UPDATED_BY NUMBER not null,LAST_UPDATE_DATE DATE not null,LAST_UPDATE_LOGIN NUMBER,ATTRIBUTE_CATEGORY VARCHAR2(30),ATTRIBUTE1 VARCHAR2(150),… ,ATTRIBUTE15 VARCHAR2(150),REQUEST_ID NUMBER,PROGRAM_APPLICATION_ID NUMBER,PROGRAM_ID NUMBER,PROGRAM_UPDATE_DATE DATE) TABLESPACE satyam_data;PROMPT CREATE INDEX......drop index SATYAM_CATALOG_group_HEADERS_U1;drop index SATYAM_CATALOG_group_HEADERS_U2;CREATE UNIQUE INDEX SATYAM_CATALOG_group_HEADERS_U1 ONSATYAM_CATALOG_group_HEADERS_ALL(catalog_group_header_id) TABLESPACESATYAM_IDX;CREATE UNIQUE INDEX SATYAM_CATALOG_group_HEADERS_U2 ONSATYAM_CATALOG_group_HEADERS_ALL(org_id,catalog_group_name) TABLESPACESATYAM_IDX;PROMPT GRANT/REVOKE OBJECT PRIVILEGES --向APPS用户授权GRANT SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER, INDEX ON SATYAM.SATYAM_CATALOG_group_HEADERS_ALL TO APPS WITH GRANT OPTION; GRANT SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER, INDEX ON SATYAM.SATYAM_CATALOG_group_lineS_ALL TO APPS WITH GRANT OPTION;PROMPT CREATE SEQUENCEDROP SEQUENCE SATYAM_CATALOG_group_HEADERS_S;CREATE SEQUENCE SATYAM_CATALOG_group_HEADERS_S START WITH 1;PROMPT CONNECT DATABASE......CONNECT APPS/&&APPS_PASSWORD@&&SID_NAME;--以APPS用户登录,创建虚对象PROMPT CREATE SYNONYM.....DROP SYNONYM SATYAM_CATALOG_group_HEADERS_ALL;DROP SYNONYM SATYAM_CATALOG_group_HEADERS_S;CREATE SYNONYM SATYAM_CATALOG_group_HEADERS_ALL FORSATYAM.SATYAM_CATALOG_group_HEADERS_ALL;CREATE SYNONYM SATYAM_CATALOG_group_HEADERS_S FORSATYAM.SATYAM_CATALOG_group_HEADERS_S;COMMIT;PROMPT CREATE OR REPLACE VIEW.....CREATE OR REPLACE VIEW SATYAM_CATALOG_GROUP_HEADERS ASSELECTcatalog_group_header_id,catalog_group_serial_number,catalog_group_name,catalog_group_description,…,org_id,creation_date,created_by,last_updated_by,last_update_date,last_update_login,attribute_category,attribute1,…,attribute15,request_id,program_application_id,program_id,program_update_dateFROM satyam_catalog_group_headers_allWHERE NVL(ORG_ID,NVL(TO_NUMBER(DECODE(SUBSTRB(USERENV('CLIENT_INFO'), 1, 1),' ',NULL,SUBSTRB(USERENV('CLIENT_INFO'), 1, 10))), -99)) =NVL(TO_NUMBER(DECODE(SUBSTRB(USERENV('CLIENT_INFO'), 1, 1),' ', NULL,SUBSTRB(USERENV('CLIENT_INFO'), 1, 10))), -99) ;CREATE OR REPLACE VIEW SATYAM_CATALOG_GROUP_HEADERS_V ASSELECTcatalog_group_header_id,catalog_group_serial_number,catalog_group_name,catalog_group_description,…,org_id,creation_date,created_by,last_updated_by,last_update_date,last_update_login,attribute_category,attribute1,…,request_id,program_application_id,program_id,program_update_dateFROM satyam_catalog_group_headers;在上段代码中,首先建立了一个satyam_catalog_group_headers_all基表,有几个特殊字段ORG_ID(保存OU_ID),五个Set_Who字段(CREATION_DATE、CREATED_BY、CREATION_DATE、CREATED_BY、LAST_UPDATE_LOGIN)相信大家都很熟悉了。