客户化Form挂到RMS中步骤

  –一级菜单(folder)
  SELECT *  FROM NAV_FOLDER WHERE parent_folder IS NULL
  –二级菜单(folder)
  SELECT *  FROM NAV_FOLDER WHERE parent_folder =’ORDER_RELATED’ –比如 订购
–菜单项(Form)
  SELECT * FROM NAV_ELEMENT  where element=’cux_jeffdemo’ –Form名是 FM_cux_jeffdemo
  SELECT * FROM NAV_ELEMENT_MODE WHERE folder=’ORDER_RELATED’ –Form 挂哪个Menu(folder)下

  –Menu中的 Form名和实际的Form名对应关系
SELECT * FROM FORM_MENU_LINK WHERE fm_name =’FM_’||upper(‘cux_jeffdemo’) for update
–Form和角色的关系,即哪个角色可以看某个Form
SELECT * from NAV_ELEMENT_MODE_ROLE where element = ‘cux_jeffdemo’ 

–用户和角色的关系
SELECT * FROM USER_ROLE_PRIVS WHERE USERNAME = ‘RMS12DEV’

所以,这里存在两种关系:
(1)User->Role->Form(一个用户可以看见哪些Form)

                 User
                  |
            Role1 – Role2
              |
       Form1-Form2-…
(2)Folder->Form (一个Form挂在哪个地方)

                Folder
                  |
            Folder-Folder…
               |
               .
               .
               .
           Folder-Folder…
               |
          Form1-Form2…

  下面以一个实例说明:
      将form FM_cux_jeffdemo2 挂在rms系统的“订购”–>“固定交易” 菜单下

  Step 1.建立菜单
    向 table NAV_FOLDER 中加入一行(“订购”和“固定交易”两个菜单都有,所以不用建立)

  Step 2.
    向 table NAV_ELEMENT 中加入一行
    ELEMENT    ELEMENT_TYPE    COMPONENT
    cux_jeffdemo2    F    RMS

      –ELEMENT            Form 名
     –ELEMENT_TYPE        类型 F表示Form
     –COMPONENT        挂在RMS下
  Step 3.
    向 table FORM_MENU_LINK 中加入一行
    FM_NAME    MENU_FILENAME
    FM_CUX_JEFFDEMO2    cux_jeffdemo2

    –FM_NAME            ‘FM_’ + Form名
    –MENU_FILENAME        Form名
  Step 4.
   向 table NAV_ELEMENT_MODE 中加入一行
    ELEMENT    NAV_MODE    FOLDER    ELEMENT_MODE_NAME
    cux_jeffdemo2    –DEFAULT–    FIX_DEAL    客户化Form Demo

    –ELEMENT            Form名
    –NAV_MODE            打开Form的状态    查看(VIEW)-编辑(EDIT)-默认(–DEFAULT–)
    –FOLDER            Form放哪一个菜单(folder)下
    –ELEMENT_MODE_NAME    菜单上显示的 prompt

  Step 5.
   向 table NAV_ELEMENT_MODE _ROLE中加入一行
    ELEMENT    NAV_MODE    FOLDER    ROLE
    cux_jeffdemo2    –DEFAULT–    FIX_DEAL    DEVELOPER

    –ELEMENT            Form名
    –NAV_MODE            打开Form状态,需与上一步一致,否则建立不了(与上一步的table设置了外键)
    –FOLDER            同上一步
    –Role            该Form分给哪个Role

  可以查看表 USER_ROLE_PRIVS 知道用户和Role的对应关系

  ———————————
  至此,就可以在rms的菜单项中,看到我们增加的这个菜单了(客户化Form Demo).

初步了解MicroStragey8

MicroStrategy 8由MicroStrategy 7架构发展而来。它继承已成为MicroStrategy技术标志的企业级强度特性—包括最高的用户扩展性、最高的数据扩展性,以即插即用组件方式支持5种商务智能应用,以及不间断操作和强大的用户管理功能。有了MicroStrategy 8,MicroStrategy商务智能产品的强大功能可以扩展到更多的业务人员,管理更多方面的业务绩效。
一.技术突破与优点:

1. 改进的MicroStrategy 8 Web接口: MicroStrategy 8使用了新的优化的用户接口。新的用户接口包含生动的“一键”式操作,通过此接口可以使业务人员在浏览和查看数据时更有效率。它使用一个全新设计的简洁的界面,使用了更多的类似于Windows对话框、浮动提示、取消/重新执行按钮等规范,使得业务人员不通过预先培训就能很容易的使用软件。

2.完全交互式的报表: MicroStrategy 8通过完全交互式的报表和计分卡,增强了MicroStrategy的报表功能。业务用户无需IT人员的支持就可以通过简单的拖拽式操作或点击工具栏图标,查看新的数据或者重新排列与组织报表。

3.在日常报表和计分卡中无缝整合分析内容: 使用MicroStrategy 8可将强大的分析功能直接用于企业报表或计分卡。MicroStrategy 8以两种方式整合分析。第一种方式通过向文档中的报表提供OLAP功能,使业务人员在分析数据时可停留在一定的上下文环境。第二种方法是允许用户从报表文档“钻取”到一个分析视图,此视图可以为详单级数据。这两种方式的分析整合对于业务人员都是自动的和完全无缝的。

4.所见即所得的报表设计: MicroStrategy 8扩展了报表设计功能,在高级用户和报表设计者之外还支持业务人员。MicroStrategy 8在业界第一次实现了在一个零脚本下载的Web界面下,业务用户完全以自定义的所见即所得方式设计报表。所见即所得设计代表了一种简便的设计报表模式,使得普通业务人员可以按照他们想要的方式“调整”报表,而不用费时费力的与报表设计人员反复讨论设计。

5.直接访问 SAP BW: MicroStrategy 8架构中增加了一个新的数据访问引擎。这个新的引擎用于访问多维数据库(MDDB或者OLAP Cube),这个新的动态MDX引擎使用SAP BW的高性能BAPI接口,产生优化的MDX语法。因为MicroStrategy的MDX是在访问SAP InfoCube、QueryCube和ODS的多维模型时动态产生的,所以用户可以透明的钻取到SAP BW取得更多的数据,无需预先编程规划或设计钻取路径。MicroStrategy 8可以合并SAP BW InfoCube和QueryCube数据,包括访问SAP BW的多个实例。

6.直接访问运营数据 (ERP系统): MicroStrategy 8扩展了MicroStrategy的元数据库架构,完全建立在查询基础上的实体和事实可以来自于非模型化数据库。MicroStrategy 8的SQL引擎可以完全使用自定义SQL语句,包括使用存储过程与视图从任意运营系统提取数据展示在MicroStrategy报表中。这些实体与事实完全存放在MicroStrategy元数据库中,能够使用MicroStrategy的安全架构和其他可重用的对象,例如提示等。

7.合并企业的异构数据: MicroStrategy 8扩展了数据建模的灵活性,包括从异构数据存储中整合数据。通过MicroStrategy对象模型中的统一维度,MicroStrategy 8可以在一张报表文档中自动合并不同数据源数据,包括数据仓库、数据集市、SAP BW和其它一些运营型数据库。

8.整合数据挖掘到日常报表或分析: MicroStrategy 8使用“Data Mining Services”扩展了其分析引擎,允许在日常MicroStrategy报表和分析中包含趋势预测功能。MicroStrategy 8的分析引擎包含有四种基本的数据挖掘函数,包括神经网络算法、聚类算法、回归算法和决策树算法,同时也可以从其它的数据挖掘产品比如IBM、SAS和SPSS等使用PMML标准导入数据挖掘模型。有了这项功能,任何数据挖掘算法均可以导入到MicroStrategy中,作为标准的度量使用,象其它度量一样自由地应用于报表、分析和预警。

二.服务模块

1.MicroStrategy OLAP Services MicroStrategy智能服务器的一个选项,允许MicroStrategy Desktop、Office和Web用户操作智能立方体™ .

2.MicroStrategy Report Service , MicroStrategy商务智能平台的企业级报表引擎,分发企业报表

三.用户界面

1.MicroStrategy Desktop 在个人桌面端集成查询、报表、分析与决策支持工作流的商务智能软件组件.

2.MicroStrategy Office 为业务用户访问MicroStrategy平台提供直接开放的访问接口,是MicroStrategy平台的一个选项.

3.MicroStrategy Web 用于监控,报表和分析的高度交互,简便易用的接口.

四.辅助工具

1.MicroStrategy Administrator 提供全面的对商务智能环境系统管理的工具.

2.MicroStrategy Architect 一个快速的开发工具,用于映射数据库的物理结构与逻辑业务模型,并将其存储到集中的元数据库中.

3.MicroStrategy SDK 全面的开发环境,允许快速简便的实现客户化,以及将MicroStrategy平台整合到其它应用.

4.MicroStrategy BI Development Kit CPM起步包,帮助业务用户快速实现制作报表,分析与监控企业绩效。 绩效管理起步包用于解决特定的业务问题,并提供一个理想的框架以快速启动应用。每一个起步包都包括了一个数据模型样例,以及一系列报表和分析,能够运行在现有的数据仓库之上,充分利用已有的企业投资,不需要增加额外的数据抽取和加载.

五.关于项目开发

最简单项目开发流程 
0.介绍元数据库 
1.准备空的RDB,并定义ODBC 2
2.配置元数据库 
3.连接项目源 
4.创建项目 
5.定义数据库实例 
6.选择数据仓库表 1
7.定义事实 
8.定义实体 
(1)定义Item实体 
(2)定义Day实体 
(3)定义Year实体 
9.更新框架 
10.创建度量 
11.创建报表 
12.设置I-SERVER 
13.Web浏览 

完整项目开发 
0.Tutorial DW及项目介绍 
1.以服务器方式连接元数据库 
2.添加数据仓库表 
3.修改事实 
(1)修改QTY(销售数量)事实 
(2)修改AMT(销售金额)事实 
(3)修改COST(成本)事实 
4.修改实体 
(1)Item(商品)实体 
(2)Day(日期)实体 
(3)Year(年)实体 
5.创建新实体 
用实体创建向导创建实体 
修改Customer实体 
修改Emp实体 
6.创建0 base report 
7.报表1 derived metric 
8.报表2 阈值

客户化报表(Report builder开发),挂到RMS步骤

Report builder开发一个Report,怎样挂到RMS上去?
步骤:
(我们这里以GouBao Retail项目为例子 example CUX_GouBaoRep_Demo)

1).生成 CUX_GouBaoRep_Demo.rep格式文件
Retail report server执行的是.rep文件
方法一、(一般不使用)
    用Report Developer开发出报表,生成 CUX_GouBaoRep_Demo.rdf报表文件;File–>Export 生成 CUX_GouBaoRep_Demo.rep文件
上传文件 CUX_GouBaoRep_Demo.rdf和 CUX_GouBao_DemoRep.rep到服务器(.rdf–> /d01/app/retail/rms/app/rms/reports/src   .rep–> /d01/app/retail/rms/app/rms/reports/bin)

方法二、
    用第一种方法生成的.rep文件,是在本地机上生成的,有时候,(比如带参数的报表,用户添加了代码的报表)由于本地机和服务器的一些文件有差异,比如.pll不同等原因,方法一生成的.rep在服务器上运行老是报错,常见的有 REP-1439 REP-1950 REP-0759等,这时候,就不能使用方法一。所以,.rep文件必须是在服务器上编译.rtf生成的。
    编译步骤如下:
    (1).将本地编译通过的CUX_GouBaoRep_Demo.rdf文件,上传到 /d01/app/retail/rms/app/rms/reports/src,
    (2).运行下面的命令
        cd /home/oracle
        su oracle
        source rmsformsvr.env
        cd /d01/app/retail/rms/app/rms/reports/src
        rwconverter.sh source=CUX_GouBaoRep_Demo.rdf userid=$UP dest=CUX_GouBaoRep_Demo.rep stype=RDFFILE dtype=REPFILE batch=yes
        上面的命令会在 /d01/app/retail/rms/app/rms/reports/src 目录下生成 CUX_GouBaoRep_Demo.rep,再将 CUX_GouBaoRep_Demo.rep 剪贴到
        /d01/app/retail/rms/app/rms/reports/bin下。

注意:生成的.rep文件名如果含有字母,则字母必须是全小写,否则在运行的时候会报找不到报表

2).在rms系统里添加报表,以便可以run该报表
   在后台表RTK_REPORTS添加如下记录
MODULE    REPORT_NAME    REPORT_DESC    PARAMETER_IND    PRINTFRM_IND    PRINT_MODE    SELECT_IND
CUX_GouBaoRep_Demo    CUX_GouBaoRep_Demo    CUX_GouBaoRep_Description_Demo    Y    Y    A
table RTK_REPORTS 字段说明:
        MODULE                    应该类似于EBS中的模组,但这里随便输入都可以,why?
        REPORT_NAME               报表名,这个须是报表文件名,比如CUX_GouBaoRep_Demo
        REPORT_DESC               报表描述,随便取一个用户容易看懂的
        PARAMETER_IND             只能选择’Y’/’N’,目前还不知道作用,从意义上来看应该和参数有关,但我测试输入’Y’或’N’好像没有什么区别
        PRINTFRM_IND              只能选择’Y’/’N’,在form上可以打印的时候是否可以选择到该报表,选择’Y’,可在rms form中选择到,否则选不到
        PRINT_MODE                只能选择’A’/’S’,同PARAMETER_IND,目前也不确定
        SELECT_IND                不确定,目前系统里都为空

RDW 12 安装日志

介绍安装Oracle RDW 12

1. 安装和检查 Oracle Database
  1.1 安装RDW之前,已经安装好了 Oracle Database10g 和 Application Server,并已打好对应Pacth。此处利用安装好的数据库,不需要单独安装和做Per-Install动作了。

2. 安装 RDW Database
  2.1 根据RDW安装文档(rdw-120-ig-db.pdf)进行安装操作。

  2.2 安装前准备:
        root用户登录执行:xhost +
        切换到oracle用户:su oracle
    2.2.1 检查数据库相应文件及建立目录:
             第一次安装时创建如下目录:
             /d01/app/retail/rdw/rdw12.0/dev
             /d01/app/retail/rdw/rdw12.0/retek

    2.2.2 把 rdw_12.0_install.zip 安装介质上传到 /d01/app/retail/rdw/rdw12.0 目录下面,解压缩:
             unzip rdw_12.0_install.zip //解压缩后会生成 rdw12_db.zip 和 rdw12_code.zip
             unzip rdw12_db.zip
             unzip rdw12_code.zip

    2.2.3 编辑及运行profile文件:
             cp /d01/app/retail/rdw/rdw12.0/dev/sample_profiles/rdw_profile_ora /home/oracle/rdw_profile_ora
            cd /home/oracle
            vi rdw_profile_ora
            source /home/oracle/rdw_profile_ora

            执行完以上profile文件后,主要环境变量设置如下:
            ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
            ORACLE_SID=RDW ;
            MMHOME=/d01/app/retail/rdw/rdw12.0/dev
            MMUSER=rdw12dev ;
            PATH=${RETL_HOME}/bin:${RETL_HOME}/lib:${PATH} ; export PATH

            验证环境变量可通过命令:env | grep MMHOME 或 echo $MMHOME 查看返回结果。

  2.3 创建 RDW数据库;主要参考安装指南中的 “Create the RDW Database” 章节。
    2.3.1 su oracle  //下面全部使用oracle用户来安装RDW数据库
             INSTALL_DIR=/d01/app/retail/rdw/rdw12.0
             export INSTALL_DIR

             第一次安装时创建如下目录:
             $ORACLE_HOME/oradata/rdw
             $INSTALL_DIR/dev/rfx/tmp

    2.3.2 创建OFA目录:
             cd $ORACLE_HOME/admin
             mkdir rdw
             cd rdw
             mkdir adump
             mkdir bdump
             mkdir cdump
             mkdir dpdump
             mkdir arch
             mkdir create
             mkdir exp
             mkdir pfile
             mkdir udump
             mkdir utl_file_tmp

    2.3.3 编辑及拷贝initRDW.ora文件
             cp $INSTALL_DIR/rdw12/create_db/init102_release.ora $ORACLE_HOME/dbs/initRDW.ora
             cd $ORACLE_HOME/dbs
             vi initRDW.ora  //根据文件中NOTES说明,修改如下:替换相应的目录、(HOST=syfr12)(PORT=1521)、db_name=RDW,之后保存退出编辑;

    2.3.4 编辑及在SQL*Plus中执行脚本:crdb1.sql
             cd $INSTALL_DIR/rdw12/create_db
             vi crdb1.sql  //根据文件中NOTES说明,修改如下:替换相应的目录、SID=RDW,之后保存退出编辑;
             以 ‘SYSDBA’ 用户登录 SQL*Plus 并执行 crdb1.sql 脚本:
             $ORACLE_HOME/bin/sqlplus ‘/as sysdba’
             SQL>@crdb1.sql
             备注:1.运行crdb1.sql脚本后,若正常执行,会产生数据库并显示:Database created;此时RDW数据库结构安装完成,同时目录下产生crdb1.log日志文件,以方便查询执行脚本的结果;
                2.若创建的RDW数据库有问题需要重新安装时,需要关闭RDW数据库,并删除 $ORACLE_HOME/oradata/rdw 目录下原来安装生成的控制文件,否则会报错。

    2.3.5 以 ‘SYSDBA’ 用户登录 SQL*Plus 并执行脚本:crdb2.sql 和 crdb3.sql:
             $ORACLE_HOME/bin/sqlplus ‘/as sysdba’
     SQL>@crdb2.sql
             SQL>@crdb3.sql
             备注:运行crdb2.sql和crdb3.sql脚本的时间会相对比较长,若正常执行后会产生并显示RDW数据库所需的各种对象;同时目录下产生crdb2.log和crdb3.log日志文件,以方便查询执行脚本的结果;

    2.3.6 配置listen
             Oracle10g 默认使用的是动态注册,每个实例在启动的时候会根据initSID.ora中的local_listener进行动态注册。
             但前提是已经启动的listener,并且已经启动的listener 的侦听端口与initSID.ora中的local_listener中描述的是一致的,否则动态注册不成功。
             (注意,先启动listener,然后再启动实例,实例启动后要检查listener是否已经开始侦听可以使用 lsnrctl status 查看。)

    2.3.7 创建RDW Tablespaces
             vi create_rdw_tablespaces.sql  //根据文件中NOTES说明,修改如下:替换相应的目录,之后保存退出编辑;
             以 ‘SYSDBA’ 用户登录 SQL*Plus 并执行脚本:
             $ORACLE_HOME/bin/sqlplus ‘/as sysdba’
             SQL>@create_rdw_tablespaces.sql
             SQL>@create_rdw_dwi_tablespace.sql
             备注:目录下产生 create_rdw_tablespaces.log 和 create_rdw_dwi_tablespace.log 日志文件,以方便查询执行脚本的结果;

    2.3.8 创建RDW12DEV Schema
             cd $INSTALL_DIR/rdw12/utility
             vi crusers.sql  //根据文件中NOTES说明,修改如下:把”CHANGE”替换成密码,之后保存退出编辑;
             以 ‘SYSDBA’ 用户登录 SQL*Plus 并执行脚本:
             $ORACLE_HOME/bin/sqlplus ‘/as sysdba’
             SQL>@crusers.sql

             为了安全性,对文件进行读写控制:
             chmod 700 crusers.sql

    2.3.9 创建RDW Datamart-level tables
             cd $INSTALL_DIR/rdw12/ddl/dm
             以 ‘rdw12dm’ 用户登录 SQL*Plus 并执行脚本:
             $ORACLE_HOME/bin/sqlplus ‘rdw12dm/rdw12dm’
             SQL>@rdw12.sql
     备注:目录下产生 rdw12.log 日志文件,以方便查询执行脚本的结果;

    2.3.10 安装 MicroStrategy Metadata
               cd $INSTALL_DIR/rdw12/ddl/md
               set NLS_LANG=AMERICAN_AMERICA.UTF8
               uncompress rdw12md_en_ora.dmp.Z
               ./import_rdw12md.sh
               备注:a) 执行前,需要先把 rdw12md_en_ora.dmp.Z 解压缩,得到 rdw12md_en_ora.dmp 文件再进行IMP
                        b) 执行import_rdw12md.sh 过程中,需要用到 system 用户;

    2.3.11 创建RDW许可的用户
               cd $INSTALL_DIR/dev/dbasql

               以 ‘rdw12dm’ 用户登录 SQL*Plus 并执行脚本:
               $ORACLE_HOME/bin/sqlplus ‘rdw12dm/rdw12dm’
               SQL>@gs_rdw12_dm_ora.sql
               SQL>@invalids.sql

               以 ‘rdw12md’ 用户登录 SQL*Plus 并执行脚本:
               $ORACLE_HOME/bin/sqlplus ‘rdw12md/rdw12md’
               SQL>@gs_rdw12_md_ora.sql
               SQL>@invalids.sql
               备注:a) 相应目录下产生 g_rdw12_dm.lst、s_rdw12_dm.lst、g_rdw12_md.lst、s_rdw12_md.lst 日志文件;
                        b) rdw_users.sql 包含在 gs_rdw12_dm_ora.sql 和 gs_rdw12_md_ora.sql 之中,无需单独执行;

    2.3.12 配置RETL
               cd $INSTALL_DIR/dev/rfx/etc
               参考 rdw-120-og.pdf 文档中的rdw_config.env Settings章节,修改 rdw_config.env
               vi rdw_config.env
               备注:若安装RDW数据库前没有安装RETL,可以在此步先只建立一个retl目录文件夹,待后面安装了RETL,再重新设置此步;

    2.3.13 Data Population
               cd /home/oracle
               vi rdw_profile_ora //修改环境变量为 MMUSER=rdw12dm、PASSWORD=rdw12dm、RFX_HOME=/d01/app/retail/retl/12.0.1/rfx  修改后保存退出。
               source /home/oracle/rdw_profile_ora

               在环境变量$PATH设置的目录里查找rfx的文件(若没有安装RETL,待安装了RETL再修改此设置):
               which rfx

    2.3.14 填充Datamart默认数据
               cd $INSTALL_DIR/dev/install
               ./default_load.ksh

               vi rdw_profile_ora //修改环境变量为 MMUSER=rdw12dev、PASSWORD=rdw12dev 修改后保存退出。
               source /home/oracle/rdw_profile_ora
               cd $INSTALL_DIR/dev/install
               ./time_static_load.ksh

               备注:1.若执行default_load.ksh报错:

               SQL*Plus: Release 10.2.0.3.0 – Production on Wed Nov 5 17:31:25 2008

               Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

               ERROR:
               ORA-12154: TNS:could not resolve the connect identifier specified

               Enter user-name: SP2-0306: Invalid option.
               Usage: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]
               where <logon>  ::= <username>[/<password>][@<connect_identifier>] | /
               Enter user-name: SP2-0306: Invalid option.
               Usage: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]
               where <logon>  ::= <username>[/<password>][@<connect_identifier>] | /
               SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus

               解决方案:修改 $ORACLE_HOME/network/admin 目录下的 tnsnames.ora,在其中增加:
                RDW =
                 (DESCRIPTION =
                   (ADDRESS_LIST = (ADDRESS = (PROTOCOL = tcp)(host = syfr12)(Port = 1521)))
                   (CONNECT_DATA = (SID = RDW) (GLOBAL_NAME = RETL.world)))
                RDW.world =
                 (DESCRIPTION =
                   (ADDRESS_LIST = (ADDRESS = (PROTOCOL = tcp)(host = syfr12)(Port = 1521)))
                   (CONNECT_DATA = (SID = RDW) (GLOBAL_NAME = RETL.world)))

                       2.执行后,在目录 $INSTALL_DIR/dev/log、$INSTALL_DIR/dev/error 中查看生成相应的日志文件。

    2.3.15 创建RDW时间和日期 (此步骤及以下步骤请参考 RDW 12 安装日志补充说明)
               cd $INSTALL_DIR/dev/install
               which cc
               返回结果:/usr/bin/cc
               /usr/bin/cc -g -I. -o cr_time_454 c_utils.c cr_time_454.c
               /usr/bin/cc -g -I. -o cr_time_13 c_utils.c cr_time_13.c
               /usr/bin/cc -g -I. -o cr_time_g c_utils.c cr_time_g.c
               ./cr_time.ksh 

3.RDW TNS
  RDW_SYFR12 =
    (DESCRIPTION =
      (ADDRESS_LIST =
          (ADDRESS =
            (COMMUNITY = tcp.world)
            (PROTOCOL = TCP)
            (Host = syfr12)
            (Port = 1521)
          )
      )
      (CONNECT_DATA = (SID =RDW)
      )
    )

4.启动和关闭 RDW Database
  4.1 启动RDW数据库
        ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
        export ORACLE_HOME
        ORACLE_SID=RDW
        export ORACLE_SID
        $ORACLE_HOME/bin/lsnrctl start
        echo startup | $ORACLE_HOME/bin/sqlplus ‘/as sysdba’

  4.2 关闭RDW数据库
        ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1                
        export ORACLE_HOME                                             
        ORACLE_SID=RDW                                                
        export ORACLE_SID                                              
        $ORACLE_HOME/bin/lsnrctl stop                                  
        echo shutdown immediate | $ORACLE_HOME/bin/sqlplus ‘/as sysdba’

部署bpel流程出错,请老商看看(已解决)

部署BPEL流程bpel_SendPaymentTermsToRetek_1.0.jar出现错误,错误信息如下:

bpel_SendPaymentTermsToRetek_1.0.jar 无法部署。
Could not initialize activation agent. An error occured while initializing an activation agent for process "SendPaymentTermsToRetek", revision "1.2". Please ensure that the activation agents are configured correctly in the bpel deployment descriptor (bpel.xml). oracle.tip.adapter.fw.agent.jca.JCAActivationAgent: java.lang.reflect.InvocationTargetException

 

 

—该问题已经解决,解决办法:

配置相应的Database Adapter后成功部署bpel流程.

安装BPEL 10.1.3.1.0

概述:本文档描述bpel的安装过程,安装类型:Oracle BPEL Process Manager for OracleAS Middle Tier,安装组件包括:

    1)Oracle BPEL Server

    2)Oracle BPEL Control

安装步骤如下:

  1. 安装Oracle Database10g

          可以利用rms数据库,不需要单独安装.

     2. 运行IRCA

          IRCA在安装文件在bpel\bpel_oc4j\install\soa_schemas\irca目录下,在windows下运行irca.bat文件,按照操作提示即可安装.  安装过程中需要sys用户远程连接数据库,有关sys用户远程连接数据库的解决方法可参考老商的 DB怪问题. IRCA在db中创建orabpel用户和相关表.

     3.安装Oracle Applicaton Server

  •           安装前的准备(root用户下操作):

                   1)创建组:  groupadd oinstall

                   2)创建组:groupadd dba

                   3)创建组:groupadd  oper

                   4)创建用户:useradd -g oinstall oracle

                   5)设置oracle用户密码:passwd oracle

                   6)创建AS的安装目录,且oracle用户可访问: mkdir /u01; cd /u01; mkdir OraAS_10g; chown -R oracle:oinstall /u01/OraAS_10g

                   7) vi/etc/hosts,检查该文件中是否包含 HOSTNAME=egate

                   8) 检查是否存在文件/etc/sysconfig/networking/profiles/default/network,如果有则重新命名该文件

                   9)系统参数调整,修改/etc/sysctl.conf文件,加参数如下:

                       kernel.msgmnb=65535

                       kernel.msgmni=2878

                       kernel.shmmax=4294967295

                       kernel.sem=256 32000 100 142

                       fs.file-max=206173

                  10)设置shell limits

                       在文件/etc/security/limits.conf文件中加入:

                        *       soft     nproc         2047

                        *       hard    nproc         16384

                        *       soft     nofile          2048

                        *       hard    nofile          65536

                       在文件/etc/pam.d/login 中加入:

                       session    required    /lib/security/pam_limits.so

                       在文件/etc/profile中加入:

                       if[$USER = "oracle"]; then

                           if[$SHELL="/bin/bash"]; then

                               ulimit -p 16384

                               ulimit -n 65536

                           else

                               ulimit -u 16384 -n 65536

                           fi

                       fi

                   11)安装package,安装命令为: rpm -ihv package_name

                       sysstat-4.0.7-4.EL3.3可以在redhat 安装光盘中找到

                       compat-glibc-7.x-2.2.4.32.6.i386.rpm,可以在http://rpm.pbone.net/index.php3上下载

                   12)设置环境变量,root用户运行xhost +

                        切换到oracle:  su oracle

                        确保oracle 对/tmp2有写权限

                        TMP=/tmp2; export TMP

                        TMPDIR=/tmp2; export TMPDIR

                   13)ftp上传soa_linux_x86_101310_disk1.cpio 文件到/u01/OraAS_10g目录后运行如下命令:

                        cpio -ivdm < soa_linux_x86_101310_disk1.cpio

                        运行./runInstaller后安装

  •           安装是选择客户化安装,选择安装J2EE Server and Web Server类型,后面的安装比较简单,不再详细说明

                   安装后的组件有: 

                     Oracle HTTP Server

                     Oracle Containers for J2EE (OC4J)

                     Oracle Process Manager & Notification Server (OPMN)                

  •           安装后测试

                   在IE地址栏输入http://192.168.11.82:8888出现欢迎界面,本次安装hostname为egate

  •           关闭启动服务

                  opmn 位于$ORACLE_HOME/opmn/bin

                  start oc4j:     opmnctl startall

                  stop oc4j:      opmnctl stopall

     4.安装BPEL

  •         选择安装Oracle Application Server 的ORACLE HOME,本例安装为oracleas1,路径为/home/oracle/product/10.1.3.1/OracleAS_3
  •         安装类型BPEL Process Manager for OracleAS Middle Tier
  •         设置bpel 数据库为前面IRCA安装所指定的数据库,本次安装在192.168.11.41:1521的RETL数据库
  •         安装成功后可以在http://192.168.11.82:8888/BPELConsole看到BPEL控制台界面

启动10AS的"Report Server"问题

在oracleias 10g中,已经没有report server,被整合到OC4J里,所以,要启动10AS的”Report Server”,只有启动OC4J就可以了。

命令如下:

./opmnctl startproc ias-component=OC4J

./opmnctl restartproc ias-component=OC4J–重启

类似还有:

opmnctl startproc ias-component=HTTP_Server

opmnctl stopproc ias-component=WebCache     等

opmnctl startall

opmnctl stoptall 等

查看各组件状态:

opmnctl status

输出如下:

Processes in Instance: formreportsvr.syfr12
——————-+——————–+———+———
ias-component      | process-type       |     pid | status 
——————-+——————–+———+———
DSA                | DSA                |     N/A | Down   
LogLoader          | logloaderd         |   11895 | Alive  
HTTP_Server        | HTTP_Server        |    5298 | Alive  
dcm-daemon         | dcm-daemon         |     N/A | Down   
WebCache           | WebCache           |    5305 | Alive  
WebCache           | WebCacheAdmin      |    5294 | Alive  
OC4J               | home               |   13643 | Alive  
OC4J               | OC4J_BI_Forms      |   13644 | Alive

很遗憾的是,虽然OC4J 已经启动起来,但在rms中,仍然打不开报表,出现 “http 404″的错误,希望有高人指点一二。

——————————————————————————————————

2008-10-14 问题已经解决

case:

  Report Server的配置问题。

solution:

 按以下步骤操作

 1.修改rms.env(/d01/app/oracleas/OraHome_1/forms/server/目录下),在后面追加一下内容

  (Detail请参考 /d01/app/retail/rms/12.0.1下rms-1201-ig.pdf 【Configure Oracle Application Server 10 for RMS Reports】)

  /*****************************************************

  ORACLE_RMS_REPORTS_HOST=http://syfr12:7778/

  ORACLE_RMS_REPORTS_SERVER=rep_syfr12_oracleas1+envid=rms12arep

  ORACLE_RMS_RWSERVER=reports/rwservlet

*****************************************************/

   注:ORACLE_RMS_REPORTS_HOST=http://<server>:<Listen port>

         ORACLE_RMS_REPORTS_SERVER is the value of the reports configuration file
            without the .conf plus a standard envid (“envid” must be used) and the name of
            the header inside the configuration file that defines the variable
            REPORTS_PATH.

2.修改rep_syfr12_oracleas1.conf(/d01/app/oracleas/OraHome_1/reports/conf目录下)

在标签</server>前添加以下内容(Detail请参考metalink 559039.1)

/*******************************************************

<environment id=”rms12arep”>

<envVariable name=”REPORTS_PATH”

value=”/appl/acc/ah01/rt12/rms/reports/bin:/appl/acc/ise/oras/aoasgm02/reports/reports/templates:/appl/acc/ise/oras/aoasgm02/reports/reports/samples/demo:/appl/acc/ise/oras/aoasgm02/reports/integ:/appl/acc/ise/oras/aoasgm02/reports/printers”/>

<envVariable name=”NLS_LANG” value=”AMERICAN_AMERICA.UTF8″/>

</environment>

*******************************************************/

 

在rms中 –“Reports”按钮,[模块]选择 “Jeff_Demo1”,[报表]选择“Jeff_rep_Description_Demo1”,点击“打印”按钮可以看到报表可以运行(其他报表暂无数据)。

PRO*C学习指南

PROC 技术简介

 

 

什么是PROCPRO*C

ORACLE支持六种高级语言中内嵌入SQL语句,或ORACLE库函数调用来访问数据库。它们是CFORTRANCOBOLAdaPASCALPL/I等,这些语言称之为宿主语言,用它们开发的程序就称为PRO*程序,如PRO*CPRO*COBOL等。

我们可以定义PRO*C程序为:通过在过程化编程语言C/C++中嵌入SQL语句而开发出的应用程序。

 

PROCOracle数据库

ORACLE数据库管理系统中,有三种访问数据库的方法:

1.       SQL*Plus,它有SQL命令以交互的应用程序访问数据库;

2.       用第四代语言应用开发工具开发的应用程序访问数据库,这些工具有SQL*FromsQL*Reportwriter,SQL*MenuORACLE*FORMS等;

3.       利用在第三代语言内嵌入的SQL语言或ORACLE库函数调用来访问。

Pro*C就属于第三种开发工具之一,它把过程化语言C和非过程化语言SQL最完善地结合起来,具有完备的过程处理能力,又能完成任何数据库的处理品任务,使用户可以通过编程完成各种类型的报表。

 

PROC工作原理

PRO*C应用程序的开发和运行的基本步骤类似于C程序,唯一不同之处是在进行C编译之前需要进行预编译。

程序员用相应的高级语言编写嵌入SQL语句的PRO源程序(若用C语言则称为 PROC源程序),然后运行相应的预编译程序,把嵌入的SQL语句转换为标准的Oracle调用并生成目标源程序,即纯高级语言格式的源程序,最后将这些源程序加入用户的程序中调用。

 

 

Oracle预编译程序提供如下功能:

l         能用六种通用的高级程序设计语言中的任何一种编写应用程序。

l         遵循ANSI标准,在高级语言中嵌入SQL语句。

l         可采用动态SQL方法,让程序在运行时接受或构造一个有效的SQL语句。

l         实现Oracle内部数据类型和高级语言数据类型之间的自动转换。

l         可通过在应用程序中嵌入PLSQL事物处理块来改进性能。

l         能在程序行和命令行上指定所需要的预编译可选项,并可在预编译的过程中改变它们的值。

l         能全面检查嵌入的SQL数据操纵语句和PLSQL块的文法和语义。

l         可用SQLNet并行存取多个地点的Oracle数据库。

l         可把数组作为输入和输出程序变量使用。

l         能对应用程序中的代码段进行条件预编译。

l         提供了较强的异常处理功能。

 

PROC的优点

1.       它把过程化语言和非过程化语言结合,形成一种更强有力的开发工具。利用它可以 开发出满足种复杂的应用程序,还可以引用 窗口技术和鼠标技术等。

2.       可以使开发的应用程序具有管理系统资源使用(如内存分配)、SQL语句执行和指示器等能力。

3.       提高了应用程序的执行速度,因为它把SQL语句翻译成相应的ORACLE库函数调用。特别是在网络环境下,可以减少网络传输和处理的总开销。

 

 

学习PROC所需的相关知识

1、  C/C++语言基础知识

2、  Oracle技术,如SQLPL/SQL

有用的资料:

from 《Oracle背份策略的补充》
http://www.huihoo.org/joyfire.net/5.html

Oracle数据库开发(一).Windows下配置使用ProC

http://blog.csdn.net/liwei_cmg/archive/2007/06/06/1641330.aspx

Oralce数据库开发(二).Linux下配置使用ProC

http://blog.csdn.net/liwei_cmg/archive/2007/06/07/1643023.aspx

Rooms Information Pro*C Sample: Invoking Java Stored Procedure Using Pro*C

http://www.oracle.com/technology/sample_code/tech/java/jsp/samples/proccalljsp/readme.html

学习PROC+C教程.rar

服务器的test_PROC目录下。服务器IP:192.168.11.41

抓session.sql

快速抓取当前你关注的Session的SQL活动,适合于你不方便做Trace的情况下,了解session的活动

/*
快速抓取当前你关注的Session的SQL活动,适合于你不方便做Trace的情况下,了解session的活动:
1) IF table hand_test is not exist then Create the table
   create  table hand_test(sqltext varchar2(4000),
                           sqldate date)
2) use plsqldeveloper ->Tools->Sessions to know which sessionid your should focus on
3) run this script use the session id you focus on
4) SELECT * FROM hand_test to view current sqltext of this session
*/

DECLARE
  l_sql VARCHAR2(32767);
BEGIN
    DELETE FROM hand_test;
    l_sql :=NULL;
    For cur_cousor In (Select ADDRESS
                       From v$session vs, v$open_cursor vc
                       Where vs.sid = vc.sid
                       –AND vs.machine Like ‘WORKGROUP\DAPHNE-E441C4A2%’
                       –And vs.username = ‘DPOS’
                       –And vs.program = ‘D:\WINDOWS\system32\dllhost.exe’
                       And vs.sid = &SessionID
                       ) LOOP
        l_sql:=NULL;              
        FOR cur_piece IN ( SELECT  sql_text
                           FROM v$sqltext
                           WHERE address =  cur_cousor.address
                           ORDER BY piece)LOOP
                 l_sql := l_sql  ||  cur_piece.sql_text;        
        END LOOP;  
        IF l_sql IS NOT NULL THEN
           IF length(l_sql) >4000 THEN
              l_sql :=substr(l_sql,1,4000);
           END IF;
           INSERT INTO hand_test VALUES (l_sql, SYSDATE);
           COMMIT;
        END IF;   
    End Loop;
End;

AppWorx 学习指南

       AppWorx 是分布式环境的Job调度工具,功能很强大,很灵活。大型的商业软件,比如peoplesoft , Retail 等都是用此工具进行Job调度。

        AppWorx的体系架构如下:

        image

         1) Host Machine 是AppWorx的脑袋。
         2) AppWorx Database 用于存储各种定义和参数(简单的理解就是该系统的元数据库)
         3) AppWorx Remote Agent 是远程代理,用于接收并执行脑袋(host manching) 发来的指令。 这些指令包括运行一个unix程序,一个windows 程序 ,一段sql脚本等等。AppWorx 正是通过Remote Agent来实现跨平台整合企业的各个应用系统的。请参考下图:

          image

 

          在一个典型的企业环境中包含着各种类型,各个年代的软件系统。 这些系统之间需要信息交互。大多数信息交互会综合利用各种遗留的接口程序来进行,这些接口程序各种各样,分布在不同的操作系统上。简单的接口处理仅仅是发生在两个系统之间,复杂的接口处理往往是需要一个流程来进行的,这个流程必须明确的安排好哪个接口程序需要先运行,哪个程序后运行,哪些接口程序可以并行运行等德国。 在没有使用类似于AppWorx软件之前,这些流程都是通过手工的脚本来进行控制的。维护麻烦,监控复杂。而AppWorx的出现就是来解决这样的麻烦事情的。

        一个典型AppWorx的用途如下:

       背景:A系统是个遗留财务系统,B系统是Orale EBS;A,B两个系统的服务器分别处在两个不同的城市。A处理后的数据需要通过Ftp传给B系统处理。那么实际的数据流处理过程可能是这样的:

       1. A系统导出数据成文件
       2. 通过FTP把数据文件传输到B系统所在服务器
       3. B装载数据
       4. B系统清除成功装载后的数据文件
       5. B系统运行三张报表
       6. B系统执行总帐导入
       7. B系统执行总帐过帐

   这个过程使用AppWorx可以如下设计:

image

         设计好流程(流程在AppWorx中被称之为Chain) 后,就可以让AppWrox来管理执行这个流程,并可以由图形工具监控流程的每次执行结果。

         设计好的流程可以做为子流程嵌入到另外一个流程中去,所以AppWorx在数据流的流程设计上就像workflow Builder一样灵活。 AppWorx的开发者的主要任务就是根据企业的各种实际需求开发各种数据处理流程。

         如何开始AppWorx的学习呢?

        1)阅读 《 AppWorx Getting Start Guid 》可以了解如下内容:
               1.1)  AppWorx 概况
               1.2)  AppWorx 系统管理员简要指南
               1.3)  AppWorx 开发员简要指南
               1.4)  AppWorx 用户指南(用户操作简要指南)

                下载:70getstart_042006   

         2)  阅读 《AppWorx Installation Guide》进行AppWorx的安装

                下载:70inst_022007

         3)  阅读  《Development Guide》学习如何使用AppWorx进行数据处理的流程开发工作。

                下载:70dev_082006

         4)  阅读 《Operations Guide》用户指南,熟练掌握后把操作方法教给客户方的关键用户。

                下载:70oper_082006

Retail R12 Demo环境的系统迁移&复原指南

—————————————————————-
Oracle RetailR12.0.7 For Oracle Enterprise linux 4.4 x86_64  Pack       
—  Creation  date     : 2008-9-21
—  Created by         : yunfang.shang@hand-china.com

—  Software in this pack
—  Oracle Database    :10.2.0.3
                       addtional  Applied patch :5397953
—  Oracle app server  :
                       Oracle application Forms Services and Reports Services 10.1.2.0.2
                       Oracle application Server SOA suit 10.1.3.4.0
—  Retail Moudule     :
                       RMS 12.0.7
                       RSM 12.0.4
                       RPM 12.0.7
                       ReIM 12.0.7
                       Alloc 12.0.7
—  Copy Right 2008-2010 @ Hand Co,.Ltd. All Right Reserved
—————————————————————-

Prepare:

Oracle Enterprise Linux 4.4 x86_64 CD Disk1 -Disk4
    app.tar.gz
    prepare_action.tar.gz

Install Step

1   Install Oracle Enterprise Linux 4.4 x86_64
    Requirements :
                   1.1 Disable firewall
                   1.2 Disable SElinux
                   1.3 Disable WebServer Shiped With Linux
                   1.4 Swap Size should be
                       Memory Siza         Swap Size
                   a   1-4 GB              2 X Memory Size
                   b   4-8 GB              1 X Memory Size
                   c   >8 GB               0.75 X Memory Size

2   Transfer app.tar.gz to linux /
    Transfer prepare_action.tar.gz to linux /

3   cd /
    tar -zxvf prepare_action.tar.gz
    3.1 install all rpms , these rpm packages  stay in /d01/prepare_action/rpms/
    3.2 create user and group , the scripts stay in /d01/prepare_action/scripts
    3.3 overwrite some liunx OS Config files , these config files stay in /d01/prepare_action/os_config_file/topdir
    3.4 modify /etc/hosts to meet your hostname

4   cd /
    tar -zxvf app.tar.gz

5   complete…

6   test installation
    5.1 start database
    5.2 start application server (form & report Service)
    5.3 start application server soa suit
    5.4 tell client user to test application function

7   FAQ
    7.1 when i start database ,i got error li..so.1 can not be found ,Tns start error! how to resolove it?
        A: please install rpm package libaio..x86_64 useing rpm -ivh

7.2 i start appserver(form&report Service) first ,then start soa suit ,but i got error : some oc4j instance can not be started normaly ,how to resolve it?
        A: reconfig ajp,jms .etc ‘s port whin opmn.xml ,then reload opmn config, restart soa suit;

7.3 i start appserver(form&report service) and appserver soa suit normaly ,bug i can not run rms at clint ,the client browse tell me “internal server error ” why ? how to resolove it?
        A: just wait 3 minute and retry.

7.4  This  system contain Demo Data  , but i need a fresh system , how to do ?
   A:  you may refrence this article :
http://blog.retailsolution.cn/blog/index.php/rms12-install-guid
       Ctrl + F   to find  “#Delete Demo Data”

#Delete Demo Data
       cd $STAGING_AREA/seed_data/delete_scripts
       echo @removeRmsDemoData.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL

just flow the instruction to delete demodata and seed data ,then only rebuild seed data.

RDW学习指南(For R12)

RDW ( Retail Data Warehouse) 是Retail 一整套解决方案中的数据仓库部分. 在Retail 的整体解决方案中占着极其重要的地位, 如果把Retail 一整套解决方案看做一个人,那么RDW就是人的脑袋.

       RDW ( Retail Data Warehouse) 是Retail 一整套解决方案中的数据仓库部分.  在Retail 的整体解决方案中占着极其重要的地位, 如果把Retail 一整套解决方案看做一个人,那么RDW就是人的脑袋.  它能回答客户的这些问题:

我的商品目录和网络销售情况如何?
什么是我的毛利回报空间?
和去年相比业务如何? 和计划相比呢?
我有什么潜在的缺货情况?
在我的所有地区都做了产品品种优化吗?

……

R12版本的RDW 由如下产品构成:
数据抽取: RETL
数据仓库: Oracle DW
数据展现: MicroStrage (MicroStrage BI Server)

image

开始RDW

1) 获取文档 :     http://www.oracle.com/technology/documentation/oracle_retail.html
->Oracle Retail 12.x Documentation  Library
->Data Warehouse Documentation, Release 12.x(B31313-01)
2) 看文档 :
      2.1)  先看Operation Guide (rdw-12001-og.pdf) 了解基本概念和体系结构. 你可以了解到如下内容:
               2.1.1)  Retail 数据仓库简要介绍.
               2.1.2)  Retail 数据仓库技术体系架构
               2.1.3)  纬度数据介绍

               2.1.4)  事实数据介绍

               2.1.5)  数据压缩和分区(For 性能)

               2.1.6)  Retail  数据抽取(RETL) 程序概览

               2.1.7)  Retail 数据仓库接口

               ……

      2.2)   看 Database Installation Guide 和 Middle Tier Installation Guide  进行安装.

      2.3)   看 RETL 文档, 关注其中的Retail 模块->RDW的数据抽取部分

                 http://www.oracle.com/technology/documentation/oracle_retail.html
                 ->Oracle Retail 12.x Documentation  Library
                 ->Extract Transform and Load Documentation, Release 12.x

                 2.3.1) 看 Programmer’s Guide (retl-12011-pg.pdf)  安装Retail 的数据抽取程序.  了解所安装的程序的功能作用&如何使用这些程序.

     2.4)  看 RDW User Guide  学习如何使用Retail 现成的数据模型和Microstrage 的展现工具来完成 拖拉钻 的报表和数据挖掘. 熟练掌握后把这些技能教给客户的关键用户.

Retail系统验证&问题&解决

 Retail R12系统安装后验证

NOTE:427812.1 用于安装成功与否的验证

请按照Testcase 验证系统的可用性, TestCase下载:
oracle_retail_merchandising_installation_test_cases_

 如果大家在流程测试过程中遇到问题可直接回复本贴,大家一起来解决.

 

已知问题: 

测试流程:Test Name: f) RMS to RPM – Store Add 遇到如下问题:

问题1 运行batch storeadd ,在log中报错: Terminated – no threads available ; storeadd 没成功 

解决方法:
     
 Update restart_program_status
 Set program_status = ‘ready for start’
 Where program_name = ‘storeadd’

RMS batch运行的环境变量设置

一、建立环境文件 rmsbatchenv.env(创建与/home/oracle/ 目录下);  内容如下 

ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
export ORACLE_HOME
ORACLE_SID=RETL
export ORACLE_SID
INSTALL_DIR=/d01/app/retail/rms/db
export INSTALL_DIR
MMHOME=$INSTALL_DIR/rms
export MMHOME
MMUSER=rms12dev
PASSWORD=rms12dev
export MMUSER
export PASSWORD
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$MMHOME/oracle/lib/bin:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
export PATH
LIBRARY_PATH=$ORACLE_HOME/lib:$MMHOME/oracle/lib/bin:$LIBRARY_PATH
export LIBRARY_PATH

 

二、执行batch前,先运行上述环境变量

       source /home/oracle/rmsbatchenv.env

       运行后,检查一下是否已经生效:

       env | grep LIBRARY_PATH

       如果有结果则表明已经生效果。

       确认环境变量已经设置正确,再执行batch 。

RIB学习指南

一、基本概念

1)Rib (Retail Integration Bus) 是Oracle Retail 基于 Seebeyond e*Gate 平台开发的一套信息集成方案和相关组件.

2)seebeyond e*Gate 是由美国seebeyond 技术公司开发的一套跨平台,跨语言的信息集成平台。广泛用于各种系统之间的信息集成,在SAP,Oracle 等大型ERP和企业其他信息系统之间的集成方面有成熟的经验和大量的案例,并已经总结了大量的文档。seebeyond 公司后来被Sun公司收购,成为Sun的一条信息集成产品线。

3)就Rib对seebeyond e*Gate的应用而言,简单可理解为: Seebeyond e*Gate是一种消息服务器,和IBM MQ ,Apache active MQ 是一类产品, 实现了 jms Server的标准。而RIB是在这个消息服务器的平台上做了很多专门针对Oracle Retail的 队列和主题。定义了各种消息的格式,并提供了多种消息的生产程序(producer) 和消费程序(consumer) ,如果其他系统要得到Retail的各种单据信息 只需要Retail提供这种消息的生产,其他系统订阅这些消息,并处理这些消息就可以了。 而其他系统要给Retail提供信息,最简单的做法就是按照Retail要求的信息格式生产消息并发送到相关主题(Topic)就可以了。从这个角度讲,Retail在e*Gate平台上提供的各种单据的消息格式就成了Retail与外界系统的Open Interface 规范了。其他系统与Retail集成只需要按照这些规范提供消息和消费消息就可以了。

     或许有人要问,这种方式与oracle EBS 所提供的各种Open Interface相比也没什么本质的区别啊,不过是把Open interface的表结构 改成了 XML格式定义; 把Table 中的Record改成了Message ; 把连接从数据库连接改成与消息服务器的连接而已。 这种理解我认为没错。不过正是因为这些改变使各系统之间的信息集成更加灵活和优化了,这里列举2点来说明:

       A) 基于数据库的Table提供的Open interface 方式一般用于其他系统向该系统提供信息,无法用于该系统向其他系统提供信息。如果有多个系统需要该系统的A单据信息,那么这种方式就无法做到。但是基于消息服务器的主题(Topic)发布就可以做到这一点。 

       B) 基于数据库的Table提供的Open interface 方式一般使用并发程序来处理,是批处理方式,存在一定的周期,比如5分钟处理一次。而消息的发布和消费基本可以做到实时。所以信息的传递更加及时。

       C) 其他还有哪些好处?大家想想!应该能想到很多。

4)学习Rib 应该看那些资料,先看哪些再看哪些?

     4.1) 看eGate_User_Guide_SRE.pdf 的System Description章节,了解e*Gate 的体系架构和概念。
            下载: egate_user_guide_sre

     4.2) 看rib-1201-og.pdf 的RIB Components Overview章节,了解Rib的组件和概念。
            下载: rib-1201-og

     4.3) 看rib-1201-ig.pdf 和eGate_Install_Guide_SRE.pdf 两本intallation guider 进行e*Gate和Rib的安装。
            下载: rib-1201-ig    egate_install_guide_sre

     4.4) 看rib-1201-intg.zip   integration Guider 了解如何使用Rib 来集成Rib的各个模块和oracle EBS.
            下载: http://www.oracle.com/technology/documentation/oracle_retail.html ->
                    Oracle Retail 12.x Documentation Library ->
                    Integration Bus Documentation, Release 12.x(B31315-01)

 

RMS R12 Form 开发之Form编译和环境配置

======================================
==客户端
======================================
1、下载安装Form10g Developer Suit
2、在D盘建立 retail_resource 目录
3、从服务器下载 /d01/app/retail/rms/app/rms/forms 目录
   从服务器下载 /d01/app/retail/rms/app/toolsets 目录
4、regedit
   hkey_local_machine/software/oracle/KEY_DevSuiteHome1
   编辑item : forms_path
              添加D:\Retail_Resource\forms\src;D:\Retail_Resource\toolset\src;D:\Retail_Resource\toolset\bin;D:\Retail_Resource\forms\bin
5、打开FormBuilder 可以正常修改Form            
======================================
==服务端
======================================

#环境变量

建立一个环境变量文件: rmsformsvr.env (创建在/home/oracle/),其内容如下:
ORACLE_HOME=/d01/app/oracleas/OraHome_1
export ORACLE_HOME   
DISPLAY=syfr12:1.0
INSTALL_DIR=/d01/app/retail/rms/app
export INSTALL_DIR    
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/forms10gr2_scripts:$PATH
CLASSPATH=$ORACLE_HOME/jlib/importer:$ORACLE_HOME/jlib/debugger.jar:$ORACLE_HOME/jlib/utj.jar:$ORACLE_HOME/jlib/ewt3.jar:$ORACLE_HOME/jlib/share.jar:$ORACLE_HOME/jlib/dfc.jar:$ORACLE_HOME/jlib/help4.jar:$ORACLE_HOME/jlib/oracle_ice.jar:$ORACLE_HOME/jlib/jewt4.jar
FORMS_BUILDER_CLASSPATH=$CLASSPATH
FORMS_PATH=$INSTALL_DIR/toolset/bin:$INSTALL_DIR/rms/forms/bin:$ORACLE_HOME/forms
REPORTS_PATH=$INSTALL_DIR/rms/reports/bin:$ORACLE_HOME/forms
TK_UNKNOWN==$ORACLE_HOME/guicommon/tk/admin
UP=rms12dev/rms12dev@RETL
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jdk/jre/lib/sparc:$ORACLE_HOME/jdk/jre/lib/sparc/native_threads
export DISPLAY PATH CLASSPATH FORMS_BUILDER_CLASSPATH FORMS_PATH REPORTS_PATH TK_UNKNOWN UP LD_LIBRARY_PATH   

 

      
编译:(比如要编译trv.fmb)

oracle 用户登录
soruce rmsformsvr.env
cd  $INSTALL_DIR/rms/forms/src
cp  rtv.fmb rtv.fmb.bak
frmcmp.sh userid=$UP module=rtv module_type=form
cp $INSTALL_DIR/rms/forms/bin/rtv.fmx $INSTALL_DIR/rms/forms/bin/rtv.fmx.bak
cp -f $INSTALL_DIR/rms/forms/src/rtv.fmx $INSTALL_DIR/rms/forms/bin/

注:编译menu,将上面的frmcmp.sh userid=$UP module=rtv module_type=form

      换成frmcmp.sh userid=$UP module=rtv module_type=menu,即改变module=menu名,module_type=menu

ALLOC R12 安装日志

/******************************************************************
======                Hand Co,ltd                            =========
======                Copy Right 2008-2009 Reserved          ===
======                ALLOC 安装日志                           =======
–Created by       :  yunfang.shang@hand-china.com
–Creation Date    :  2008-9-19
–Version          :  1.0 
======                Update History                         ========
–2008-9-19  version 1.0  created

*******************************************************************/
1\ 安装Oracle Application Server

   1.1 安装 Oracle application Server 10.1.3.1.0  (soa_linux_x86_101310_disk1.cpio)
   在安装RSM的时候,我们已经application Server 安装好,并把patch打到了10.1.3.4.0. 所以这里不需要做什么了.

2\ 了解安装文件和Patch
   查看了所有12.0.1-12.0.7的Patch, 12.0.4,12.0.6, 12.0.7 是含有DB Patch的,其他均只有 App Patch. 
   DB Patch 只要有就需要逐个打的,而App Patch只需要直接安装12.0.7即可.
      

3\ 安装文件准备
   su oracle
   cd /d01/app/retail
   mkdir alloc
   cd alloc
   mkdir 12.0.1
   mkdir 12.0.2
   mkdir 12.0.3
   mkdir 12.0.4
   mkdir 12.0.5
   mkdir 12.0.6
   mkdir 12.0.7
  
   #把alloc_12.0_install.zip 上传到/d01/app/retail/Alloc
   #把其他patch 分别上传到相应的12.0.x目录
   #执行相应的解压缩
  
  
  
4\ 安装alloc 数据库

       #切换到VNC界面,打开一个终端
       xhost + 
       chmod -R 777 /d01/app/retail/alloc    

       su oracle
       INSTALL_DIR=/d01/app/retail/alloc/dbserverunix
       export INSTALL_DIR
       ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
       export ORACLE_HOME
       ORACLE_SID=RETL
       export ORACLE_SID
       NLS_LANG=AMERICAN_AMERICA.UTF8
       export NLS_LANG
       PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
       export PATH
       JAVA_HOME=/d01/app/oracle/product/10.2.0/db_1/jre/1.4.2
       export JAVA_HOME
      
       cd $INSTALL_DIR/alloc/dbschema
       #确认数据库和listener已经启动
       ./install.sh
       alloc 12 schema /password: alloc12dev/alloc12dev
       Next->Next  按向导进行,成功完成.
      
       #打12.0.1 -12.0.7 各版本中存在的db patch
      
            ================= db patch for 12.0.4==========================================
            STAGING_AREA=/d01/app/retail/alloc/12.0.4/dbserverunix
            export STAGING_AREA           
            cd $STAGING_AREA/dbcs
            echo @patch1204dbcs.sql | $ORACLE_HOME/bin/sqlplus alloc12dev/alloc12dev@RETL
            #成功
           
            ================= db patch for 12.0.6==========================================
            STAGING_AREA=/d01/app/retail/alloc/12.0.6/dbserverunix
            export STAGING_AREA           
            cd $STAGING_AREA/dbcs
            echo @patch1206dbcs.sql | $ORACLE_HOME/bin/sqlplus alloc12dev/alloc12dev@RETL
            #成功
           
            ================= db patch for 12.0.7==========================================
      
            STAGING_AREA=/d01/app/retail/alloc/12.0.7/dbserverunix
            export STAGING_AREA           
            cd $STAGING_AREA/dbcs
            echo @patch1207dbcs.sql | $ORACLE_HOME/bin/sqlplus alloc12dev/alloc12dev@RETL
            #失败:原因创建Trigger:EC_TABLE_ALH_BUR无权限,因为这些表在RMS12dev的Schema 下
            解决方法: 以rms12dev登陆数据库执行.
            echo @patch1207dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #成功
          
          
    

      
5\ 安装ALLOC Application

   我看了ALLOC 12.0.1-12.0.7 的所有patch版本内容. 采用的是覆盖方式,不需要逐个打,可直接安装12.0.7
   按照alloc-1207-ig.pdf 进行
      
   5.1 Create a New OC4J Instance for ALLOC
       su oracle
       ORACLE_HOME=/d01/app/oracleas10gr3
       export ORACLE_HOME
       $ORACLE_HOME/bin/createinstance -instancename alloc -groupname alloc_group
       #password: hello1
       #成功创建
       $ORACLE_HOME/opmn/bin/opmnctl @cluster startproc ias-component=alloc_group
       $ORACLE_HOME/opmn/bin/opmnctl status -l
       #显示已经成功启动
      
       #Configure Apache for JNLP Files (在安装RSM的时候已经完成,可以跳过)
       cd $ORACLE_HOME/Apache/Apache/conf
       vi mimi.types
       #添加 application/x-java-jnlp-file jnlp
       #重启Apach
       $ORACLE_HOME/opmn/bin/opmnctl restartproc process-type=HTTP_Server
       #Configure Apache for JNLP Files 结束
      
   5.2 准备安装文件   
       #准备安装文件

       cd /d01/app/retail/alloc
       INSTALL_DIR=/d01/app/retail
       export INSTALL_DIR           
      
       cp -f  $INSTALL_DIR/alloc/12.0.7/appserverunix/alloc12application.zip $INSTALL_DIR/alloc/appserverunix/
       cd $INSTALL_DIR/alloc/appserverunix/
       unzip alloc12application.zip
      
   5.3 安装ALLOC应用  
     
       #Run the ALLOC Application Installer
       #切换到VNC界面,打开一个终端
       #备注如果设置JAVA_HOME=/d01/app/oracleas10gr3/jdk,则版本是1.5. alloc 特别强调一定要1.5
       xhost +
       ORACLE_HOME=/d01/app/oracleas10gr3
       export ORACLE_HOME
       NLS_LANG=AMERICAN_AMERICA.UTF8      
       export NLS_LANG
       PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
       export PATH
       JAVA_HOME=/d01/app/oracleas10gr3/jdk
       export JAVA_HOME
      
       INSTALL_DIR=/d01/app/retail
       export INSTALL_DIR
      
       cd $INSTALL_DIR/alloc/appserverunix/alloc/application
       su oracle
       #确认数据库和listener已经启动
       ./install.sh
       #Data Source Detail :
          Alloc/RMS12 jdbc url:jdbc:oracle:thin@syfr12:1521:RETL
          Allocation schema : alloc12dev
          Allocation schema password: alloc12dev
          RMS 12 schema :rms12dev

       #Oc4j Server type: managed
       #opmn request port:2002
       #application deployment details :Alloction 12 oc4j instance:alloc ,其他默认
       #Manaule deployment option :Yes
       #oracle other retail application: RPM 12 oc4j instance:rpm,其他默认
       #oc4j administrator user/password:oc4jadmin/hello1
       #Oracle retail application urls: 默认值
   
       #Install progerss: Install
      
       #安装成功, 有一条错误信息:[exec]Result:127 ,  但日志显示 Build Successful .
      
      
      
    5.4 Post Install
      
       测试:
       http://syfr12:2000/alloc/index.jsp
       输入用户名:admin.rsm  密码:rsm12dev(使用的是RSM的用户名认证)
       不能进入,看来RSM和RPM使用的同一套身份认证,而allocation 使用另外一套.
       通过数据库的session 可以看到 SELECT * FROM ALC_USERS A WHERE A.USER_NAME= 这样的语句
       select * from alc_users
       使用RETEK/retek登陆(注意大小写)
      
      
6\  其他      
       –如果 alc_users 没有记录,则有可能数据在RMS seed Data重建或者升级过程中被删除
       –需要重新初始化,否则 alloc无法登陆.
       –使用alloc12ctl.sql进行数据初始化
       cd /d01/app/retail/alloc/dbserverunix/alloc/dbschema/dbscripts/data
       $ORACLE_HOME/bin/sqlplus alloc12dev/alloc12dev@RETL
       SQL>@alloc12ctl.sql

REIM 12 安装日志

/*********************************************************************
======                Hand Co,ltd                            =========
======                Copy Right 2008-2009 Reserved          ===
======                ReIM 安装日志                           ========
–Created by       :  yunfang.shang@hand-china.com
–Creation Date    :  2008-9-20
–Version          :  1.0 
======                Update History                         ========
–2008-9-20  version 1.0  created

********************************************************************/
1\ 安装Oracle Application Server

   1.1 安装 Oracle application Server 10.1.3.1.0  (soa_linux_x86_101310_disk1.cpio)
   在安装RSM的时候,我们已经application Server 安装好,并把patch打到了10.1.3.4.0. 所以这里不需要做什么了.

2\ 了解安装文件和Patch
   查看了所有12.0.1-12.0.7的Patch, 12.0.1,12.0.3,12.0.4,12.0.5,12.0.6是含有DB Patch的,其他均只有 App Patch. 
   DB Patch 只要有就需要逐个打的,而App Patch只需要直接安装12.0.7即可.
      

3\ 安装文件准备
   su oracle
   cd /d01/app/retail
   mkdir reim
   cd reim
   mkdir 12.0.1
   mkdir 12.0.2
   mkdir 12.0.3
   mkdir 12.0.4
   mkdir 12.0.5
   mkdir 12.0.6
   mkdir 12.0.7
  
   #把reim_12.0_install.zip 上传到/d01/app/retail/reim
   #把其他patch 分别上传到相应的12.0.x目录
   #执行相应的解压缩
  
  
  
4\ 安装reim 数据库

       #切换到VNC界面,打开一个终端
       xhost + 
       chmod -R 777 /d01/app/retail/reim    

       su oracle
       INSTALL_DIR=/d01/app/retail/reim/dbserverunix
       export INSTALL_DIR
       ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
       export ORACLE_HOME
       ORACLE_SID=RETL
       export ORACLE_SID
       NLS_LANG=AMERICAN_AMERICA.UTF8
       export NLS_LANG
       PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
       export PATH
       JAVA_HOME=/d01/app/oracle/product/10.2.0/db_1/jre/1.4.2
       export JAVA_HOME
      
       cd $INSTALL_DIR/reim/dbschema
       #确认数据库和listener已经启动
       ./install.sh
       第2步选择加载Demo Data      
       Next->Next  按向导进行,成功完成.
      
       #打12.0.1 -12.0.7 各版本中存在的db patch
       #需要使用rms12dev 登陆数据库,安装文档在这点上写错了
       #另外执行@patch1203ctl.sql 应该在 $STAGING_AREA/sqlplus 目录下,安装文档也错了。
      
            ================= db patch for 12.0.1==========================================
            STAGING_AREA=/d01/app/retail/reim/12.0.1/dbserverunix
            export STAGING_AREA           
            cd $STAGING_AREA/dbcs
            echo @patch1201dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #成功           
            ================= db patch for 12.0.3==========================================
            STAGING_AREA=/d01/app/retail/reim/12.0.3/dbserverunix
            export STAGING_AREA           
            cd $STAGING_AREA/dbcs
            echo @patch1203dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            cd $STAGING_AREA/sqlplus
            echo @patch1203ctl.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #成功
            ================= db patch for 12.0.4==========================================
            STAGING_AREA=/d01/app/retail/reim/12.0.4/dbserverunix
            export STAGING_AREA           
            cd $STAGING_AREA/dbcs
            echo @patch1204dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            cd $STAGING_AREA/data
            echo @patch1204ctl.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #成功
            ================= db patch for 12.0.5==========================================
            STAGING_AREA=/d01/app/retail/reim/12.0.5/dbserverunix
            export STAGING_AREA           
            cd $STAGING_AREA/dbcs
            echo @patch1205dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            cd $STAGING_AREA/db_objects
            echo @patch1205reim.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #错误 @patch1206dbcs.sql:Trigger: REIM_TABLE_IRCA_AIR 编译错误
            #原因 Package 中的函数不存在 REC_COST_ADJ_SQL.ADJUST_LINEITEM_COST 
            #原因 REC_COST_ADJ_SQL 是9月10日创建,估计是RMS的Patch版本只是停留在12.0.3;
            #解决方法:首先把RMS的dbpatch打到12.0.7  再编译。
            #成功
           
            ================= db patch for 12.0.6==========================================
            STAGING_AREA=/d01/app/retail/reim/12.0.6/dbserverunix
            export STAGING_AREA           
            cd $STAGING_AREA/dbcs
            echo @patch1206dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            cd $STAGING_AREA/db_objects
            echo @patch1206reim.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL  
            #错误 @patch1206dbcs.sql:Trigger: REIM_TABLE_IRCA_AIR 编译错误
            # @patch1206reim.sql 是成功的。 
           
            #确实是把把RMS的dbpatch打到12.0.7后,再编译无效对象后,这个Trigger 就正常了。
    

      
5\ 安装ReIM Application

   我看了ReIM 12.0.1-12.0.7 的所有patch版本内容. 采用的是覆盖方式,不需要逐个打,可直接安装12.0.7
   按照reim-1207-ig.pdf 进行
      
   5.1 Create a New OC4J Instance for ALLOC
       su oracle
       ORACLE_HOME=/d01/app/oracleas10gr3
       export ORACLE_HOME
       $ORACLE_HOME/bin/createinstance -instancename reim -groupname reim_group
       #password: hello1
       #成功创建
       $ORACLE_HOME/opmn/bin/opmnctl @cluster startproc ias-component=reim_group
       $ORACLE_HOME/opmn/bin/opmnctl status -l
       #显示已经成功启动
      
   5.2 准备安装文件   
       #准备安装文件

       cd /d01/app/retail/reim
       INSTALL_DIR=/d01/app/retail
       export INSTALL_DIR           
      
       cp -f  $INSTALL_DIR/reim/12.0.7/appserverunix/reim12application.zip $INSTALL_DIR/reim/appserverunix/
       cd $INSTALL_DIR/reim/appserverunix/
       unzip reim12application.zip
      
   5.3 安装RPM应用  
     
       #Run the REIM Application Installer
       #切换到VNC界面,打开一个终端
       #备注如果设置JAVA_HOME=/d01/app/oracleas10gr3/jdk,则版本是1.5. alloc 特别强调一定要1.5
       xhost +
       ORACLE_HOME=/d01/app/oracleas10gr3
       export ORACLE_HOME
       NLS_LANG=AMERICAN_AMERICA.UTF8      
       export NLS_LANG
       PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
       export PATH
       JAVA_HOME=/d01/app/oracleas10gr3/jdk
       export JAVA_HOME
      
       INSTALL_DIR=/d01/app/retail
       export INSTALL_DIR
      
       cd $INSTALL_DIR/reim/appserverunix/reim/application
       su oracle
       #确认数据库和listener已经启动
       ./install.sh
       #Data Source Detail :
          Alloc/RMS12 jdbc url:jdbc:oracle:thin@syfr12:1521:RETL
          ReIM/RMS schema : rms12dev
          ReIM/RMS schema password: rms12dev
          RMS 12 schema :rms12dev

       #Oc4j Server type: managed
       #opmn request port:2002
       #application deployment details :Alloction 12 oc4j instance:reim ,其他默认
       #Manaule deployment option :Yes
       #oracle other retail application: RPM 12 oc4j instance:rpm,其他默认
       #oc4j administrator user/password:oc4jadmin/hello1
       #Oracle retail application urls: 默认值
   
       #Install progerss: Install
      
       #安装成功
      
      
      
    5.4 Post Install
      
       测试:
       http://syfr12:2000/reim/index.jsp
       通过数据库的session 可以看到 SELECT IM_USER_AUTHORIZATION.LASTNAME, IM_USER_AUTHORIZATION 这样的语句
       select * from IM_USER_AUTHORIZATION
       使用ADMIN/retek 登陆(注意大小写)
      
6\ 其他

       #如果 IM_USER_AUTHORIZATION 没有记录,则有可能数据在RMS seed Data重建或者升级过程中被删除
       #需要重新初始化,否则 ReIM无法登陆.
       #使用reim12ctl.sql进行数据数据初始化
       #使用im_create_demo_data.sql 插入Demo数据
       cd /d01/app/retail/reim/dbserverunix/reim/dbschema/dbscripts/data
       $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
       SQL>@reim12ctl.sql
       $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
       SQL>@im_create_demo_data.sql
       错误: file : im_demo_data.sql ; 语句:
  Adding data TO im_system_options
   POST_DATED_DOC_DAYS, QTY_RESOLUTION_DUE_DAYS, VAT_IND, CALC_TOLERANCE_PCT,
                                                          *
  ERROR at line 6:
  ORA-00904: “CALC_TOLERANCE_PCT”: invalid identifier
  #im_system_options.CALC_TOLERANCE_PCT 这个字段不存在,为什么?什么时候去掉的?
  grep ‘CALC_TOLERANCE_PCT’ /d01/app/retail/reim -r
                /d01/app/retail/reim/12.0.1/dbserverunix/dbcs/0001_im_system_options.sql:ALTER TABLE IM_SYSTEM_OPTIONS RENAME COLUMN CALC_TOLERANCE_PCT TO CALC_TOLERANCE
                #在12.0.1 patch 中该字段被改名了.
       解决方法:  修改im_demo_data.sql ,在insert语句中的字段名改一下,重新运行,INSERT INTO im_system_options
       vi im_demo_data.sql
       #找到  INSERT INTO im_system_options 修改 CALC_TOLERANCE_PCT 为   CALC_TOLERANCE 
       #再单独运行 im_demo_data.sql 
       $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
       SQL>@im_demo_data.sql 
       #成功完成.

RSM 12 安装日志

/*********************************************************************
======                Hand Co,ltd                            =========
======                Copy Right 2008-2009 Reserved          ===
======                RSM 安装日志                           =========
–Created by       :  yunfang.shang@hand-china.com
–Creation Date    :  2008-9-18
–Version          :  1.0 
======                Update History                         ========
–2008-9-18  version 1.0  created

**********************************************************************/
1\ 安装Oracle Application Server

   1.1 安装 Oracle application Server 10.1.3.1.0  (soa_linux_x86_101310_disk1.cpio)
       可在download.oracle.com 下载. 按照Oracle Application Server 10G Document -Install Guide进行安装(文档也可在downolad.oracle.com 下载)
      
       备注,因为我们的Demo环境是在同一台机器上安装数据库和application Server;
       安装RMS的Application Server(10.1.2.2.0)-Form&Reports时所做的Pre-install动作已经完全满足application Server的pre-install.
       所以,安装application Server 时如果还是以oracle用户进行,就基本不需要再考虑pre-install动作. 仅需完成如下内容:
       
      
       a) OEL4.4 x86_64 上安装as10gR3 必须先打OS补丁Patch 6002484 ,否则操作系统不被支持,详情参考 Note:445202.1
      

           
       b) 添加如下package  gcc4-java-4.1.0-18EL4(Disk4)
                           gcc4-gfortran-4.1.0-18.EL4(Disk3)
                           gcc4-c++-4.1.0-18.EL4(Disk3)
                           gcc-objc-3.4.5-3.1(Disk3)
                           gcc-gnat-3.4.6-3.1(Disk3)
                          
                           glibc-utils-2.3.4-2.25(Disk4)                          
                           glibc-profile-2.3.4-2.25(Disk4)
                                                     
                           compat-gcc-32-3.2.3-47.3(Disk3)
                           compat-glibc-2.3.2-95.30(Disk3)                         
                           compat-libgcc-296-2.96-132.7.2(Disk3)
                           openmotif-devel-2.2.3-10.RHEL4.5(Disk3)
                           gnome-libs-devel-1.4.1.2.90-44.2(Disk4)
                           compat-glibc-headers-2.3.2-95.30(Disk3)
                          
                           由于依赖关系比较多,建议在图形桌面中,在文件上右健使用 Open with “install packages” 进行安装.
      
       建立安装目标目录: /d01/app/oracleas10r3
       建立安装Stage目录: /d01/oracleas10gr3_stage
       上传soa_linux_x86_101310_disk1.cpio 到 /d01/oracleas10gr3_stage
       cd /d01/oracleas10gr3_stage
       cipo -idvm < soa_linux_x86_101310_disk1.cpio
       切换到VNC窗口(或者本地机显示器)
      
       为了避免端口重复,安装前先编辑端口(如果Application Server 分开安装在不同机器上则不需要此动作)
       cp /d01/oracleas10gr3_stage/stage/Response/staticports.ini  /d01/app/oracleas10gr3
       vi staticports.ini
      
        Oracle HTTP Server port = 2000
 Oracle HTTP Server SSL port =2001
 Oracle Notification Server Request port = 2002
 Oracle Notification Server Local port = 2003
 Oracle Notification Server Remote port = 2004
 ASG port = 2005     
 
      
       xhost +
       #以oracle用户进行安装
       su oracle
       cd /d01/oracleas10gr3_stage
      
       ./runInstaller  PREREQ_CONFIG_LOCATION=/d01/oracleas10gr3_stage/prereq  -paramFile /d01/oracleas10gr3_stage/oraparam.ini
       选择 advance 安装
       选择 第2个 J2eeserver and web Server ( 第1个Soa Suit含Content Database,我们不需要)
       指定端口配置时选择:Manaule
      
       As instance Name : oracleas10gr3
       As administrator password: hello1
       勾选择 Configure this as an administration Oc4j instance
       Next->Next 按照向导安装即可.
       注意最后一屏,里面有使用此AS 的相关信息. 这些信息会存放与$ORACLE_HOME/insall/readme.txt中
      

   1.2 安装 Patch 升级到 Oracle application Server 10.1.3.4.0
  
       建立安装Stage目录: /d01/oracleas10gr4patch_stage
       上传ias_linux_x86_101340.zip 到 /d01/oracleas10gr4patch_stage
       cd /d01/oracleas10gr4patch_stage
       unzip ias_linux_x86_101340.zip
       按照Disk1 中的Readme进行安装
      
       先备份 as 10.1.3.1
       #跟数据库相关的upgrade脚本不需要执行,因为我们没有安装这些东西.
       
       ORACLE_HOME=/d01/app/oracleas10gr3
       export ORACLE_HOME  
      
       #安装文挡指出,如果在opmn.xml 里面指定了java-bin的路径的话,需要停服务,去掉这个配置再重启动.
       #10.1.3.1.0 安装后没有 java-bin这个ID,因此不需要做这一步.
      
       $ORACLE_HOME/owsm 目录不存在,所以第6步不许要ensure.
      
       cd /d01/oracleas10gr4patch_stage/Disk1
       linux32 bash
       ./runInstaller
      
       #Specify file location
       name:选择oracleas2  对应的地址是我们刚才安装的 /d01/app/oracleas10gr3
       2008-9-18 15:55
       Next->Next 按照安装向导操作即可.
       最后成功完成.
      
2\ 安装RSM 数据库
      
      
       su oretail
       cd /d01/app/retail  
       mkdir rsm      
       #上传 rsm_12.0_install.zip 到 /d01/app/retail/rsm
       unzip rsm_12.0_install.zip      
            
       INSTALL_DIR=/d01/app/retail/rsm/dbserverunix
       export INSTALL_DIR
       cd $INSTALL_DIR
       unzip rsm12dbschema.zip
      
      
      
       #切换到VNC界面,打开一个终端
       xhost + 
       chmod -R 777 /d01/app/retail/rsm    
      
       ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
       export ORACLE_HOME
       ORACLE_SID=RETL
       export ORACLE_SID
       NLS_LANG=AMERICAN_AMERICA.UTF8
       export NLS_LANG
       PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
       export PATH
       JAVA_HOME=/d01/app/oracle/product/10.2.0/db_1/jre/1.4.2
       export JAVA_HOME
       INSTALL_DIR=/d01/app/retail/rsm/dbserverunix
       export INSTALL_DIR
      
       cd $INSTALL_DIR/rsm/dbschema
       su oracle
       #确认数据库和listener已经启动
       ./install.sh
       Next->Next  按向导进行,成功完成.
      
      
3\ 安装RSM Application
      
   3.1 Create a New OC4J Instance for RSM
       su oracle
       ORACLE_HOME=/d01/app/oracleas10gr3
       export ORACLE_HOME
       $ORACLE_HOME/bin/createinstance -instanceName rsm
       #password: hello1
       #成功创建
       $ORACLE_HOME/opmn/bin/opmnctl startproc process-type=rsm
       $ORACLE_HOME/opmn/bin/opmnctl status -l
       #显示已经成功启动
      
       cd $ORACLE_HOME/Apache/Apache/conf
       vi mimi.types
       #添加 application/x-java-jnlp-file jnlp
       #重启Apach
       $ORACLE_HOME/opmn/bin/opmnctl restartproc process-type=HTTP_Server
   3.2 准备安装文件   
       #准备安装文件
       INSTALL_DIR=/d01/app/retail/rsm/appserverunix
       export INSTALL_DIR
       cd $INSTALL_DIR
       unzip rsm12application.zip
       cd $INSTALL_DIR/rsm/application
       #上传 hibernate2.jar 到 $INSTALL_DIR/rsm/
      
   3.3 安装RSM应用  
     
       #Run the RSM Application Installer
       #切换到VNC界面,打开一个终端
       xhost +
       ORACLE_HOME=/d01/app/oracleas10gr3
       export ORACLE_HOME
       ORACLE_SID=RETL
       export ORACLE_SID
       NLS_LANG=AMERICAN_AMERICA.UTF8
       export NLS_LANG
       PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
       export PATH
       JAVA_HOME=/d01/app/oracleas10gr3/jre/1.4.2
       export JAVA_HOME
       INSTALL_DIR=/d01/app/retail/rsm
       export INSTALL_DIR
      
       cd $INSTALL_DIR/rsm/application
       su oracle
       #确认数据库和listener已经启动
       ./install.sh
       #身份验证选择 xml文件( 仅用于Demo环境,正式环境需要使用LDAP服务器,一般是使用Oralce Internet Directory)
       #Data Source Detail : RSM12 jdbc url:schema/schemapassword: rsm12dev/rsm12dev
       #Manue deploy option : Yes
       #Clinet File on Http server:Yes
       #Clinet Destnation : 默认值
       #Oc4j Server type: managed
       #opmn request port:2002
       #application deployment details :RSM 12 oc4j instance:rsm ,其他默认
       #oracle other retail application: RPM 12 oc4j instance:rpm,其他默认
       #oc4j administrator user/password:oc4jadmin/hello1
       #Oracle retail application urls: 默认值
       #Install progerss: Install
      
       #安装失败,查看日志
       more rsm12install*.log
            oas.deploy:
              [echo] Deploying ear file to deployer URI deployer:cluster:opmn://syfr12:2002/rsm-oc4j-instance
              [oracle:deploy] Unable to get a deployment manager.
             
       # 检查了几种可能的情况均不存在,看rsm-120-ig-addendum.pdf 文档指出只有在RSM12.0.2以后,Linux 平台才被支持.
       # 所以…
      
       cd /d01/app/retail/rsm
       mkdir 12.0.1
       mkdir 12.0.2
       mkdir 12.0.3
       mkdir 12.0.4
       #把各版本的Patch  上传到相应的目录  解压缩后发现12.0.1-12.0.4版本均是仅仅包含Application 的Patch, 没有dbpatch.
       #而且各patch版本打包是采用完全覆盖方式,所以没有必要逐版本升级.
      
       INSTALL_DIR=/d01/app/retail/rsm      
       PATCH_STAGE=/d01/app/retail/rsm/12.0.4
       export INSTALL_DIR  PATCH_STAGE
      
       cd $INSTALL_DIR/appserverunix
       rm -fr *
       cp -f $PATCH_STAGE/appserverunix/rsm12application.zip  $INSTALL_DIR/appserverunix/rsm12application.zip
       unzip rsm12application.zip
       cd $INSTALL_DIR
       cp $INSTALL_DIR/hibernate2.jar  $INSTALL_DIR/appserverunix/rsm/application/hibernate/
      
       按照rsm-1204-ig.pdf  进行:
       $ORACLE_HOME/opmn/bin/opmnctl stopall
       $ORACLE_HOME/bin/removeinstance -instancename rsm
       $ORACLE_HOME/bin/createinstance -instancename rsm -groupname rsm_group
      
       回到3.3 重新执行install
       这次就成功了,没有错误.
      
      
       #添加用户      
       cd /d01/app/oracleas10gr3/j2ee/rsm/applications/rsm12/conf/retek
       vi users_rsm.xml
       添加用户admin.rsm:
<users>
        <user username=”Valid.User” firstname=”Valid” lastname=”User” password=”PaSsW0rD”/>
        <user username=”admin.rsm”  firstname=”admin” lastname=”rsm”  password=”rsm12dev”/>
</users>
       #重启应用?(实践证明不需要)
       #$ORACLE_HOME/opmn/bin/opmnctl @cluster restartproc ias-component=rsm_group
      
       测试:
       http://syfr12:2000/rsm/rsm.jnlp
       输入用户名:admin.rsm  密码:rsm12dev
       可以正常进入

RPM 12 安装日志

/*********************************************************************
======                Hand Co,ltd                            =========
======                Copy Right 2008-2009 Reserved          ===
======                RPM 安装日志                           =========
–Created by       :  yunfang.shang@hand-china.com
–Creation Date    :  2008-9-19
–Version          :  1.0 
======                Update History                         =========
–2008-9-19  version 1.0  created

**********************************************************************/
1\ 安装Oracle Application Server

   1.1 安装 Oracle application Server 10.1.3.1.0  (soa_linux_x86_101310_disk1.cpio)
   在安装RSM的时候,我们已经application Server 安装好,并把patch打到了10.1.3.4.0. 所以这里不需要做什么了.
  
      
2\ 安装RPM 数据库
   RPM的表在安装RMS和RSM的时候已经安装完毕,这里不需要额外安装.   

      
3\ 安装RPM Application

   我看了RPM 12.0.1-12.0.7 的所有patch版本内容. 采用的是覆盖方式,不需要逐个打,可直接安装12.0.7
   按照rpm-1207-ig.pdf 进行
      
   3.1 Create a New OC4J Instance for RPM
       su oracle
       ORACLE_HOME=/d01/app/oracleas10gr3
       export ORACLE_HOME
       $ORACLE_HOME/bin/createinstance -instancename rpm -groupname rpm_group
       #password: hello1
       #成功创建
       $ORACLE_HOME/opmn/bin/opmnctl @cluster startproc ias-component=rpm_group
       $ORACLE_HOME/opmn/bin/opmnctl status -l
       #显示已经成功启动
      
       #Configure Apache for JNLP Files (在安装RSM的时候已经完成,可以跳过)
       cd $ORACLE_HOME/Apache/Apache/conf
       vi mimi.types
       #添加 application/x-java-jnlp-file jnlp
       #重启Apach
       $ORACLE_HOME/opmn/bin/opmnctl restartproc process-type=HTTP_Server
       #Configure Apache for JNLP Files 结束
      
   3.2 准备安装文件   
       #准备安装文件
       su root
       chmod -R 777 /d01/app/retail
       su oracle
       cd /d01/app/retail
       mkdir rpm      
       cd rpm       
       mkdir appserverunix
       mkdir 12.0.7
       INSTALL_DIR=/d01/app/retail
       export INSTALL_DIR
             
       #上传 hibernate2.jar 到 $INSTALL_DIR/rpm/
       #上传 p6909057_1200_GENERIC.zip 到 $INSTALL_DIR/rpm/12.0.7
       cd $INSTALL_DIR/rpm/12.0.7
       unzip p6909057_1200_GENERIC.zip
       unzip rpm_1207_install.zip
       cp -f  $INSTALL_DIR/rpm/12.0.7/appserverunix/rpm12application.zip $INSTALL_DIR/rpm/appserverunix/
       cd $INSTALL_DIR/rpm/appserverunix/
       unzip rpm12application.zip
       cp $INSTALL_DIR/rpm/hibernate2.jar  $INSTALL_DIR/rpm/appserverunix/rpm/application/hibernate/
      
   3.3 安装RPM应用  
     
       #Run the RPM Application Installer
       #切换到VNC界面,打开一个终端
       #备注如果设置JAVA_HOME=/d01/app/oracleas10gr3/jdk,则版本是1.5. 安装过程选择1.4.2可以顺利通过,所以没有设置为1.5
       xhost +
       ORACLE_HOME=/d01/app/oracleas10gr3
       export ORACLE_HOME
       NLS_LANG=AMERICAN_AMERICA.UTF8      
       export NLS_LANG
       PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
       export PATH
       JAVA_HOME=/d01/app/oracleas10gr3/jre/1.4.2
       export JAVA_HOME
      
       INSTALL_DIR=/d01/app/retail
       export INSTALL_DIR
      
       cd $INSTALL_DIR/rpm/appserverunix/rpm/application
       su oracle
       #确认数据库和listener已经启动
       ./install.sh
       #Data Source Detail :
          RMS12 jdbc url:jdbc:oracle:thin@syfr12:1521:RETL
          schema/schemapassword: rsm12dev/rsm12dev          owner:rsm12dev
       #JMS provider : 默认
       #Manue deploy option : Yes
       #Clinet File on Http server:Yes
       #Clinet Destnation : 默认值
       #Oc4j Server type: managed
       #opmn request port:2002
       #application deployment details :RPM 12 oc4j instance:rpm ,其他默认
       #oracle other retail application: RSM 12 oc4j instance:rsm,其他默认
       #oracle other retail application(Oracle as enterprise):
          RSM 12 oc4j instance : rsm
          RSM 12 deployment name :rsm12
          RIB for rpm12 oc4j instance name : ribrpm
          RIB for rpm12 deployment name :    ribrpm
       #oc4j administrator user/password:oc4jadmin/hello1
       #Oracle retail application urls: 默认值
       #Install progerss: Install
      
       #安装成功,没有错误.
      
      
      
    3.4 Post Install 
   
       #对客户端jar签名
       JAVA_HOME=/d01/app/oracleas10gr3/jdk
       export JAVA_HOME
       cd $JAVA_HOME/bin
       $JAVA_HOME/bin/keytool -genkey -alias foo
       find $ORACLE_HOME -name rpm_client_config.jar
       cd /d01/app/oracleas10gr3/Apache/Apache/htdocs/rpm/lib/
       $JAVA_HOME/bin/jarsigner rpm_client_config.jar foo
      
       #添加用户
       使用RSM的用户。
      
       #生辰JMS绑定 Re-Generating JMS Bindings with BindEGateJMSQueue.jar
       ORACLE_HOME=/d01/app/oracleas10gr3        
       JAVA_HOME=/d01/app/oracleas10gr3/jdk
       export ORACLE_HOME JAVA_HOME  
        
       cp -R /d01/app/retail/rpm/appserverunix/rpm/application/rpm12/sbynjndi   $ORACLE_HOME/j2ee/rpm/
      
       cd $ORACLE_HOME/j2ee/rpm/sbynjndi 
       #Usage: BindEGateJMSQueue -q <jms queue> -h <jms host> -p <jms port> -d <output directory>
       $JAVA_HOME/bin/java –jar BindEGateJMSQueue.jar –q rpmTaskQueue –h syfr12 –p 13601 –d $ORACLE_HOME/j2ee/rpm/sbynjndi
       $JAVA_HOME/bin/java BindEGateJMSQueue.jar –q rpmTaskQueue –h syfr12 –p 13601 –d $ORACLE_HOME/j2ee/rpm/sbynjndi
      
      
      
       #测试:
       http://syfr12:2000/rpm/rpm.jnlp
       输入用户名:admin.rsm  密码:rsm12dev
       可以正常进入
      
       #RPM在公网开发需要开放哪些端口?
       答:需要开放3个端口
       针对每个As instance 开放:
       1)AS httpd 端口
       2)AS opmn request 端口
       针对每个OC4J instance 开放:
       1) OC4J RMI 端口  
      
       #ftp服务在公网开放需要怎么做?
       答:
       1)更改vstpd配置文件  vi  /etc/vsftpd/vsftpd.conf
          uncomment and modify:  chroot_list_enable=NO
          uncomment and modify:  chroot_list_file=/etc/vsftpd.chroot_list
          在最后添加一句:pasv_promiscuous=YES
         
         
       2) 编辑 /etc/vsftpd.chroot_list
          添加一行
          hand
         
       3) 在linux 服务器上启用 vstpd服务 
       4) 在ADSL路由器中开放 21 和 20两个端口
      
       备注:pasv_promiscuous=YES 是解决ftp登陆有不能进行数据传输的问题。
             chroot_list_enable=NO 是为了限制登陆用户的权限,不允许其切换到根目录
       
      
      
      
      
      
FAQ

 
一、  选择 RPM->连接代码->创建连接代码
         报错:发生致命错误。
         原因:RetekNetworkException
         解决:    
         NOTE:563794.1  说打到12.0.8就可以了
       INSTALL_DIR=/d01/app/retail
       export INSTALL_DIR
        
       cd $INSTALL_DIR/rpm/12.0.8
       unzip p6909057_1200_GENERIC.zip
       unzip rpm_12.0.8_install.zip
       rm -fr $INSTALL_DIR/rpm/appserverunix/*
       cp -f  $INSTALL_DIR/rpm/12.0.8/appserverunix/rpm12application.zip $INSTALL_DIR/rpm/appserverunix/
       cd $INSTALL_DIR/rpm/appserverunix/
       unzip rpm12application.zip
       cp $INSTALL_DIR/rpm/hibernate2.jar  $INSTALL_DIR/rpm/appserverunix/rpm/application/hibernate/
      
       在回到3.3 按步骤安装
             3.4 签名
             结果,错误依旧,Metalink NOTE:417782.1 描述现象与此一样,loc_type设置错误,但solution讲得不明白            
             NOTE:430791.1 描述的是另一种错误,这种错误也存在。
             错误的主要原因在于数据不一致。已经在RMS中删除的区域没有在RPM表中删除。
            
             目前我们在RPM中遇到的致命错误有:
             1)RPM->连接代码->创建连接代码              
             2)RPM->购物栏代码->创建购物栏代码
             3)RPM->区域结构->创建区域组
            
                  Metalink NosteThis is caused by departments deleted from Retail Merchandising System (RMS) were not deleted from Retail Price Management (RPM) tables.
            
  SELECT * FROM RPM_PRICE_GUIDE_DEPT WHERE dept NOT IN (SELECT dept FROM deps)
  SELECT * FROM RPM_MERCH_RETAIL_DEF WHERE dept NOT IN (SELECT dept FROM deps)
  SELECT * FROM RPM_DEPT_AGGREGATION WHERE dept NOT IN (SELECT dept FROM deps)
  –记录数=0 ;说明这种情况不存在
            
            
             4)RPM->促销->创建促销
             5)RPM->促销界限->创建促销界限
             6)RPM->价格查询->检索货品价格
            
             部分错误显示如下:
             at com.retek.rpm.app.zonestructure.service.ZoneGroupAppServiceImpl.getZoneGroupCreateVO
            
             Metalink若干文章指出数据不一致的可能性有:
             1 部门在RMS中删除后,没有在RPM相关表中删除,这些表包括:
                1- RPM_MERCH_RETAIL_DEF
  2- RPM_DEPT_AGGREGATION
  3- RPM_PRICE_GUIDE_DEPT
      2 In this instance the Loc_Type in the data is zero for stores and one for warehouses. The correct values should be zero for stores and two for warehouses.
     
      上述可能性均检查了一下,不存在。
      无奈之下,到出错的信息中去查询关键语句,找到:
      Could not find any of the requested items     
      在Metalink中查询这个语句,找到一个NOTE:399971.1 描述
      原因:RPM_SYSTEM_OPTIONS中没有记录,select * from RPM_SYSTEM_OPTIONS 果来没有记录
      解决方法是:
      操作:RPM->系统选项->系统选项编辑->保存。
     
      测试,按照上述方法操作后,确实解决了RPM中的5处报错情况。

二、选择 促销-> 创建促销 时报错:

       com.retek.platform.exception.RetekNetworkException: Server connection failed and retries were not successful .
    exception id: null at …

      分析,从错误中找出关键错误:Could not find any of the requested items. Item: com.retek.rpm.domain.admin.bo.SystemDefaults   ,在Metalink中搜索“Item: com.retek.rpm.domain.admin.bo.SystemDefaults” 得到 NOTE:368822.1

      解决:选择 系统选项-> 系统默认值编辑->保存

      测试:问题已解决。

RMS 12 安装日志

/*********************************************************************
======                Hand Co,ltd                            =========
======                Copy Right 2008-2009 Reserved          =========
======                RMS安装日志                            =========
–Created by       :  yunfang.shang@hand-china.com
–Creation Date    :  2008-9-11
–Version          :  1.0 
======                Update History                         =========
–2008-9-11  version 1.0  created

**********************************************************************/
1\ 安装oracle Enterprise linux 4.4 x86_64
   注意点:
   1.1 交换分区根据Oracle 的要求:2G<内存<=4G 时;交换分区大小=内存大小。
   内存>8G  时;交换分区大小=内存大小*0.75 ;在后来安装数据库时这会作为一个检察点。
   1.2 安装时选择关闭防火墙;关闭SElinux;Selinu会阻止启动数据库的sqlplus运行。
   1.3 完成后,要上传文件,远程Sftp要求使用SecureFX6.0 好用,速度快,无2G大小限制。(WS_FTP太差了)

2\ 安装oracle Database 10GR2 ,一定要10GR2这个版本,不能安装11G;因为RMS数据库提供init.ora是针对 10GR2 的 。
   这步安装没有特别要说明的。按照安装包中自带的快速安装指南进行即可,所有的package都能在光盘上找到。
   标准安装说明文档中在pre-install 中对64位的DB安装需要的Package 要求说明不太清楚。这里强调2点:
   1)基本上,和C ,C++相关的Package 都要求64位和32位的Package同时存在。
   2)实际安装的是否发现快速指南中还是漏了几个Package. 标准说明文档中在pre-install 章节 漏了N个package libaio-0.3.105-2
      和xorg-x11-deprecated-libs-6.8.2-31.i386.rpm 后一个在安装的时候,使用图形化安装,它会自动检查关联性,并提示插入第一章光盘。
      这个package 中有个库是OUI要用到的,否则安装到第一步就不能继续了。
    
   为了方便再次安装,把这些容易遗漏的package 都整理在rpms目录中了。 

3\ 打数据库patch 从10.2.0.1 升级到 10.2.0.3

   10.2.0.3 是个补丁,超大有1G多。p5337014_10203_Linux-x86-64.zip
   按照补丁中的文档进行安装即可;一般没什么问题(先备份,然后再安装)
   postinstall部分主要参考 7.2 Upgrading Oracle Database 10g Release 10.2.0.x to Oracle Database 10g Release 10.2.0.3 把orcl数据库升级一下(看看效果);
   特别注意更改权限这一步是必须做的。其他不用做。
   cd $ORACLE_HOME/install
   ./changePerm.sh
   
   升级完成后,默认的数据库是启动状态的;可以使用web版的dbconsole察看http://hostname:1158/em (sys/hello 登陆)进入后可以看到升级后的orcl数据库版本是10.2.0.3

   安装完成后,启动,关闭数据库; 启动关闭web版的dbconsole 的脚本均在$ORACLE_HOME/bin目录下。运行前要先export ORACLE_HOME 和 ORACLE_SID 变量。
   关闭数据库:
   $ cd $ORACLE_HOME/bin
   $ ./emctl stop dbconsole
   $ ./isqlplusctl stop
   $ ./sqlplus ‘/as sysdba’
   sql> shutdown immediate
   $ ./lsnrctl stop

4\ 打数据库Patch 5397953

   按照Patch中的Readme操作即可.
   注意: 使用opatch需要export $ORACLE_HOME
  
  
  
  
5\ 安装RMS

   5.1 安装 Oracle application Server (Forms Services and Reports Services)
       选择 edelivery 下载 B24489-01.zip Oracle application Forms Services and Reports Services 10.1.2.0.2
       按照 ddelivery 下载的文档B25260-01中的安装指南进行安装。
       备注,因为我们的Demo环境是在同一台机器上安装数据库和application Server; 安装数据库是所做的Pre-install动作已经完全满足application Server的pre-install. 所以,安装application Server 时如果还是以oracle用户进行,就基本不需要再考虑pre-install动作.
       只需要注意一下两点:
   
       a) 检查 /etc/sysctl.conf 文件, 如果缺少或者小于如下配置,则修改或加入如下参数:
            kernel.msgmnb = 65535
            kernel.msgmni = 2878
            kernel.shmmax = 4294967295
            kernel.sem = 256 32000 100 142
           
       b) 添加一个package  openmotif21-2.1.30-11.RHEL4.6.i386.rpm          
      

       可以到安装目录直接开始安装. 唯一要考虑的问题是各种服务的端口问题.这个可以参考安装文档. 我认为下面在安装rpm的时候需要 更高版本的application server ,也就是需要在同一台机器上安装多个application server,所以在下面安装rpm需要的application server时 必须使用自定义的端口,否则很容易引起冲突. 我认为一个偷懒的办法是: 在安装下一个application Server以前,先把前几个application Server 打开. 这样相应的端口都全部在占用中,新的安装会自动选择别的端口.

       在/d01/app/ 下建立一个oracleas 目录用于安装application server
       到安装目录,开始安装.

       指定instance name 的时候,输入formreportsvr,hello1,hello1

      

   5.2 安装 RMS Database

      5.2.1 根据RMS安装文档(rms-120-ig.pdf)进行安装。

      5.2.2 对于Linux平台的安装,在安装前,使用Patch 5985761 更新安装文件;根据patch 中的seed_data/readme/readme.txt 文件进行 更新。(参考rms-120-ig-addendum.pdf)
  
      5.2.3安装RMS数据库时,对于linux平台,按照文档下载的patch 5985761 运行./partition.ksh 报错,产生分区表的DDL,
      注意这个脚本要运行成功必须先根据Excel的分区策略中描述的算法先完成配置文件partition_attributes.cfg的填写
      和数据定义文件的填写。这个工作量还是有点大的。如果不这么做,配置文件内容不完整,脚本运行肯定是失败的。
      对于测试坏境,因为基本不涉及性能问题,所以可以不运行这个脚本,但是对于正式环境是必须的。

      5.2.4 创建RMS数据库;按照RMS12的安装指南进行到 “Create the RMS Database(安装RMS数据库)”时,
      转到补充安装文档rms-120-ig-addendum.pdf的 Database Installation Tasks Update 章节。
     
            创建目录,/d01/app/retail/rms/db,把rms12dbserver.zip 上传到此目录,解压缩。
            因为是linux安装,有些脚本需要被Patch中的脚本替代,具体可参考  rms-120-ig-addendum.pdf Page14-16 
     
            5.2.4.1  SID 设置为SID=retl
            ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
            export ORACLE_HOME
            ORACLE_SID=RETL
            export ORACLE_SID
            INSTALL_DIR=/d01/app/retail/rms/db
            export INSTALL_DIR
            cp $INSTALL_DIR/create_db/init102_release.ora $ORACLE_HOME/dbs/initRETL.ora
           
            创建OFA目录
            cd $ORACLE_HOME/admin
            mkdir retl
            cd retl
            mkdir adump
            mkdir bdump
            mkdir cdump
            mkdir dpdump
            mkdir pfile
            mkdir udump
            mkdir utl_file_tmp
            cd $ORACLE_HOME
            cd ./oradata    
            mkdir retl
        
           
            编辑initRETL.ora
            替换相应的目录
            端口设置为1521 (HOST=syfr12)(PORT=1521
            db_name=RETL
            备注:修改要仔细,确保Notes说明部分提到的需要修改的内容 都改了。
           
            编辑INSTALL_DIR/create_db/crdb1.sql  按脚本文件中的头上的要求操作即可
           
            sqlplus 登陆:
            cd $INSTALL_DIR/create_db
            $ORACLE_HOME/bin/sqlplus ‘/as sysdba’
            SQL>@crdb1.sql
           
            然后分别执行credb2.sql; credb3.sql
            最后,配置listen
            10g 默认使用的是动态注册,每个实例在启动的时候会根据initSID.ora中的local_listener进行动态注册。
            但前提是已经启动的listener,并且已经启动的linstener 的侦听端口与initSID.ora中的local_listener中描述的是一致的,否则动态注册不成功。
           
            (注意,先启动linstener,然后再启动实例,实例启动后要检查listener是否已经开始侦听可以使用lsnrctl status察看。)
           
            APPENDIX B 中提供的listener.ora 是错误的。缺少(ORACLE_HOME = …)
            正确的应该是这样的:      
#################################################################
# File: listener.ora
# Desc: Oracle Net8 listener file.
# Notes: Modify <hostname>
#################################################################

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =(SID_NAME = extproc_agent)
      (ORACLE_HOME = /d01/app/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc) 
      (ENVS=’EXTPROC_DLLS=ANY’)
    )
  )
LISTENER =
 (DESCRIPTION_LIST =
  (DESCRIPTION =
    (PROTOCOL_STACK =(PRESENTATION = TTC)(SESSION = NS))
    (ADDRESS =(PROTOCOL = tcp)(HOST = syfr12)(PORT = 1521))
    (ADDRESS =(PROTOCOL = IPC)(KEY = extproc_key)))
  )
 
tnsname.ora 按要求改成了如下样子:
#################################################################
# File: tnsnames.ora
# Desc: Net Services configuration file.
# Note: Change these values: <service_name>, <oracle_sid>, <hostname>,
# <global_name>
#################################################################

EXTPROC_CONNECTION_DATA =
 (DESCRIPTION =
   (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(Key = extproc_key)))
   (CONNECT_DATA = (SID = extproc_agent)))
EXTPROC_CONNECTION_DATA.world =
 (DESCRIPTION =
   (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(Key = extproc_key)))
   (CONNECT_DATA = (SID = extproc_agent)))
ORCL =
 (DESCRIPTION =
   (ADDRESS_LIST = (ADDRESS = (PROTOCOL = tcp)(host = syfr12)(Port = 1521)))
   (CONNECT_DATA = (SID = orcl) (GLOBAL_NAME = orcl.world)))
ORCL.world =
 (DESCRIPTION =
   (ADDRESS_LIST = (ADDRESS = (PROTOCOL = tcp)(host = syfr12)(Port = 1521)))
   (CONNECT_DATA = (SID = orcl) (GLOBAL_NAME = orcl.world)))
RETL =
 (DESCRIPTION =
   (ADDRESS_LIST = (ADDRESS = (PROTOCOL = tcp)(host = syfr12)(Port = 1521)))
   (CONNECT_DATA = (SID = RETL) (GLOBAL_NAME = RETL.world)))
RETL.world =
 (DESCRIPTION =
   (ADDRESS_LIST = (ADDRESS = (PROTOCOL = tcp)(host = syfr12)(Port = 1521)))
   (CONNECT_DATA = (SID = RETL) (GLOBAL_NAME = RETL.world)))
  
            
             创建Tablespace 按安装文档进行。无特殊说明
             创建RMS12DEV Schema  按安装文档进行。无特殊说明
            
            
       因为是linux安装,有些脚本需要被Patch中的脚本替代,具体可参考  rms-120-ig-addendum.pdf Page14-16   
 
           
       5.2.5 创建 RIB objects
      
             Create RIB Tables and Types:             
             cd $INSTALL_DIR/rib_objects/ddl
             $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
             SQL>@rib12ddl.sql
            
             Create RIB Objects:
             cd $INSTALL_DIR/rib_objects/db_objects
             $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
             SQL>@rms12rib.sql 
            
             Loading RIB Data: 这一步按照linux补充安装说明文档的要求,不要执行。
            
       5.2.6 创建 Pricing Objects    
      
             cd $INSTALL_DIR/pricing/types
             $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
             SQL>@rpm12type.sql
             成功
            
             cd $INSTALL_DIR/pricing/ddl
             $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
             SQL>@rpm12.sql            
             成功
            
             cd $INSTALL_DIR/pricing/db_objects
             $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
             SQL>@rpm12dbo.sql  
             失败,大多数pacakge 编译通不过,打开文件看,原因是Type或者表不存在
             比如 type 定义 :OBJ_RPM_SYSTEM_OPTIONS_REC 不存在
             表 :item_master 不存在
             使用查找命令看是否存在于哪个文件中:
             find $INSTALL_DIR -type f -print | xargs grep “OBJ_RPM_SYSTEM_OPTIONS_REC”
            
             发现其定义在 $INSTALL_DIR/types/promo_api_objects.sql 中 但安装文档中是在下一章节安装RMS的时候才会安装这个脚本。
             看来需要先安装RMS对象,然后再回来运行一次@rpm12dbo.sql;
             或者是另一个办法更可行:因为这些对象虽然没有编译成功,但是都已经进入数据库,只是其状态为invalid;可以在完成RMS数据库对象安装后,再编译所有无效对象来解决这个问题.
             在多个模块安装,并且对象之间有相互依赖关系时,也只能这样处理了.
            
            
            
       5.2.7 创建 RMS Objects       
            
             cd $INSTALL_DIR/types
             $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
             SQL>@rms12type.sql            
             成功
            
             cd $INSTALL_DIR/ddl
             $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
             SQL>@rms12.sql            
             成功            
                      
             cd $INSTALL_DIR/db_objects
             $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
             SQL>@rms12dbo.sql            
             成功             
           
             cd $INSTALL_DIR/ddl
             $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
             SQL>@rms12b.sql            
             成功              
           
           
             编译所有无效对象,这一步可以解决无效对象问题,包括5.2.6中第3步的问题.
             cd $INSTALL_DIR/utility
             $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
             SQL>@inv_obj_comp.sql
            
             执行完后,用如下语句检查效果
             SELECT * FROM all_objects WHERE  owner=’RMS12DEV’ AND status =’INVALID’
             如果还有无效对象,则再次运行,直到无效对象数量为0            
             成功 
            
             Insert Data for Pricing:
            
             cd $INSTALL_DIR/pricing/data
             $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
             SQL>@rpm12ctl.sql 
            
             Insert Data for RMS: (从这里开始,Page17-pg19 转到补充安装文档: rms-120-ig-addendum.pdf page16-page18)
             相关的脚本更新动作在所有脚本安装前已经完成.
            
             cd $INSTALL_DIR/data
             $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
             SQL>@rmsseeddata.sql              

  有错误:            
  ‘Starting File: ribdoctypes.sql’
  Enter the username and password(username/password@database): rms12dev/rms12dev@RETL
  /bin/bash: sqlldr: command not found  
  
  Is Vat on? Y or N: Y
  What is the owner schema? rms12dev
  Is Vat_Class on? Y or N: Y
  Enter value for role_to_add: DEVELOPER
  Enter Calendar type to be used. (4)454 calendar. (C)Standard calendar. (4/C): C
  Enter week start – week end option. (1)Sat-Fri. (2)Sun-Sat. (3)Mon-Sun. (1/2/3): 2
  Enter date to be set as transaction date (vdate as DD-MON-YYYY): 11-SEP-2008
  Would you like to turn RTM on? Y or N – Y  
  second language : zhs
  prime language :  空格  ( 表示英语)
  
  结束,共一个错误:  sqlldr 没有找到,所以数据加载未成功,打开ribdoctypes.sql,可见其实际执行的动作:
  sqlldr &loginid control=rib_doctypes_rms.ctl data=rib_doctypes_rms.dat
  可以手工执行这个动作
  $ORACLE_HOME/bin/sqlldr rms12dev/rms12dev@RETL control=rib_doctypes_rms.ctl data=rib_doctypes_rms.dat
  
  这步完成后,全部成功.
  
      Insert Demo Data for RMS:
     
      备注:在运行这个脚本前,现执行如下语句,否则脚本运行时若干地方会出现主键或者唯一索引冲突。
      这个问题是安装时发现的,安装指南中未提及。
     
      CREATE TABLE system_options_bak AS SELECT * FROM system_options;
             DELETE FROM system_options WHERE base_country_id =’CN’;
             DELETE FROM doc_link where doc_type in (‘AI’,’BI’,’CS’);
             DELETE FROM cost_zone_group WHERE zone_group_id =1000;
     
             cd $INSTALL_DIR/data
             $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
             SQL>@rmsdemodata.sql  
            
                Enter the Base Country Id (2 characters): cn
  Enter the Primary currency: CNY
  Is Multi-channel on? Y or N: Y
  Is Bracket Costing on? Y or N: Y
  What is the owner schema? rms12dev
  Number of items to create:2000
  Transaction level: 1
  
             运行完毕,检查log ,如果有错误,需要根据错误,查看脚本进行更正。因为脚本逻辑比较简单,更正相对比较简单。就是费点时间。
            
             Insert Role Data into RMS: 这部分不需要做什么工作,相关的data在前面的步骤中已经完整,这里只是说明一下。
                       
  
        5.2.8 创建 Compile RMS batch libraries and programs
       
            这一步,是安装RMS Batch, 按照 rms-120-ig-addendum.pdf 说明,在RMS12.0.3 版本以前在Linux平台是不被支持的。
            需要下载 12.0.1,12.0.2,12.0.3 三个patch 分别完成代码拷贝后再按照rms-120-ig.pdf 进行。
            建立目录/d01/app/retail/rms/12.0.1 上传p5630151_1200_GENERIC.zip 解压缩
            建立目录/d01/app/retail/rms/12.0.2 上传p5858105_1200_GENERIC.zip 解压缩
            建立目录/d01/app/retail/rms/12.0.3 上传p5916780_1200_GENERIC.zip 解压缩
            分别完成代码拷贝(batch代码和Form,report,toolset代码,其中后者是为下面的Form,report,toolset安装服务的,
            Form,report这些文件如果没有更新到12.0.3版本,虽然编译都能通过,但使用时会遇到错误:
            打开任何一个Form,都报错 CONTOF@3LABL is not a member of %s2 (%s3))。
           
            which make makedepend
            makedepend找不到,安装xorg-x11-devel可以把这个添加到系统( 安装时依赖关系比较麻烦的建议使用图形化的install pacakge进行安装,可自动查找依赖关系,并提示插入第几张安装光盘,比使用rpm -ivh要方便很多)
           
            [Set Environment Variables]:
            su oretail
            ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
            export ORACLE_HOME
            ORACLE_SID=RETL
            export ORACLE_SID
            INSTALL_DIR=/d01/app/retail/rms/db
            export INSTALL_DIR
            MMHOME=$INSTALL_DIR/rms
            export MMHOME
            MMUSER=rms12dev
            PASSWORD=rms12dev
            export MMUSER
            export PASSWORD
            LD_LIBRARY_PATH=$ORACLE_HOME/lib:$MMHOME/oracle/lib/bin:$LD_LIBRARY_PATH
            export LD_LIBRARY_PATH
            PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
            export PATH
            LIBRARY_PATH=$ORACLE_HOME/lib:$MMHOME/oracle/lib/bin:$LIBRARY_PATH
            export LIBRARY_PATH
                  
           
            [Configure Make File]:
            su root
            chown -R oretail:dev /d01/app/retail
            su oretail
            cd $INSTALL_DIR/rms/oracle/lib/src
            cp platform_linux_oel_x86_64.mk platform.mk
            ./oramake
           
            #备注:假设前面数据库10.2.0.3patchse打完后没有在postinstall步骤运行changePerm.sh,那么会报错:
            #$ORACLE_HOME/precomp/lib/env_precomp.mk 没有读权限。因为这个文件的打数据库的10.2.0.3 patchset的时候,访问被受限了。
            su oracle
            cd $ORACLE_HOME/install
            ./changePerm.sh
            大约2分钟运行完毕。
           
            #再次运行
            ./oramake  成功
           
            #[Create Batch Libraries in Database]:
             
             cd $INSTALL_DIR/db_objects 
             $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
                .. SQL> @createordlib.sql
  .. SQL> @dealinclib.sql
  .. SQL> @dealordlib.sql
  .. SQL> @scllib.sql
  3. Exit SQL*Plus  
  
      cd $INSTALL_DIR/utility
      $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
      .. SQL> @inv_obj_comp.sql
     
     # [Compile Batch Libraries ]
           
           
            cd $INSTALL_DIR/rms/oracle/lib/src

            make –f retek.mk depend 2>&1 | tee libdpnd.log(这句话需要key进去,不能copy)
            # 结果是 stddef 和 stdarg.h 未找到
        makedepend: warning:  sacode.c (reading /usr/include/libio.h, line 53): cannot find include file “stdarg.h”
        not in ./stdarg.h
        not in /d01/app/retail/rms/db/rms/oracle/lib/src/stdarg.h
        not in /d01/app/oracle/product/10.2.0/db_1/precomp/public/stdarg.h
        not in /d01/app/oracle/product/10.2.0/db_1/rdbms/public/stdarg.h
        not in /d01/app/oracle/product/10.2.0/db_1/plsql/public/stdarg.h
        not in /d01/app/oracle/product/10.2.0/db_1/sqllib/public/stdarg.h
        not in /d01/app/oracle/product/10.2.0/db_1/network/public/stdarg.h
        not in /d01/app/oracle/product/10.2.0/db_1/rdbms/demo/stdarg.h
        not in /d01/app/retail/rms/db/rms/oracle/proc/src/stdarg.h
        not in /usr/local/lib/gcc-include/stdarg.h
        not in /usr/include/stdarg.h
        not in /usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h           
           
            find / -name stddef.h
            结果:
            /usr/lib/gcc/x86_64-redhat-linux/3.4.3/include/stddef.h
     /usr/include/linux/stddef.h
     /usr/src/kernels/2.6.9-42.0.0.0.1.EL-smp-x86_64/include/linux/stddef.h
     /usr/src/kernels/2.6.9-42.0.0.0.1.EL-largesmp-x86_64/include/linux/stddef.h
     /usr/src/kernels/2.6.9-42.0.0.0.1.EL-x86_64/include/linux/stddef.h
            find /usr -name stdarg.h
            结果:
            /usr/lib/gcc/x86_64-redhat-linux/3.4.3/include/stdarg.h
            # 这两个文件在 /usr/lib/gcc/x86_64-redhat-linux/3.4.3/include 都存在,可偏偏makedepend没去这个路径查找。
            解决方法:
            make 文件指定的include 配置文件是/d01/app/oracle/product/10.2.0/db_1/precomp/admin/pcscfg.cfg
            其内容是:
            sys_include=(/build/s023/precomp/public,/usr/include,/opt/gcc33/lib64/gcc-lib/x86_64-suse-linux/3.3/include,/usr/lib/gcc-lib/
            x86_64-redhat-linux/3.2.3/include,/usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3/include)
            ltype=short
            define=__x86_64__
            没有包含/usr/lib/gcc/x86_64-redhat-linux/3.4.3/include目录,所以找不到stddef.h 和 stdarg.h
            把这个路径添加到pcscfg.cfg 中。
            vi /d01/app/oracle/product/10.2.0/db_1/precomp/admin/pcscfg.cfg
            添加/usr/lib/gcc/x86_64-redhat-linux/3.4.3/include
           
            执行make
            make -f retek.mk -r retek rms resa 2>&1 | tee libretek.log
            结果:
            dealordlib.pc 有问题 执行sql sl_deal_ct 出问题了。
  Error at line 1965, column 4 in file dealordlib.pc
     EXEC SQL FOR :sl_deal_ct
  …1
  PLS-S-00201, identifier ‘ORDER_DEAL_BUILD’ must be declared
  Error at line 1965, column 4 in file dealordlib.pc
     EXEC SQL FOR :sl_deal_ct   
    
            查看代码发现是:
  EXEC SQL FOR :sl_deal_ct
        INSERT INTO order_deal_build
                    (deal_id,
                     deal_detail_id)
              VALUES(:oa_deal->deal_id,
                     :oa_deal->deal_detail_id);
            表 order_deal_build 不存在。 难道是这张表在12.0.1-12.0.3 的patch中,而我没有打?
            解决方法:把12.0.1-12.0.3 的db patch全部打上()。
           
            su oracle
            ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
            export ORACLE_HOME
            ORACLE_SID=RETL
            export ORACLE_SID
           
            ================= db patch for 12.0.1==========================================
            STAGING_AREA=/d01/app/retail/rms/12.0.1/dbserverunix
            export STAGING_AREA
            cd $STAGING_AREA/rib/db_objects
            echo @patch1201rib.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
                      
            cd $STAGING_AREA/pricing/types
            echo @pricing1201types.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
                       
            cd $STAGING_AREA/pricing/dbcs                   
            echo @pricing1201dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL           

            cd $STAGING_AREA/pricing/db_objects                   
            echo @pricing1201rms.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/pricing/data
            echo @pricing1201ctl.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/types
            echo @patch1201types.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL(这里 install guilder是错误的  sql文件名错误)
           
            cd $STAGING_AREA/dbcs
            echo @patch1201dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/db_objects
            echo @patch1201rms.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/utility
            echo @inv_obj_comp.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/data
            echo @patch1201ctl.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/data/form_menu_elements (这里 instal guilder 的目录名错误)
            echo @patch1201forms.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/data/lang
            echo @patch1201ctl_zhs_sec.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            =================== db patch for 12.0.2=================================
            STAGING_AREA=/d01/app/retail/rms/12.0.2/dbserverunix
            export STAGING_AREA
           
            cd $STAGING_AREA/pricing/types
            echo @pricing1202types.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL (这里 instal guilder 的文件名错误)
           
            cd $STAGING_AREA/pricing/dbcs 
            echo @pricing1202dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/pricing/db_objects
            echo @pricing1202rms.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/pricing/data
            echo @pricing1202ctl.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/dbcs
            echo @patch1202dbcs.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/db_objects
            echo @patch1202rms.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/utility
            echo @inv_obj_comp.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/data
            echo @patch1202ctl.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/data/lang
            echo @patch1202ctl_zhs_sec.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            =================== db patch for 12.0.3=================================
            STAGING_AREA=/d01/app/retail/rms/12.0.3/dbserverunix
            export STAGING_AREA   
           
            cd $STAGING_AREA/pricing/types
            echo @pricing1203types.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL(这里 install guilder 的文件名错误)
           
            cd $STAGING_AREA/pricing/dbcs
            echo @pricing1203dbcs.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/pricing/db_objects
            echo @pricing1203rms.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/pricing/data
            echo @pricing1203ctl.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/dbcs
            echo @patch1203dbcs.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            #ERROR at line 1:
            #ORA-02443: Cannot drop constraint  – nonexistent constraint
            #代码执行中断了,patch1203dbcs.sql执行不完整。
            #分析,s5523696.sql的唯一动作就是删除一个constraint,既然这个constraint不存在,那么不需要这个sql;
            #从patch1203dbcs.sql 中去掉对s5523696.sql的调用,然后再执行
           
            #’Starting File: s5718867.sql’
     #Dropping Constraints
     #ALTER TABLE SYSTEM_OPTIONS DROP CONSTRAINT CHK_SOP_AIP_IND
     #                                           *
     #ERROR at line 1:
     #ORA-02443: Cannot drop constraint  – nonexistent constraint
     #发现是权限问题,实际上这些约束是存在的,只是没有权限,所以无法删除,这显然是不对的
     #因为rms12dev是这个schema的所有者,
     #注释掉这句话 把drop 跟sop有关的constraint的语句全部去掉。再执行
    
     #ERROR at line 418:
            #ORA-00904: “TSF_AUTO_CLOSE_WH”: invalid identifier
            #这个错误是因为脚本试图SELECT TSF_AUTO_CLOSE_WH FROM dbc_system_options 但不存在
            #解决方法在select 中给个’N’
            #脚本无法重复运行,从这里开始手工运行。。。
            #更改patch1203dbcs.sql 注释掉已经完成的部分。再运行
           
           
    

           
            cd $STAGING_AREA/db_objects
            echo @patch1203rms.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/utility
            echo @inv_obj_comp.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/data
            echo @patch1203ctl.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/data/lang/ZHS
            echo @patch1203ctl_zhs_sec.sql  | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL (Install guilder 在这里文件名和路径均错误)  
           
            ====
            上述patch版本的db patch打完后,表 ORDER_DEAL_BUILD 就有了.   
                  
            执行make
            su oretail
            cd $INSTALL_DIR/rms/oracle/lib/src
            make -f retek.mk -r retek rms resa 2>&1 | tee libretek.log           
            新的错误:
               precompiling dealordlib.pc
               proc: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file or directory           
[root@syfr12 include]# find / -name libclntsh.so.10.1
/d01/app/oracleas/OraHome_1/lib/libclntsh.so.10.1
/d01/app/oracle/product/10.2.0/db_1/lib32/libclntsh.so.10.1
/d01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
/d01/bak/oracleas/OraHome_1/lib/libclntsh.so.10.1
/d01/bak/app/oracle/product/10.2.0/db_1/lib32/libclntsh.so.10.1
/d01/bak/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
            看来, LD_LIBRARY_PATH 没起作用. LD_LIBRARY_PATH=$ORACLE_HOME/lib:$MMHOME/oracle/lib/bin:$LD_LIBRARY_PATH          
            env | grep LD
            居然没有,重新设置:
            LD_LIBRARY_PATH=$ORACLE_HOME/lib:$MMHOME/oracle/lib/bin:$LD_LIBRARY_PATH
            export LD_LIBRARY_PATH
            再尝试Make
            cd $INSTALL_DIR/rms/oracle/lib/src
            make -f retek.mk -r retek rms resa 2>&1 | tee libretek.log
           
            还有makedend 警告,这次是 sacode.c 找不到stddef.h
            找错地方了: /usr/lib/gcc/i386-redhat-linux/3.4.6/include/
            它为什么不找 /usr/lib/gcc/x86_64-redhat-linux/3.4.3/include 目录呢?
[oretail@syfr12 src]$ which gcc
/usr/bin/gcc
[oretail@syfr12 src]$ gcc -v
Reading specs from /usr/lib/gcc/x86_64-redhat-linux/3.4.6/specs
Configured with: ../configure –prefix=/usr –mandir=/usr/share/man –infodir=/usr/share/info –enable-shared –enable-threads=posix –disable-checking –with-system-zlib –enable-__cxa_atexit –disable-libunwind-exceptions –enable-java-awt=gtk –host=x86_64-redhat-linux
Thread model: posix
gcc version 3.4.6 20060404 (Red Hat 3.4.6-3.1)
            可见gcc的配置是指向/usr/lib/gcc/x86_64-redhat-linux的 , makedepned的警告可以不处理.
           
            但是编译satrat.c的时候有错误.
             satrat.c:12: error: `TRAT_OPEN’ undeclared here (not in a function)
代码中如下一段在编译有错误
static TOKENMAP pa_tokentable[] = {
   { TRAT_OPEN,   TRATTT_OPEN   },
   { TRAT_NOSALE, TRATTT_NOSALE },
   { TRAT_VOID,   TRATTT_VOID   },
   { TRAT_PVOID,  TRATTT_PVOID  },
   { TRAT_SALE,   TRATTT_SALE   },
   { TRAT_RETURN, TRATTT_RETURN },
   { TRAT_PAIDIN, TRATTT_PAIDIN },
   { TRAT_PAIDOU, TRATTT_PAIDOU },
   { TRAT_PULL,   TRATTT_PULL   },
   { TRAT_LOAN,   TRATTT_LOAN   },
   { TRAT_COND,   TRATTT_COND   },
   { TRAT_CLOSE,  TRATTT_CLOSE  },
   { TRAT_REFUND, TRATTT_REFUND },
   { TRAT_TOTAL,  TRATTT_TOTAL  },
   { TRAT_ERR,    TRATTT_ERR    },
   { TRAT_TERM,   TRATTT_TERM   },
   { TRAT_METER,  TRATTT_METER  },
   { TRAT_PUMPT,  TRATTT_PUMPT  },
   { TRAT_TANKDP, TRATTT_TANKDP },
   { TRAT_DCLOSE, TRATTT_DCLOSE },
   { NULL,        0 }
};
   这些常量没有声明
  
   grep ‘TRAT_TERM’ /d01/app/retail -r
   在整个retail目录下也没找到这个字符串. google ,metalink 搜索均无结果.
[root@syfr12 include]# grep ‘TRAT_TERM’ /d01/app/retail -r
/d01/app/retail/rms/db/rms/oracle/lib/src/libretek.log:satrat.c:27: error: `TRAT_TERM’ undeclared here (not in a function)
/d01/app/retail/rms/db/rms/oracle/lib/src/satrat.c:   { TRAT_TERM,   TRATTT_TERM   },
/d01/app/retail/rms/db/rms/oracle/proc/src/saimptlog_sqlldr.c:   CPYSTRFXL( thead.tran_type, TRAT_TERM, FT_VARCHAR);
/d01/app/retail/rms/db/rms/oracle/proc/src/saimptlog_insert.pc:   CPYSTRFXL( thead.tran_type, TRAT_TERM, FT_VARCHAR);
/d01/app/retail/rms/db/rms/oracle/proc/src/saimptlogfin.pc:         AND th.tran_type           = :TRAT_TERM
/d01/app/retail/rms/db/rms/oracle/proc/src/saimptlogfin.pc:            AND th.tran_type NOT IN (:TRAT_TERM, :TRAT_DCLOSE, :TRAT_TOTAL, :TRAT_ERR)
/d01/app/retail/rms/db/rms/oracle/proc/src/saimptlogfin.pc:            AND th.tran_type NOT IN (:TRAT_TERM, :TRAT_DCLOSE, :TRAT_TOTAL, :TRAT_ERR)
  
   经过分析上述文件均include salib.h
   只需要在salib.h中定义即可.
  
   TRAT_OPEN 应给是字符串常量,TRATTT_OPEN 应该是整数
/* added by yunfang.shang for pass compile satrat.c */  
#define TRAT_OPEN            “TRAT_OPEN”
#define TRAT_NOSALE          “TRAT_NOSALE”
#define TRAT_VOID            “TRAT_VOID”
#define TRAT_PVOID           “TRAT_PVOID”
#define TRAT_SALE            “TRAT_SALE”
#define TRAT_RETURN          “TRAT_RETURN”
#define TRAT_PAIDIN          “TRAT_PAIDIN”
#define TRAT_PAIDOU          “TRAT_PAIDOU”
#define TRAT_PULL            “TRAT_PULL”
#define TRAT_LOAN            “TRAT_LOAN”
#define TRAT_COND            “TRAT_COND”
#define TRAT_CLOSE           “TRAT_CLOSE”
#define TRAT_REFUND          “TRAT_REFUND”
#define TRAT_TOTAL           “TRAT_TOTAL”
#define TRAT_ERR             “TRAT_ERR”
#define TRAT_TERM            “TRAT_TERM”
#define TRAT_METER           “TRAT_METER”
#define TRAT_PUMPT           “TRAT_PUMPT”
#define TRAT_TANKDP          “TRAT_TANKDP”
#define TRAT_DCLOSE          “TRAT_DCLOSE”

#define TRATTT_OPEN          1
#define TRATTT_NOSALE        2
#define TRATTT_VOID          3
#define TRATTT_PVOID         4
#define TRATTT_SALE          5
#define TRATTT_RETURN        6
#define TRATTT_PAIDIN        7
#define TRATTT_PAIDOU        8
#define TRATTT_PULL          9
#define TRATTT_LOAN          10
#define TRATTT_COND          11
#define TRATTT_CLOSE         12
#define TRATTT_REFUND        13
#define TRATTT_TOTAL         14
#define TRATTT_ERR           15
#define TRATTT_TERM          16
#define TRATTT_METER         17                       
#define TRATTT_PUMPT         18         
#define TRATTT_TANKDP        19 
#define TRATTT_DCLOSE        20
cd $INSTALL_DIR/rms/oracle/lib/src
vi salib.h

            再次执行make
            su oretail
            cd $INSTALL_DIR/rms/oracle/lib/src
            make -f retek.mk -r retek rms resa 2>&1 | tee libretek.log
           
            satrat.c 编译通过
            出现新的错误:语义误差:
Semantic error at line 166, column 95, file sacrstdy.pc:
      SELECT sd.store_day_seq_no, sd.store, sd.day, std.system_code, NVL(MAX(el.
seq_no), 1), :SAES_R, NULL
……………………………………………………………………..
…………..1
PCC-S-02322, found undefined identifier
Semantic error at line 174, column 29, file sacrstdy.pc:
      AND    std.imp_exp = :IMEX_E
……………………….1
PCC-S-02322, found undefined identifier
Semantic error at line 210, column 71, file sacrstdy.pc:
      SELECT sd.store_day_seq_no, sd.store, sd.day, std.system_code, :SAIS_R, NU
LL
     
      分析:可能是proc程序中用到的常量未定义:IMEX_E,SAIS_R
[root@syfr12 include]# grep ‘IMEX_E’ /d01/app/retail -r
/d01/app/retail/rms/db/rms/oracle/lib/src/sacrstdy.lis:   174        AND    std.imp_exp = :IMEX_E
/d01/app/retail/rms/db/rms/oracle/lib/src/sacrstdy.pc:      AND    std.imp_exp = :IMEX_E
/d01/app/retail/rms/db/rms/oracle/lib/src/libretek.log:      AND    std.imp_exp = :IMEX_E
[root@syfr12 include]#
      未找到定义; 从其用途来看,这些常量应该是Retail自己定义,不是调用Oracle数据库里面的.h文件中的内容。
      既然整个retail目录都找不到定义,那么只有自己定义了。根据猜测 这些常量的定义如下:
      IMEX_E 对应的数据库字段是VARCHAR2(6) , SAIS_R,SACD_S对应的数据库字段是VARCHAR2(1)
      由于proc 不支持 #define宏定义,需要分配内存空间的常量。
      备注:写成extern 的定义形式是因为多个c或者pc文件include salib.h ;要避免在ld的时候多重定义错误。
/* added by yunfang.shang for pass compile sacrstdy.pc */ 
extern char *IMEX_E;
extern char *IMEX_I;
extern char *SAIS_R;
extern char *SACD_S;
extern char *SACD_R;
extern char *SACD_A;
extern char *SAES_R;
extern char *SASS_W;
extern char *SASS_C;
extern char *SAST_P;
extern char *SAAS_H;
extern char *SAAS_A;
extern char *SAAS_S;
extern char *SAAS_U;
extern char *SADS_R;
extern char *SADS_F;
extern char *YSNO_N;
extern char *YSNO_Y;
extern char *SAFD_P;
extern char *SAFD_N;
extern char *SALT_W;
extern char *SALT_R;
extern char *SAES_E;
extern char *SAST_D;
extern char *SAST_V;
extern char *SPCTY_R;
extern char *SPCTY_C;
extern char *SPCTY_P;
extern char *PCTY_R;
extern char *PCTY_C;
extern char *PCTY_P;
extern char *SAAS_R;
extern char *SAVS_I;
extern char *SAVS_E;
extern char *SAVS_N;
extern char *SYSE_ACH;
extern char *SYSI_POS;
SIGN_P
添加一个c文件 :salib.c     
const char *IMEX_E=”E”;
const char *IMEX_I=”I”;
const char *SAIS_R=”R”;
const char *SACD_S=”S”;
const char *SACD_R=”R”;
const char *SACD_A=”A”;
const char *SAES_R=”R”;
const char *SASS_W=”W”;
const char *SASS_C=”C”;
const char *SAST_P=”P”;
const char *SAAS_H=”H”;
const char *SAAS_A=”A”;
const char *SAAS_S=”S”;
const char *SAAS_U=”U”;
const char *SADS_R=”R”;
const char *SADS_F=”F”;
const char *YSNO_N=”N”;
const char *YSNO_Y=”Y”;
const char *SAFD_P=”P”;
const char *SAFD_N=”N”;
const char *SALT_W=”W”;
const char *SALT_R=”R”;
const char *SAES_E=”E”;
const char *SAST_D=”D”;
const char *SAST_V=”V”;
const char *SPCTY_R=”R”;
const char *SPCTY_C=”C”;
const char *SPCTY_P=”P”;
const char *PCTY_R=”R”;
const char *PCTY_C=”C”;
const char *PCTY_P=”P”;
const char *SAAS_R=”R”;
const char *SAVS_I=”I”;
const char *SAVS_E=”E”;
const char *SAVS_N=”N”;
const char *SYSE_ACH=”A”;
const char *SYSI_POS=”P”;
SIGN_P
void main()
{
int i;
i=0;
}

 

       将这些定义添加到salib.h
       vi salib.h  添加到文件尾。
            再次执行make
            su oretail
            cd $INSTALL_DIR/rms/oracle/lib/src
            make -f retek.mk -r retek rms resa 2>&1 | tee libretek.log
            一直做make , 直到把所有需要定义的产量都找出来(大概Make了10次) 终于完成make ;
           
       #[To install batch libraries]
       make –f retek.mk install  
      
       #[Compile Batch Source Code]
       cd $INSTALL_DIR/rms/oracle/proc/src
       make -f mts.mk rms-depend recs-depend rtm-depend resa-depend 2>&1 | tee srcdpnd.log (key 进去)
       会有警告 stddef.h 找不到,不用管它,是makedepend 本身的搜索路径有问题,gcc没有问题。
       make -f rms.mk PRODUCT_PROCFLAGS=dynamic=ansi ditinsrt(key 进去)
       make -f mts.mk rms-ALL recs-ALL resa-ALL rtm-ALL 2>&1 | tee srcall.log(key 进去)         
错误:
precompiling storeadd.pc
Pro*C/C++: Release 10.2.0.3.0 – Production on Sun Sep 14 03:19:16 2008
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
System default option values taken from: /d01/app/oracle/product/10.2.0/db_1/precomp/admin/pcscfg.cfg
Error at line 153, column 7 in file storeadd.pc
      SELECT s.elc_ind,
……1
PLS-S-00414, no column ‘RPM_RIB_IND’ in table
Error at line 153, column 7 in file storeadd.pc
      SELECT s.elc_ind,
     
      system_options 表没有RPM_RIB_IND字段。
      grep ‘RPM_RIB_IND’ /d01/app/retail -r
      找到添加该字段的脚本:
      /d01/app/retail/rms/12.0.3/dbserverunix/dbcs/s5718867.sql:–    COLUMNS ADDED:                          RPM_RIB_IND
      运行/d01/app/retail/rms/12.0.3/dbserverunix/dbcs/patch1203dbcs.sql 可以更改此表。
      按理说这一步在打12.0.3的dbpatch的时候已经执行了。为什么还没有效果呢?     
      把12.0.3的dbpatch再执行一边。 刚才的错误就没有了。不过又出现一些常量未定义,比如: SAVS_I ,处理方法跟以前一样。
      google SYSE_ACH 得到一个结果,在RMS 11版本的 操作指南中有提到这个东西。但是在R12的ug he pg中均未提到。
      无法猜测SYSE_ACH应该是个什么值,但如果是遗留的无用代码,仅仅影响编译的话给个”A”就可以了。
      如果出现多重定义错误,则是因为前面没有使用extern定义变量的方式,重新编译lib 和proc
      rm /d01/app/retail/rms/db/rms/oracle/lib/src/*.o
      rm /d01/app/retail/rms/db/rms/oracle/lib/bin/*.*
      rm /d01/app/retail/rms/db/rms/oracle/proc/bin/*.*
      rm /d01/app/retail/rms/db/rms/oracle/proc/src/*.o
     
      重新进行:
            su oretail
            cd $INSTALL_DIR/rms/oracle/lib/src
            make -f retek.mk -r retek rms resa 2>&1 | tee libretek.log
            make –f retek.mk install 
            成功
            cd $INSTALL_DIR/rms/oracle/proc/src
            make -f mts.mk rms-depend recs-depend rtm-depend resa-depend 2>&1 | tee srcdpnd.log
            make -f rms.mk PRODUCT_PROCFLAGS=dynamic=ansi ditinsrt        
            make -f mts.mk rms-ALL recs-ALL resa-ALL rtm-ALL 2>&1 | tee srcall.log
            提示有如下错误:
saescheat.o(.text+0x353): In function `IsCompanyStateEscheat’:
: undefined reference to `YSNO_Y’
saescheat.o(.text+0x200b): In function `AdjustVoucher’:
: undefined reference to `SAVS_N’
            分析: .o文件已经生成,说明编译已经通过。估计是要找外部定义的时候没找到
            解决方法:
            尝试把 salib.c 编译成salib.o 再ar成库文件(静态库),然后出错的的那个条gcc命令中添加-lsalib 单独执行这条命令。
           
            rm $INSTALL_DIR/rms/oracle/lib/src/salib.o
            rm $INSTALL_DIR/rms/oracle/lib/src/libsalib.a
            rm $INSTALL_DIR/rms/oracle/lib/bin/libsalib.a           
            cd $INSTALL_DIR/rms/oracle/lib/src
            gcc -c salib.c
            ar -r libsalib.a salib.o                    
            cp libsalib.a $INSTALL_DIR/rms/oracle/lib/bin             
            cd $INSTALL_DIR/rms/oracle/proc/src
            gcc -o `basename saescheat` `echo saescheat.o saescheat_nextesn.o | xargs -n1 basename` -L. -L/d01/app/retail/rms/db/rms/oracle/lib/bin -lresa -lsalib -L/d01/app/retail/rms/db/rms/oracle/lib/bin  -lretek -L/d01/app/oracle/product/10.2.0/db_1/lib/ -lclntsh `cat /d01/app/oracle/product/10.2.0/db_1/lib/ldflags`   `cat /d01/app/oracle/product/10.2.0/db_1/lib/sysliblist` -ldl -lm    -O3    -fPIC -DPRECOMP -I/d01/app/oracle/product/10.2.0/db_1/precomp/hdrs  -I/d01/app/oracle/product/10.2.0/db_1/precomp/public -I/d01/app/oracle/product/10.2.0/db_1/precomp/include   -I/d01/app/oracle/product/10.2.0/db_1/oracore/include -I/d01/app/oracle/product/10.2.0/db_1/oracore/public -I/d01/app/oracle/product/10.2.0/db_1/oracore/port/include -I/d01/app/oracle/product/10.2.0/db_1/xdk/include -I/d01/app/oracle/product/10.2.0/db_1/xdk/public -I/d01/app/oracle/product/10.2.0/db_1/nlsrtl/include   -I/d01/app/oracle/product/10.2.0/db_1/slax/include   -I.  -DLINUX -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -DSLTS_ENABLE -DSLMXMX_ENABLE -D_REENTRANT -DNS_THREADS -fno-strict-aliasing
            通过
            make -f mts.mk rms-ALL recs-ALL resa-ALL rtm-ALL 2>&1 | tee srcall.log
            报另一个错误:
precompiling sagetref.pc
proc: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file or directory
make[1]: *** [sagetref.o] Error 127

[root@syfr12 ld.so.conf.d]# find /d01/app/oracle -name libclntsh.so.10.1
/d01/app/oracle/product/10.2.0/db_1/lib32/libclntsh.so.10.1
/d01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
[root@syfr12 ld.so.conf.d]# 
[root@syfr12 ld.so.conf.d]#  env | grep LD
没设置,晕 ,设置一下
            LD_LIBRARY_PATH=$ORACLE_HOME/lib:$MMHOME/oracle/lib/bin:$LD_LIBRARY_PATH
            export LD_LIBRARY_PATH
            #再Make
            make -f mts.mk rms-ALL recs-ALL resa-ALL rtm-ALL 2>&1 | tee srcall.log
            #出现错误,又是常量没定义。把这些常量补上
            :SYSI_POS(在上文统一添加的地方添加)
            接下来出现的一些错误都是一些跟上面类似的错误,用类似的方法解决。
            gcc -o `basename saescheat` `echo saescheat.o saescheat_nextesn.o | xargs -n1 basename` -L. -L/d01/app/retail/rms/db/rms/oracle/lib/bin -lresa -lsalib -L/d01/app/retail/rms/db/rms/oracle/lib/bin -lretek -L/d01/app/oracle/product/10.2.0/db_1/lib/ -lclntsh `cat /d01/app/oracle/product/10.2.0/db_1/lib/ldflags`   `cat /d01/app/oracle/product/10.2.0/db_1/lib/sysliblist` -ldl -lm    -O3    -fPIC -DPRECOMP -I/d01/app/oracle/product/10.2.0/db_1/precomp/hdrs  -I/d01/app/oracle/product/10.2.0/db_1/precomp/public -I/d01/app/oracle/product/10.2.0/db_1/precomp/include   -I/d01/app/oracle/product/10.2.0/db_1/oracore/include -I/d01/app/oracle/product/10.2.0/db_1/oracore/public -I/d01/app/oracle/product/10.2.0/db_1/oracore/port/include -I/d01/app/oracle/product/10.2.0/db_1/xdk/include -I/d01/app/oracle/product/10.2.0/db_1/xdk/public -I/d01/app/oracle/product/10.2.0/db_1/nlsrtl/include   -I/d01/app/oracle/product/10.2.0/db_1/slax/include   -I. -DLINUX -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -DSLTS_ENABLE -DSLMXMX_ENABLE -D_REENTRANT -DNS_THREADS -fno-strict-aliasing
            #再Make
            make -f mts.mk rms-ALL recs-ALL resa-ALL rtm-ALL 2>&1 | tee srcall.log           
            出错
            gcc -o `basename sagetref` `echo sagetref.o | xargs -n1 basename` -L. -L/d01/app/retail/rms/db/rms/oracle/lib/bin -lresa -lsalib -L/d01/app/retail/rms/db/rms/oracle/lib/bin -lretek -L/d01/app/oracle/product/10.2.0/db_1/lib/ -lclntsh `cat /d01/app/oracle/product/10.2.0/db_1/lib/ldflags`   `cat /d01/app/oracle/product/10.2.0/db_1/lib/sysliblist` -ldl -lm    -O3    -fPIC -DPRECOMP -I/d01/app/oracle/product/10.2.0/db_1/precomp/hdrs  -I/d01/app/oracle/product/10.2.0/db_1/precomp/public -I/d01/app/oracle/product/10.2.0/db_1/precomp/include   -I/d01/app/oracle/product/10.2.0/db_1/oracore/include -I/d01/app/oracle/product/10.2.0/db_1/oracore/public -I/d01/app/oracle/product/10.2.0/db_1/oracore/port/include -I/d01/app/oracle/product/10.2.0/db_1/xdk/include -I/d01/app/oracle/product/10.2.0/db_1/xdk/public -I/d01/app/oracle/product/10.2.0/db_1/nlsrtl/include   -I/d01/app/oracle/product/10.2.0/db_1/slax/include   -I. -DLINUX -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -DSLTS_ENABLE -DSLMXMX_ENABLE -D_REENTRANT -DNS_THREADS -fno-strict-aliasing
            依然提示 SYSI_POS 未定义。研究发现sagetref.c 也是由sagetref.pc生成的。
            这种情况下在连接的时候即使给他指定正确的定义库文件依然无用,不知道是为什么。但YSNO_Y也是在pc中却没有这个问题。
            无奈之下,直接把SYSI_POS定义从salib.h中去掉,直接加到sagetref.pc ,然后make通过。
            接下来还会发现一些需要处理的未定义变量和文件关系:
            saimpadj.pc SIGN_P
            saimptlog_ccval.c CCVT_MOD10
            我突然产生一个疑问,这么多常量定义未找到,真的是oracle Retail安装包制作的问题?还是我自己的问题?
            在/d01/app/retail下grep 找不到还有一种可能是:因为我的这个目录已经更新过。rms12.0.0版本的文件已经被替换。可能这些常量定义在12.0.0
            所以就 grep ‘CCVT_MOD10’ /d01/rms_stage -r
            结果找到了 在sacodes.h中有定义,而sacodes.h是被salib.h include 进来的。
[root@syfr12 lib]# grep ‘SAES_E’ /d01/rms_stage -r
/d01/rms_stage/rms12dbserver/rms/oracle/lib/src/sacodes.h:extern const char SAES_E     [NULL_CODE];   /* Exported */
/d01/rms_stage/rms12dbserver/rms/oracle/lib/src/samrkstdyexp.pc:               SET status = :SAES_E,
/d01/rms_stage/rms12dbserver/rms/oracle/lib/src/sacodes.c:const char SAES_E     [NULL_CODE] = “E”;   /* Exported */
/d01/rms_stage/rms12dbserver/rms/oracle/proc/src/saprepost.pc:         AND el.status = :SAES_E
/d01/rms_stage/rms12dbserver/rms/oracle/proc/src/saexpach.pc:         SET status   = :SAES_E,

            在看/d01/app/retail/rms/db/rms/oracle/lib/src/sacodes.h 文件很小;确实了很多常量定义。
            怎么会这样?我又没有更改过这个文件。看来batch目录下的文件组织有问题。
            重新组织:
rm -f /d01/app/retail/rms/db/rms/oracle/lib/src/*
rm -f /d01/app/retail/rms/db/rms/oracle/lib/bin/*
rm -f /d01/app/retail/rms/db/rms/oracle/proc/src/*
rm -f /d01/app/retail/rms/db/rms/oracle/proc/bin/*
           
           
cp -f /d01/rms_stage/rms12dbserver/rms/oracle/lib/src/*  /d01/app/retail/rms/db/rms/oracle/lib/src/
cp -f /d01/rms_stage/rms12dbserver/rms/oracle/proc/src/*  /d01/app/retail/rms/db/rms/oracle/proc/src/
cp -f /d01/app/retail/rms/12.0.1/dbserverunix/batch/lib/src/*  /d01/app/retail/rms/db/rms/oracle/lib/src/
cp -f /d01/app/retail/rms/12.0.2/dbserverunix/batch/lib/src/*  /d01/app/retail/rms/db/rms/oracle/lib/src/
cp -f /d01/app/retail/rms/12.0.3/dbserverunix/batch/lib/src/*  /d01/app/retail/rms/db/rms/oracle/lib/src/          
cp -f /d01/app/retail/rms/12.0.1/dbserverunix/batch/proc/src/*  /d01/app/retail/rms/db/rms/oracle/proc/src/
cp -f /d01/app/retail/rms/12.0.2/dbserverunix/batch/proc/src/*  /d01/app/retail/rms/db/rms/oracle/proc/src/
cp -f /d01/app/retail/rms/12.0.3/dbserverunix/batch/proc/src/*  /d01/app/retail/rms/db/rms/oracle/proc/src/ 

           再按照正常的步骤编译和安装batch
                   
            # [Set Environment Variables]:
            su oretail
            ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
            export ORACLE_HOME
            ORACLE_SID=RETL
            export ORACLE_SID
            INSTALL_DIR=/d01/app/retail/rms/db
            export INSTALL_DIR
            MMHOME=$INSTALL_DIR/rms
            export MMHOME
            MMUSER=rms12dev
            PASSWORD=rms12dev
            export MMUSER
            export PASSWORD
            LD_LIBRARY_PATH=$ORACLE_HOME/lib:$MMHOME/oracle/lib/bin:$LD_LIBRARY_PATH
            export LD_LIBRARY_PATH
            PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
            export PATH
            LIBRARY_PATH=$ORACLE_HOME/lib:$MMHOME/oracle/lib/bin:$LIBRARY_PATH
            export LIBRARY_PATH
           
            # [Configure Make File]:
            cd $INSTALL_DIR/rms/oracle/lib/src
            cp platform_linux_oel_x86_64.mk platform.mk
            ./oramake
           
     # [Compile Batch Libraries ]
            cd $INSTALL_DIR/rms/oracle/lib/src
            make -f retek.mk depend 2>&1 | tee libdpnd.log(这句话需要key进去,不能copy 忽略警告)
            cd $INSTALL_DIR/rms/oracle/lib/src
            make -f retek.mk -r retek rms resa 2>&1 | tee libretek.log
            #又出错了,           
            #satrat.c:12: error: `TRAT_OPEN’ undeclared here (not in a function)
            #satrat.c:12: error: initializer element is not constant 
            #不过这次总算明白了,在make的过程中,make过程自己把sacodes.h 和sacodes.c 改掉了,
            #从2个500多k的文件改成了两个2k的文件,真是搞笑。很多常量定义都消失了。
            #把这两个文件再copy回来
            cp -f /d01/rms_stage/rms12dbserver/rms/oracle/lib/src/sacodes.h  /d01/app/retail/rms/db/rms/oracle/lib/src/
            cp -f /d01/rms_stage/rms12dbserver/rms/oracle/lib/src/sacodes.c  /d01/app/retail/rms/db/rms/oracle/lib/src/
            #再make
            make -f retek.mk -r retek rms resa 2>&1 | tee libretek.log
            #可惜,这该死的make 每次都会先把这两个文件给改掉。而且你禁止写权限,不让它改,make就终止,所以使用make成了一个死结。
            #解决办法:
            cp -f /d01/rms_stage/rms12dbserver/rms/oracle/lib/src/sacodes.h  /d01/app/retail/rms/db/rms/oracle/lib/src/sacodes2.h
            cp -f /d01/rms_stage/rms12dbserver/rms/oracle/lib/src/sacodes.c  /d01/app/retail/rms/db/rms/oracle/lib/src/sacodes2.c
            #在salib.h 把sacodes2.h include进来。
            #更改sacodes2.h 在开头部分更改成:
            #ifdef  _CODE_TYPES2_H
            #define _CODE_TYPES2_H
            #再次make 顺利通过
           
            #[To install batch libraries]
            make –f retek.mk install
             
            #[Compile Batch Source Code]
            cd $INSTALL_DIR/rms/oracle/proc/src
            make -f mts.mk rms-depend recs-depend rtm-depend resa-depend 2>&1 | tee srcdpnd.log (key 进去)
            #会有警告 stddef.h 找不到,不用管它,是makedepend 本身的搜索路径有问题,gcc没有问题。
            make -f rms.mk PRODUCT_PROCFLAGS=dynamic=ansi ditinsrt(key 进去)
     #会有错误,找不到库文件,因为gcc命令行只是包含了libresa.a 和libretek.a 两个库。
    
     #saescheat.o(.text+0x353): In function `IsCompanyStateEscheat’:
     #: undefined reference to `YSNO_Y’
     #saescheat.o(.text+0x200b): In function `AdjustVoucher’:
     #: undefined reference to `SAVS_N’
     #我们尝试需要把sacodes2.c 编译后追加到其中的一个库文件          
            cd $INSTALL_DIR/rms/oracle/lib/src/
            gcc -c sacodes2.c                               
            cp sacodes2.o $INSTALL_DIR/rms/oracle/lib/bin/   
            cd $INSTALL_DIR/rms/oracle/lib/bin/
            cp libresa.a libresa_bak.a
            ar -r libresa.a  sacodes2.o         
            cd $INSTALL_DIR/rms/oracle/proc/src/
            make -f mts.mk rms-ALL recs-ALL resa-ALL rtm-ALL 2>&1 | tee srcall.log(key 进去)
            #新的情况
saimptlog_rounding.pc: In function `get_rounding_rule’:
saimptlog_rounding.pc:242: error: `SART_THTEND’ undeclared (first use in this function)
saimptlog_rounding.pc:242: error: (Each undeclared identifier is reported only once
saimptlog_rounding.pc:242: error: for each function it appears in.)
saimptlog_rounding.pc:314: error: `SART_THTTSA’ undeclared (first use in this function)
make[1]: *** [saimptlog_rounding.o] Error 1
make[1]: Leaving directory `/d01/app/retail/rms/db/rms/oracle/proc/src’
            #分析
[root@syfr12 kk]# grep  ‘SART_THTEND’ /d01/app/retail -r
grep  ‘SART_THTEND’ /d01/app/retail -r
/d01/app/retail/rms/db/rms/oracle/proc/src/saimptlog_rounding.c:      WrBadTranError( INVLD_TENDER_ENDING, TranSeqNo, -1, -1, SART_THTEND, “”, 0);
/d01/app/retail/rms/db/rms/oracle/proc/src/srcall.log:saimptlog_rounding.pc:242: error: `SART_THTEND’ undeclared (first use in this function)
/d01/app/retail/rms/db/rms/oracle/proc/src/saimptlog_rounding.pc:      WrBadTranError( INVLD_TENDER_ENDING, TranSeqNo, -1, -1, SART_THTEND, “”, 0);
[root@syfr12 kk]# grep ‘SART_THTEND’ /d01/rms_stage -r
/d01/rms_stage/rms12dbserver/rms/oracle/proc/src/saimptlog_rounding.pc:      WrBadTranError( INVLD_TENDER_ENDING, TranSeqNo, -1, -1, SART_THTEND, “”, 0);
[root@syfr12 kk]#
             #这回可真找不到定义了。得,把源代码改一下,把变量申明给加上,先过去再说。
             #在saimptlog_rounding.pc中添加
             #const char *SART_THTEND=”E”;
             #const char *SART_THTTSA=”S”;
             #再make
             #make -f mts.mk rms-ALL recs-ALL resa-ALL rtm-ALL 2>&1 | tee srcall.log
             #新情况:saimptlogfin.pc 找不到定义 SYSI_MLA
[root@syfr12 kk]# grep ‘SYSI_MLA’ /d01/app/retail -r
/d01/app/retail/rms/db/rms/oracle/proc/src/srcall.log:         AND system_code = : SYSI_MLA;
/d01/app/retail/rms/db/rms/oracle/proc/src/srcall.log:         AND system_code = : SYSI_MLA;
/d01/app/retail/rms/db/rms/oracle/proc/src/saimptlogfin.pc:         AND system_code = : SYSI_MLA;
/d01/app/retail/rms/db/rms/oracle/proc/src/saimptlogfin.lis:  1178           AND system_code = : SYSI_MLA;
/d01/app/retail/rms/db/rms/oracle/proc/src/saimptlogfin.lis:  1178           AND system_code = : SYSI_MLA;
             #只能在  saimptlogfin.pc 中添加
             #saimptlogfin.pc中添加
             #const char *SYSI_MLA=”M”;
             #再make
             #make -f mts.mk rms-ALL recs-ALL resa-ALL rtm-ALL 2>&1 | tee srcall.log
             #出现5个常规问题解决掉就可以了
             #新问题
             #saprepost.pc 中没有include salib.h 直接include sacodes.h了。所以编译失败
             #更正,把对sacodes.h的include 更改成对salib.h的include.
             #再make
             #make -f mts.mk rms-ALL recs-ALL resa-ALL rtm-ALL 2>&1 | tee srcall.log   
             #成功 OK
            
             #[To install batch programs ]
             make –f mts.mk rms-install recs-install resa-install rtm-install  
             #成功   
            

 

 
   5.3 安装 RMS Application

            ORACLE_HOME=/d01/app/oracleas/OraHome_1
            export ORACLE_HOME
           
            #oracle 用户登陆
            cd ORACLE_HOME/network/admin
            vi tnsnames.ora
            #把RETL数据库的TNS配置进去,然后
            cd ORACLE_HOME/bin
            ./sqlplus rms12dev/rms12dev@RETL #进行连接测试,通过。(备注,如果一切配置正常而老是提示名字解析错误,请考虑是否在tnsnames.ora中存在不可见字符,这种字符只有使用vi能看出来,more,linux下的图形文本编辑器和windows平台上的文本编辑器都看不出来,这种隐蔽的问题很容易浪费时间)
            #查看端口占用情况:netstat -ntlp
           
            cd $ORACLE_HOME/guicommon/tk/admin
            cp Tk2Motif.rgb Tk2Motif.rgb_ORIG
           
  [oracle@syfr12 admin]$ grep -F ‘Tk2Motif*fontMapCs’ Tk2Motif.rgb
  !Tk2Motif*fontMapCs: iso8859-2=EE8ISO8859P2
  !Tk2Motif*fontMapCs: iso8859-15=WE8ISO8859P15 
     vi Tk2Motif.rgb
     #找到 !Tk2Motif*fontMapCs: iso8859-2=EE8ISO8859P2 ,去掉! 改成 Tk2Motif*fontMapCs: iso8859-2=UTF8
     #vi 命令模式下 输入/Tk2Motif 回车,按n 往下查找,直到找到Tk2Motif*fontMapCs 把它修改掉。
    
     su oretail
    
     DISPLAY=syfr12:1.0
     export DISPLAY
    
    
 INSTALL_DIR=/d01/app/retail/rms/app
 export INSTALL_DIR    
 PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/forms10gr2_scripts:$PATH
 CLASSPATH=$ORACLE_HOME/jlib/importer:$ORACLE_HOME/jlib/debugger.jar:$ORACLE_HOME/jlib/utj.jar:$ORACLE_HOME/jlib/ewt3.jar:$ORACLE_HOME/jlib/share.jar:$ORACLE_HOME/jlib/dfc.jar:$ORACLE_HOME/jlib/help4.jar:$ORACLE_HOME/jlib/oracle_ice.jar:$ORACLE_HOME/jlib/jewt4.jar
 FORMS_BUILDER_CLASSPATH=$CLASSPATH
 FORMS_PATH=$INSTALL_DIR/toolset/bin:$INSTALL_DIR/rms/forms/bin:$ORACLE_HOME/forms
 REPORTS_PATH=$INSTALL_DIR/rms/reports/bin:$ORACLE_HOME/forms
 TK_UNKNOWN==$ORACLE_HOME/guicommon/tk/admin
 UP=rms12dev/rms12dev@RETL
 LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jdk/jre/lib/sparc:$ORACLE_HOME/jdk/jre/lib/sparc/native_threads
 export PATH CLASSPATH FORMS_BUILDER_CLASSPATH FORMS_PATH REPORTS_PATH TK_UNKNOWN UP LD_LIBRARY_PATH         

            #[RMS Toolset Installation]:
            cp $INSTALL_DIR/toolset/src/*.pll $INSTALL_DIR/toolset/bin
           
            #因为f10gr2plsqlconv_pll_stand45 需要执行$ORACLE_HOME/bin/frmplsqlconv.sh ,所以需要更改权限。
            usermod -g oinstall oretail
            su oracle
            chmod -R 755 /d01/app/oracleas
            su oretail
           
            cd $INSTALL_DIR/toolset/bin
            f10gr2plsqlconv_pll_stand45
            rm stand45.pld
           
            pll2plx10gr2_toolset
            rm *.plx
           
            cp $INSTALL_DIR/toolset/src/*.fmb $INSTALL_DIR/toolset/bin
            fmb2fmx10gr2_fm
            rm fm_*.fmx
            fmb2fmx10gr2
           
                for PROG in `ls *.fmb | grep -v fm_`
  > do PROGNAME=`echo $PROG`
  > rm $PROGNAME
  > done
  
  
            cp $INSTALL_DIR/toolset/src/*.mmb $INSTALL_DIR/toolset/bin
            mmb2mmx10gr2
            rm *.mmb
           
           
            #[RMS Forms Installation]:
            cp $INSTALL_DIR/rms/forms/src/*.pll $INSTALL_DIR/rms/forms/bin
            cd $INSTALL_DIR/rms/forms/bin
            pll2plx10gr2_forms
            rm *.plx

            cp $INSTALL_DIR/rms/forms/src/*.fmb $INSTALL_DIR/rms/forms/bin           
            fmb2fmx10gr2_fm
            rm fm_*.fmx
            fmb2fmx10gr2
           
                for PROG in `ls *.fmb | grep -v fm_`
  > do PROGNAME=`echo $PROG`
  > rm $PROGNAME
  > done          
           
            cp $INSTALL_DIR/rms/forms/src/*.mmb $INSTALL_DIR/rms/forms/bin           
            mmb2mmx10gr2
            rm *.mmb
           
            #[RMS Reports Installation]
            cd $INSTALL_DIR/rms/reports
            mkdir bin
            cp $INSTALL_DIR/rms/reports/src/rep25lib.pll $INSTALL_DIR/rms/reports/bin
            cd $INSTALL_DIR/rms/reports/bin          
            pll2plx10gr2_reports
            rm rep25lib.plx
           
            cp $INSTALL_DIR/rms/reports/src/*.rdf $INSTALL_DIR/rms/reports/bin
            rdf2rep10gr2
            rm *.rdf
           
            #[Configure Oracle Application Server 10g for RMS]
            su oracle
            cp $ORACLE_HOME/forms/server/default.env $ORACLE_HOME/forms/server/rms.env
            vi $ORACLE_HOME/forms/server/rms.env
            #更改如下:
            FORMS_PATH=/d01/app/retail/rms/app/toolset/bin:/d01/app/retail/rms/app/rms/forms/bin:/d01/app/oracleas/OraHome_1/forms
            #添加如下
            NLS_DATE_FORMAT=YYYY-MM-DD
     NLS_LANG=AMERICAN_AMERICA.UTF8
     FORMS_REJECT_GO_DISABLED_ITEM=FALSE
    
     vi $ORACLE_HOME/network/admin/tnsnames.ora
     #添加
     REP_RMS12 =  (ADDRESS = (PROTOCOL = tcp)(HOST = syfr12)(PORT = 1951))
     cd $ORACLE_HOME/bin
     ./rwserver.sh server=REP_RMS12
     ctrl+Z
     cd $ORACLE_HOME/reports/conf
     ls
         
     vi $ORACLE_HOME/bin/reports.sh
     #找到REPORTS_PATH=的地方,添加/d01/app/retail/rms/app/rms/reports/bin::
     REPORTS_PATH=/d01/app/retail/rms/app/rms/reports/bin:$ORACLE_HOME/reports/templates:$ORACLE_HOME/reports/samples/demo:$ORACLE_HOME/reports/integ:$ORACLE_HOME/reports/printers
           
            sqlplus rms12dev/rms12dev@RETL
            SQL> update lang set WEBHELP_SERVER=’http://syfr12:7778′ where lang=1;
     SQL> update lang set REPORTS_SERVER=’REP_RMS12′ where lang=1;
     SQL> update lang set WEBREPORTS_SERVER=’reports/rwservlet’ where lang=1;
     SQL> update lang set APP_SERVER=’http://syfr12:7778/’ where lang=1;     
    
    
     vi $ORACLE_HOME/forms/server/formsweb.cfg   
     #添加
         [rms]
  envfile=rms.env
  width=850
  height=585
  separateFrame=true
  form=rtkstrt.fmx
            # 注释掉文件开头的两行
            ## baseHTMLjinitiator=basejini.htm
            ## baseHTMLjpi=basejpi.htm
            #在single-sign-on 下面添加如下内容
           
###############################################################
## added for Java 1.4.1+
## Use this classid to allow users to use any 1.4.X plugin
jinit_classid=clsid:8AD9C840-044E-11D1-B3E9-00805F499D93
jinit_mimetype=application/x-java-applet;jpiversion=1.4.1_03
legacy_lifecycle=true
## end Java plug-in additions
###############################################################

            vi $ORACLE_HOME/forms/java/oracle/forms/registry/Registry.dat
            找到default.icons.iconpath=
            default.icons.iconpath=/web_gif/
           
            cp $INSTALL_DIR/sample_files/fmrweb_utf8.res $ORACLE_HOME/forms/admin/resource/US
            这一步无法完成,因为fmrweb_utf8.res不存在
            cp $INSTALL_DIR/sample_files/rms12unix.conf $ORACLE_HOME/Apache/Apache/conf
            vi $ORACLE_HOME/Apache/Apache/conf/rms12unix.conf
            #按照步骤11更改。
            vi $ORACLE_HOME/Apache/Apache/conf/httpd.conf
            #在最后添加
            # Include the rms12unix.conf
            include “/d01/app/oracleas/OraHome_1/Apache/Apache/conf/rms12unix.conf”
           
            http://syfr12:1156 把http Server重新启动一下。
            接下来按步骤操作,可以正常看到RMS的登陆界面。
            http://syfr12:7778/forms/frmservlet?config=rms
           
            #关闭和启动服务器
            #关闭
           

            #关闭
            su oracle
            ORACLE_HOME=/d01/app/oracleas/OraHome_1
            export ORACLE_HOME
            $ORACLE_HOME/bin/emctl stop iasconsole
            $ORACLE_HOME/opmn/bin/opmnctl stopall                                  
            ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
            export ORACLE_HOME
            ORACLE_SID=RETL
            export ORACLE_SID
            $ORACLE_HOME/bin/lsnrctl stop
            echo shutdown immediate | $ORACLE_HOME/bin/sqlplus ‘/as sysdba’
                    
           
            #启动
            xhost +
            #su oracle
            ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
            export ORACLE_HOME
            ORACLE_SID=RETL
            export ORACLE_SID
            $ORACLE_HOME/bin/lsnrctl start
            echo startup | $ORACLE_HOME/bin/sqlplus ‘/as sysdba’
            ORACLE_HOME=/d01/app/oracleas/OraHome_1
            export ORACLE_HOME
            $ORACLE_HOME/opmn/bin/opmnctl startall
            $ORACLE_HOME/opmn/bin/opmnctl status
           
Processes in Instance: formreportsvr.syfr12
——————-+——————–+———+———
ias-component      | process-type       |     pid | status 
——————-+——————–+———+———
DSA                | DSA                |     N/A | Down   
LogLoader          | logloaderd         |     N/A | Down   
HTTP_Server        | HTTP_Server        |   25541 | Alive  
dcm-daemon         | dcm-daemon         |     N/A | Down   
WebCache           | WebCache           |   25571 | Alive  
WebCache           | WebCacheAdmin      |   25542 | Alive  
OC4J               | home               |   25544 | Alive  
OC4J               | OC4J_BI_Forms      |   25550 | Alive 
                       
           
            $ORACLE_HOME/bin/emctl start iasconsole 

[oracle@syfr12 bin]$ $ORACLE_HOME/bin/emctl start iasconsole
TZ set to PRC
Oracle Enterprise Manager 10g Application Server Control Release 10.1.2.0.2 
Copyright (c) 1996, 2005 Oracle Corporation.  All rights reserved.
http://syfr12:1156/emd/console/aboutApplication
Starting Oracle Enterprise Manager 10g Application Server Control ………………………
 No response, checking logs for initialization activity.
waiting for response from console …………… started successfully.

#备注:有时遇到Form Server 启动失败
#查
cd $ORACLE_HOME/opmn/logs/
more OC4J~OC4J_BI_Forms~default_island~1
到最后一页,显示错误:jms.xml: port 12607 already in use
su root
netstat -lntp
发现12607倒是没有被用掉,但12601-12605 全部被用掉了,这是jms端口。
#解决方法,把jms端口的范围配置到另一个范围上去。
组件    原端口范围      更改后端口范围
JMS     12601-12700     13601-13700
AJP     12501-12600     13501-13600
RMIS    12701-12800     13701-13800
RMI     12401-12500     13401-13500
可以按照 application server document 中的Managing Ports 进行修改。
cp $ORACLE_HOME/opmn/conf/opmn.xml $ORACLE_HOME/opmn/conf/opmn.xml.bak20080920
vi $ORACLE_HOME/opmn/conf/opmn.xml
定位到 <process-type id=”OC4J_BI_Forms” module-id=”OC4J”>
找到端口配置处:
               <port id=”ajp” range=”12501-12600″/>
               <port id=”rmi” range=”12401-12500″/>
               <port id=”jms” range=”12601-12700″/>
更改为:
               <port id=”ajp” range=”13501-13600″/>
               <port id=”rmi” range=”13401-13500″/>
               <port id=”jms” range=”13601-13700″/>
保存
重加载配置             
$ORACLE_HOME/opmn/bin/opmnctl reload    
启动
$ORACLE_HOME/opmn/bin/opmnctl stopall
$ORACLE_HOME/opmn/bin/opmnctl startall 
$ORACLE_HOME/opmn/bin/opmnctl status -l

============= ==========================
2008-9-22 RMS在迁移到公司服务器后 启动成功
          oracleas10gr3 的多个oc4j启动失败,log显示时端口被使用
          为此,为不同的oc4j指定不同的端口范围如下
          home
               <port id=”ajp” range=”14501-14200″/>
               <port id=”rmi” range=”14401-14500″/>
               <port id=”jms” range=”14601-14700″/>         
          rsm
               <port id=”ajp” range=”15501-15600″/>
               <port id=”rmi” range=”15401-15500″/>
               <port id=”jms” range=”15601-15700″/>  
          rpm
               <port id=”ajp” range=”16501-16600″/>
               <port id=”rmi” range=”16401-16500″/>
               <port id=”jms” range=”16601-16700″/>  
          alloc
               <port id=”ajp” range=”17501-17600″/>
               <port id=”rmi” range=”17401-17500″/>
               <port id=”jms” range=”17601-17700″/>  
          reim                                      
               <port id=”ajp” range=”18501-18600″/>  
               <port id=”rmi” range=”18401-18500″/> 
               <port id=”jms” range=”18601-18700″/>  

 ============== =========================
 启动:
 $ORACLE_HOME/opmn/bin/opmnctl reload
 $ORACLE_HOME/opmn/bin/opmnctl start
 $ORACLE_HOME/opmn/bin/opmnctl stopall
 $ORACLE_HOME/opmn/bin/opmnctl startall
 $ORACLE_HOME/opmn/bin/opmnctl status -l
 $ORACLE_HOME/opmn/bin/opmnctl @cluster startproc ias-component=default_group
 
 
 备注:迁移到公司,opmn 启动失败,提示端口已经被占用,但 netstat查询时世纪没有被占用,考虑查看hosts文件,是否配置错误
 正确应该是:
 127.0.0.1  localhost.domain.com localhost
 192.168.11.41 syfr12
 
 另外:在opmn.xml中 对OC4j 组件有变量:
       <variable id=”DISPLAY” value=”localhost:0″/>
       这句话是要改掉了,因为我们用root用户启了一个vncserver 其Display = localhost:1
       登陆vnc桌面,后用root用户执行xhost + ,以便于其他客户端能够连接这个Display.
      
       启动时还发现一个奇怪现象,opmn启动失败,提示端口2003已经被占用
       但是 netstat -ln | grep 2003 没有任何结果。说明2003端口没有程序在侦听
       但是 netstat -alntp | grep 2003 是由结果的 ,所有端口都被local.localhost.domain:6101 所绑定。
       解决:先把6101 的那个opmn stopall
       再检查发现 2003上的opmn端口却没有去绑定其他所有端口,再启动6101上的opmn 这样就把两个opmn都启动了,
       但是可惜6101的opmn只要一启动就立即绑定所有其他端口,这样等到启动oc4j的时候又没有剩余端口可以被绑定了
       结论: 6101的那个opmn有问题,为什么要启动有绑定所有其他端口?Bug ;你看人家2003上的opmn根本就不会去绑定不该绑的端口。 而且6101上的opmn服务不稳定。
       尝试:把原来6101的那个opmn的opmn.xml改成3003,3002,3001 ons.conf 中端口改成3002
       然后再启动,除了apache外,其他都启来了,apache没起来:可以手工启一下
       /d01/app/oracleas/OraHome_1/Apache/Apache/bin/apachectl start
            
      
      
      
      
      
      
       
 
 
 =======================================
         
            
            #备注:最好在执行vncserver 前先启动这些服务,逐条执行。
            #有的时候启动的时候出现如下现象:
            #1 OPMN 启动很慢,日志有端口冲突情况 ;EMC 启动不了,日志有端口冲突情况
            #  系统的X和VNC SERVER 使用的端口主要是5801,5901,6001,6009
            #  错误日志显示:
            #  Error starting JMS-Server: jms.xml: port 12601 already in use
            #  Error starting ORMI-Server.  Unable to bind socket: Address already in use
            #  Warning: Error reading transaction-log file (/d01/app/oracleas/OraHome_1/j2ee/home/persistence/home_default_island_1/transaction.state) for recovery: premature end of file   
            #  已经在安装时使用的端口可以查看: ORACLE_HOME/install/portlist.ini
            #  jms port:12601 不是tcp 端口,怎么重复的呢? 另外 xml文件中配置的端口一般是个范围,as服务启动的时候,一般会从最小的端口开始尝试,如果不行会自动使用更高的端口,这可以大大降低端口冲突的可能性.            
            #  在AS文档中有关于端口管理的详细解释,请参考: 4 Managing Ports
           
           
            #  成功启动后有几个问题:
           
            
            1) 登陆进去以后,所有的按钮上的图标都没有。
            解决方法: 检查发现$INSTALL_DIR/web_html/ 目录下没有图标,
            但在RMS12.0.1的目录下是看到gif目录了。copy过来以后,客户端重新登陆,图标就正常了。
           
            2) 打开任何一个Form,都报错 CONTOF@3LABL is not a member of %s2 (%s3)
            解决方法: 考虑到batch安装未成功以及问题1的解决方法,估计在能够正式使用前必须先把Patch打到12.0.7
            明天继续。
            此问题在google,metalink均无答案,估计是安装的数据库对象等有问题。
           
            要重新安装进行如下动作:
========================================           
            #准备源文件
            rm -f /d01/app/retail/rms/app/toolset/src/*
            rm -f /d01/app/retail/rms/app/toolset/bin/*
            rm -f /d01/app/retail/rms/app/rms/forms/src/*
            rm -f /d01/app/retail/rms/app/rms/forms/bin/*
            rm -f /d01/app/retail/rms/app/rms/reports/src/*
            rm -f /d01/app/retail/rms/app/rms/reports/bin/*
            #rms 12.0.0
            cp -f /d01/rms_stage/rms12appserver/toolset/src/* /d01/app/retail/rms/app/toolset/src/
            cp -f /d01/rms_stage/rms12appserver/rms/forms/src/* /d01/app/retail/rms/app/rms/forms/src/
            cp -f /d01/rms_stage/rms12appserver/rms/reports/src/* /d01/app/retail/rms/app/rms/reports/src/
            #rms 12.0.1
            cp -f /d01/app/retail/rms/12.0.1/appserverunix/toolset/src/* /d01/app/retail/rms/app/toolset/src/
            cp -f /d01/app/retail/rms/12.0.1/appserverunix/forms/src/* /d01/app/retail/rms/app/rms/forms/src/
            #rms 12.0.2
            cp -f /d01/app/retail/rms/12.0.2/appserverunix/forms/src/* /d01/app/retail/rms/app/rms/forms/src/
            #rms 12.0.3
            cp -f /d01/app/retail/rms/12.0.3/appserverunix/toolset/src/* /d01/app/retail/rms/app/toolset/src/
            cp -f /d01/app/retail/rms/12.0.3/appserverunix/forms/src/* /d01/app/retail/rms/app/rms/forms/src/
           
            #环境变量
            ORACLE_HOME=/d01/app/oracleas/OraHome_1
            export ORACLE_HOME   
     DISPLAY=syfr12:1.0
     INSTALL_DIR=/d01/app/retail/rms/app
     export INSTALL_DIR    
     PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/forms10gr2_scripts:$PATH
     CLASSPATH=$ORACLE_HOME/jlib/importer:$ORACLE_HOME/jlib/debugger.jar:$ORACLE_HOME/jlib/utj.jar:$ORACLE_HOME/jlib/ewt3.jar:$ORACLE_HOME/jlib/share.jar:$ORACLE_HOME/jlib/dfc.jar:$ORACLE_HOME/jlib/help4.jar:$ORACLE_HOME/jlib/oracle_ice.jar:$ORACLE_HOME/jlib/jewt4.jar
     FORMS_BUILDER_CLASSPATH=$CLASSPATH
     FORMS_PATH=$INSTALL_DIR/toolset/bin:$INSTALL_DIR/rms/forms/bin:$ORACLE_HOME/forms
     REPORTS_PATH=$INSTALL_DIR/rms/reports/bin:$ORACLE_HOME/forms
     TK_UNKNOWN==$ORACLE_HOME/guicommon/tk/admin
     UP=rms12dev/rms12dev@RETL
     LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jdk/jre/lib/sparc:$ORACLE_HOME/jdk/jre/lib/sparc/native_threads
     export DISPLAY PATH CLASSPATH FORMS_BUILDER_CLASSPATH FORMS_PATH REPORTS_PATH TK_UNKNOWN UP LD_LIBRARY_PATH         
           
            su root
            xhost +
           
            #[RMS Toolset Installation]:
            su oretail
            cp $INSTALL_DIR/toolset/src/*.pll $INSTALL_DIR/toolset/bin
            cd $INSTALL_DIR/toolset/bin
            f10gr2plsqlconv_pll_stand45
            rm stand45.pld           
            pll2plx10gr2_toolset
            rm -f *.plx           
            cp $INSTALL_DIR/toolset/src/*.fmb $INSTALL_DIR/toolset/bin
            fmb2fmx10gr2_fm
            rm -f fm_*.fmx
            fmb2fmx10gr2           
                for PROG in `ls *.fmb | grep -v fm_`
  > do PROGNAME=`echo $PROG`
  > rm -f $PROGNAME
  > done  
            cp $INSTALL_DIR/toolset/src/*.mmb $INSTALL_DIR/toolset/bin
            mmb2mmx10gr2
            rm -f *.mmb
           
           
            #[RMS Forms Installation]:
            cp $INSTALL_DIR/rms/forms/src/*.pll $INSTALL_DIR/rms/forms/bin
            cd $INSTALL_DIR/rms/forms/bin
            pll2plx10gr2_forms
            rm -f *.plx
            cp $INSTALL_DIR/rms/forms/src/*.fmb $INSTALL_DIR/rms/forms/bin           
            fmb2fmx10gr2_fm
            rm -f fm_*.fmx
            fmb2fmx10gr2           
                for PROG in `ls *.fmb | grep -v fm_`
  > do PROGNAME=`echo $PROG`
  > rm -f $PROGNAME
  > done
            cp $INSTALL_DIR/rms/forms/src/*.mmb $INSTALL_DIR/rms/forms/bin           
            mmb2mmx10gr2
            rm -f *.mmb
           
            #[RMS Reports Installation]
            cd $INSTALL_DIR/rms/reports
            mkdir bin
            cp $INSTALL_DIR/rms/reports/src/rep25lib.pll $INSTALL_DIR/rms/reports/bin
            cd $INSTALL_DIR/rms/reports/bin          
            pll2plx10gr2_reports
            rm -f rep25lib.plx           
            cp $INSTALL_DIR/rms/reports/src/*.rdf $INSTALL_DIR/rms/reports/bin
            rdf2rep10gr2
            rm -f *.rdf
           
            2) 打开任何一个Form,都报错 CONTOF@3LABL is not a member of %s2 (%s3)
            解决方法: 考虑到batch安装未成功以及问题1的解决方法,估计在能够正式使用前必须先把Patch打到12.0.7
            打到12.0.3 这个问题依然存在
           
[root@syfr12 bin]# grep ‘is not a member of’ /d01/app/retail -r
/d01/app/retail/rms/db/data/rtk_errors.sql:’BL’, ‘INV_CODE_OR_CODE_DESC’, 1, ‘The specified code %s1 or description %s2 is not a member of %s3.’
/d01/app/retail/rms/db/data/rtk_errors.sql:’BL’, ‘MISSING_CODE’, 1, ‘%s1 is not a member of %s2 (%s3).’, ‘RETEK’, ‘Y’);
[root@syfr12 bin]#
            grep ‘MISSING_CODE’ /d01/app/retail -r
/d01/app/retail/rms/db/db_objects/languagb.pls:      O_error_message := sql_lib.create_msg(‘MISSING_CODE’, I_code, L_code_type_desc , I_code_type);
            涉及到使用MISSING_CODE的地方就此一处。
            打开 package LANGUAGE_SQL 查找MISSING_CODE; 看代码。
            引起这个错误的原因是因为到表code_detail中没有查询到需要的内容。
            估计是insert seed data 和 language data 的脚本没有运行完整。
           
            使用sql trace可以看到用户选择某个文件夹的时候执行了 sql:
            plsqldeveloper中找到来自host的rms12dev 的session
            529
            启用被session的trace
            #Event4 :binds          
            #EXECUTE SYS.DBMS_SYSTEM.SET_EV(sid,serial#,10046,EventNumber,”);
            EXECUTE SYS.DBMS_SYSTEM.SET_EV(529,14,10046,4,’rms12dev’);
            执行动作
           
            结束trace
            #EXECUTE SYS.DBMS_SYSTEM.SET_EV(sid,serial#,10046,0,”);
            EXECUTE SYS.DBMS_SYSTEM.SET_EV(529,14,10046,0,’rms12dev’);
            查看trace 文件
           
Select a.spid, a.TERMINAL, a.PROGRAM, a.username, b.OSUSER, b.PROCESS,
       b.username, b.machine, b.SID, b.MODULE, b.action, b.CLIENT_INFO,
       b.logon_time, b.sid, b.serial#, c.SQL_TEXT
From v$process a, v$session b, v$sql c
Where a.ADDR = b.PADDR
And b.sql_address = c.address(+)
And b.sid = 529
           
                
            trace 显示确实有对CODE_HEAD表和CODE_DETAIL表的访问
            select * from CODE_HEAD 表只有一条记录。
            grep ‘CODE_HEAD’ /d01/app/retail -r
            发现有SQL /d01/app/retail/rms/db/data/codes.sql 对这张表的记录做初始化。里面insert了很多记录。
            而系统中只有一条记录,显然是系统数据不完整。
            把codes.sql 重新运行一下,这个问题也就解决了,不过这个问题表明我初始化数据的时候有遗漏。           
           
            看来需要重建系统数据:
            按照pg15- rms-120-ig-addendum.pdf 进行,完成12.0.3 的hotfix部分;
            注意每一步的完成log,确保正确执行,没有中断过,以免漏数据。
            # 确保操作系统字符集被正确设置,否则seeddata中的中文会是乱码
            # 默认情况下OS,DB,SQL文件都是UTF8,但是安装后依然是乱码。可能是未设置客户端的NLS_LANG
            # env | grep NLS_LANG
            # 如果没有,需要设置一下:
            # NLS_LANG=AMERICAN_AMERICA.UTF8
            # export NLS_LANG
            # 在安装之前,可以先尝试如下insert 脚本
            # echo @mc_rejection_reasons_zhs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            # 然后在plsqldeveloper中查看中文是否正确。如果正确则说明unix的nls_lang设置是对的。
           
            unzip 5985761.zip
           
            STAGING_AREA=/d01/app/retail/rms/12.0.3/linux_hotfix
            export STAGING_AREA  
            INSTALL_DIR=/d01/app/retail/rms/db
            export INSTALL_DIR
            ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
            export ORACLE_HOME
            ORACLE_SID=RETL
            export ORACLE_SID
            NLS_LANG=AMERICAN_AMERICA.UTF8
            export NLS_LANG
           
            #脚本准备
            cd $STAGING_AREA/seed_data/rms_scripts
            cp -f $STAGING_AREA/seed_data/rms_scripts/*  $INSTALL_DIR/data/
            cp -f $STAGING_AREA/seed_data/rib_scripts/*  $INSTALL_DIR/data/
            cp -rf $STAGING_AREA/seed_data/form_menu_elements $INSTALL_DIR/data/           
            #先删除
            cd $STAGING_AREA/seed_data/delete_scripts
            echo @removeRmsDemoData.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            echo @removeRmsSeedData.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #echo @delete_check.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            在PLSQLDEVELOPER 中 执行delete_check.sql 然后看output 中尚未删除的表
  #RPM_RIB_PROPERTIES             table has 3          row(s)
  #RPM_WORKSHEET_VIEW             table has 1          row(s)
  #RPM_MBC_LOV_VALUES             table has 3          row(s)
  #RPM_WORKSHEET_COLUMN           table has 118        row(s)
  #ALERT_STATUS                   table has 3          row(s)
  #TASK_STATE                     table has 4          row(s)
  #SYS_PROC_TYP                   table has 1          row(s)
  #TASK_ALERT_MODE                table has 3          row(s)
  #NAV_SERVER                     table has 1          row(s)
  #NAV_ELEMENT                    table has 184        row(s)
  #NAV_COMPONENT                  table has 2          row(s)
  #NAV_FOLDER_BASE                table has 130        row(s)
         #如果无法删除,一般是由外健引用,可用Toad的Schema browser 看表的referential 查看相关外键,先删除引用表的数据
         #解决所有未删除的数据,知道删除干净。
         #查找外键语句:SELECT * FROM USER_CONSTRAINTS WHERE CONSTRAINT_TYPE=’R’ and table_name=表名
         #失效外健可用如下语句:ALTER TABLE RPM_WORKSHEET_VIEW_COL DISABLE CONSTRAINT RWC_RWN_FK;
           
            #检查 delete_check.log
            #再重建
            cd $INSTALL_DIR/data
            rm -f *.log
            $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            SQL>@rmsseeddata.sql
            SQL>username/password@database? rms12dev/rms12dev@RETL
            SQL>is vat on? Y
            SQL>What is the owner schema? RMS12DEV
            SQL>is vat_classon ? Y
            SQL>Role to add?  DEVELOPER           
            SQL>Enter Calendar type to be used? C
            SQL>Enter week start – week end option?3
            SQL>Enter date to be set as transaction date?
            SQL>Enter date to be set as transaction date (vdate as DD-MON-YYYY): 01-MAR-2008
            SQL>second language?zhs
            SQL>primy language? zhs           
            SQL>Base_contry_id ? CN
            SQL>Primy Currency ? CNY
           
            检查RmsSeedData.log发现如下错误
1)           
ORA-01400: cannot insert NULL into
(“RMS12DEV”.”SYSTEM_OPTIONS”.”INCREASE_TSF_QTY_IND”)
解决,把SYSTEM_OPTIONS.INCREASE_TSF_QTY_IND,RPM_RIB_IND,RTM_SIMPLIFIED_IND,TSF_AUTO_CLOSE_STORE
,TSF_AUTO_CLOSE_WH  更改成可以为NULL;

2)code.sql 执行失败(code.sql 只最主要的seeddata)
分析:失败原因在于ribdata.sql 执行不成攻,而不成功的原因是未找到sqlldr
解决:
            PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
            export PATH
           
            #检查log 确保脚本被全部执行完毕。
            echo @rmsdemodata.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #检查log 确保脚本被全部执行完毕。
           
            #再次重建
            #按照上面的先删除,后重建的步骤进行。注意环境变量的完整性。
           
            STAGING_AREA=/d01/app/retail/rms/12.0.3/linux_hotfix
            export STAGING_AREA  
            INSTALL_DIR=/d01/app/retail/rms/db
            export INSTALL_DIR
            ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
            export ORACLE_HOME
            ORACLE_SID=RETL
            export ORACLE_SID
            NLS_LANG=AMERICAN_AMERICA.UTF8
            export NLS_LANG
            PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
            export PATH
           
            #再次重建失败,原因:虽然sqlldr已经显示成功,但是SELECT * FROM rib_doctypes只有一条记录,显然实际没有装载完整。
            #rib_doctypes_rms.dat 中有很多条记录,但是sqlldr只能加载一条就完了。
            #rib_doctypes 表中第一条记录的doc_type_data 字段显示 <Value Error>
            解决方法:安装文档提供的sqlldr的控制文件有问题,即使直接使用sqlldr也不能成功导如入。
            可做如下修改:
            1) 采用secondfile方式进行sqlldr,制作两个dat 文件,修改控制文件。
            2)更改 ribdoctypes.sql 的内容使之符合刚才更改后的sqlldr命令。
            #再次重建 成功
            #成功的标志是检查rmsseeddata.log没有一个ORA错误。在没有错误的情况下,界面汉化是完整的,如果出现部分错误,汉化可能不完整,系统加载也可能出现各种错误。
           
           
            #$ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #SQL>@rmsdemodata.sql 
            #Demo Data暂时不安装,先把patch打到12.0.7 再安装
            #因为Retail的多语言支持不是通过fmb,而是在数据库里面存储界面上的多语言标签的,所以各版本的的patch虽然有多个语言版本,但实际上只要下载generic版即可。(其他语言的patch 和 gereric实际是一样的,形式主义。)
           
============================================================
            #接下来把patch从12.0.4 – 12.0.7 的patch全部打完
            #先打DB Patch
            #再打App Patch
           
            su oracle
            ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
            export ORACLE_HOME
            ORACLE_SID=RETL
            export ORACLE_SID
            NLS_LANG=AMERICAN_AMERICA.UTF8
            export NLS_LANG
            PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
            export PATH
           
           
            ================= db patch for 12.0.4==========================================
            STAGING_AREA=/d01/app/retail/rms/12.0.4/dbserverunix
            export STAGING_AREA
                      
            cd $STAGING_AREA/pricing/xml(这里安装文档是错误的,安装文档说是/pricing/types)
            echo @pricing1204type.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
                       
            cd $STAGING_AREA/pricing/dbcs                   
            echo @pricing1204dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL           

            cd $STAGING_AREA/pricing/db_objects                   
            echo @pricing1204rms.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/pricing/data
            echo @pricing1204ctl.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/pricing/data
            echo @pricing1204rsm.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #错误:named_permission_dsc 表不存在
            #grep ‘named_permission_dsc’ /d01/app/retail/rsm -r
            #未找到,说明rms安装时不会drop这张表。那么这张表怎么缺失的呢?
            #grep ‘named_permission_dsc’ /d01/app/retail/rms -r > find_named_permission_dsc.log
            #找到一大堆,select * from all_objects 发现named_permission_dsc 在 rsm12dev schema中
            #解决 :改为rsm12dev登陆
            echo @pricing1204rsm.sql | $ORACLE_HOME/bin/sqlplus rsm12dev/rsm12dev@RETL
            #还有错误,原因是named_permission表中数据太少
            #解决方法:运行 /d01/app/retail/rms/db/pricing/rsm/rsm12rpm.sql 进行初始化(在安装文档中未提到这一点)
            cd /d01/app/retail/rms/db/pricing/rsm
            echo @rsm12rpm.sql | $ORACLE_HOME/bin/sqlplus rsm12dev/rsm12dev@RETL
            #错误:final_named_permission_dsc 表不存在,其他insert正常。
            grep ‘final_named_permission_dsc’ /d01/app/retail/rms/db/pricing/ddl -r
            #没有结果
            #从表结构看 final_named_permission_dsc 与 named_permission_dsc 是一样的,
            #如果named_permission_dsc 是 final_named_permission_dsc 的替代品的话 final_named_permission_dsc 的insert错误可以忽略
            #再执行 12.0.4 的rsm data:
            cd $STAGING_AREA/pricing/data
            echo @pricing1204rsm.sql | $ORACLE_HOME/bin/sqlplus rsm12dev/rsm12dev@RETL
            #基本成功(就一条错误,忽略)
            #小结:如果是在没有安装RSM前打RMS12.0.4的patch,则pricing1204rsm.sql 应该可以不执行
            #因为这个sql 依赖于rsm12dev Schema ,这必须在rsm安装后才能有的。
           
           
            cd $STAGING_AREA/dbcs
            echo @patch1204dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/db_objects
            echo @patch1204rms.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/utility
            echo @inv_obj_comp.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/data
            echo @patch1204ctl.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/data/lang/ZHS
            echo @patch1204ctl_zhs_sec.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
           
           
            ================= db patch for 12.0.5==========================================
            STAGING_AREA=/d01/app/retail/rms/12.0.5/dbserverunix
            export STAGING_AREA
                      
            cd $STAGING_AREA/pricing/types
            echo @pricing1205types.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
                       
            cd $STAGING_AREA/pricing/dbcs                   
            echo @pricing1205dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL           

            cd $STAGING_AREA/pricing/db_objects                   
            echo @pricing1205rms.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/dbcs
            echo @patch1205dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #错误:s6119605_add_cc_sec_policy.sql  错误 invalid column “ORIG_CC_NO” (基于vpd的策略函数) SA_ERROR 表中没有 ORIG_CC_NO 列
            #      patch1205dbcs.sql 在执行到 s6119605_add_cc_sec_policy.sql时中断,解决问题后需要手工从这里再开始
            #
            grep ‘ORIG_CC_NO’  /d01/app/retail/rms -r   
            #找到 /d01/app/retail/rms/12.0.5/dbserverunix/dbcs/s6119605_sa_error.sql:ALTER TABLE SA_ERROR ADD ORIG_CC_NO VARCHAR2(40) 
            #晕倒,在patch1205dbcs.sql 中 s6119605_sa_error.sql 居然排在 s6119605_add_cc_sec_policy.sql 后面
            #解决方法:编辑patch1205dbcs.sql ,把顺序排正确,把s6119605_add_cc_sec_policy.sql 和 s6119605_add_cc_sec_fga_policy.sql
            #排到最后一个s6119605开头的sql后面。前面已经执行完的语句去掉。
            cp patch1205dbcs.sql patch1205dbcs.sql.bak
            vi patch1205dbcs.sql
           
spool patch1205dbcs.log;

— Startall —
prompt ‘Starting File: s6119605_sa_error_rev.sql’;
@@s6119605_sa_error_rev.sql;
prompt ‘Starting File: s6119605_sa_error.sql’;
@@s6119605_sa_error.sql;
prompt ‘Starting File: s6119605_sa_error_temp.sql’;
@@s6119605_sa_error_temp.sql;
prompt ‘Starting File: s6119605_sa_error_wksht.sql’;
@@s6119605_sa_error_wksht.sql;
prompt ‘Starting File: s6119605_sa_system_options.sql’;
@@s6119605_sa_system_options.sql;
prompt ‘Starting File: s6119605b_sa_system_options.sql’;
@@s6119605b_sa_system_options.sql;
prompt ‘Starting File: s6119605_v_sa_error_all.sql’;
@@s6119605_v_sa_error_all.sql;
prompt ‘Starting File: s6119605_add_cc_sec_policy.sql’;
@@s6119605_add_cc_sec_policy.sql;
prompt ‘Starting File: s6119605_add_cc_sec_fga_policy.sql’;
@@s6119605_add_cc_sec_fga_policy.sql;
prompt ‘Starting File: s6124934_terms_detail.sql’;
@@s6124934_terms_detail.sql;
prompt ‘Starting File: s6137471_sups.sql’;
@@s6137471_sups.sql;
prompt ‘Starting File: s6153829_mrt.sql’;
@@s6153829_mrt.sql;
prompt ‘Starting File: s6156382_item_loc_hist_mth.sql’;
@@s6156382_item_loc_hist_mth.sql;
prompt ‘Starting File: s6199940_sa_error.sql’;
@@s6199940_sa_error.sql;
prompt ‘Starting File: s6236684_pos_merch_criteria.sql’;
@@s6236684_pos_merch_criteria.sql;
prompt ‘Starting File: s6269890_item_supp_country_loc.sql’;
@@s6269890_item_supp_country_loc.sql;
prompt ‘Starting File: s6276228_ce_ord_item.sql’;
@@s6276228_ce_ord_item.sql;
prompt ‘Starting File: s6317116_pk_index.sql’;
@@s6317116_pk_index.sql;
prompt ‘Starting File: rms_table_ald_aiudr.trg’;
@@rms_table_ald_aiudr.trg;
prompt ‘Starting File: rms_table_rpm_itl_aiudr.trg’;
@@rms_table_rpm_itl_aiudr.trg;
spool off;

exit; 
           
            #再执行
            echo @patch1205dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #又错啦,策略重复。
            #解决:编辑 s6119605_add_cc_sec_policy.sql 把刚才已经完成的策略去掉
            cp s6119605_add_cc_sec_policy.sql s6119605_add_cc_sec_policy.sql.bak
            vi s6119605_add_cc_sec_policy.sql
            编辑patch1205dbcs.sql 把刚才已经执行过的语句去掉
            cp patch1205dbcs.sql patch1205dbcs.sql.bak2
            vi patch1205dbcs.sql
— Startall —
prompt ‘Starting File: s6119605_add_cc_sec_policy.sql’;
@@s6119605_add_cc_sec_policy.sql;
prompt ‘Starting File: s6119605_add_cc_sec_fga_policy.sql’;
@@s6119605_add_cc_sec_fga_policy.sql;
prompt ‘Starting File: s6124934_terms_detail.sql’;
@@s6124934_terms_detail.sql;
prompt ‘Starting File: s6137471_sups.sql’;
@@s6137471_sups.sql;
prompt ‘Starting File: s6153829_mrt.sql’;
@@s6153829_mrt.sql;
prompt ‘Starting File: s6156382_item_loc_hist_mth.sql’;
@@s6156382_item_loc_hist_mth.sql;
prompt ‘Starting File: s6199940_sa_error.sql’;
@@s6199940_sa_error.sql;
prompt ‘Starting File: s6236684_pos_merch_criteria.sql’;
@@s6236684_pos_merch_criteria.sql;
prompt ‘Starting File: s6269890_item_supp_country_loc.sql’;
@@s6269890_item_supp_country_loc.sql;
prompt ‘Starting File: s6276228_ce_ord_item.sql’;
@@s6276228_ce_ord_item.sql;
prompt ‘Starting File: s6317116_pk_index.sql’;
@@s6317116_pk_index.sql;
prompt ‘Starting File: rms_table_ald_aiudr.trg’;
@@rms_table_ald_aiudr.trg;
prompt ‘Starting File: rms_table_rpm_itl_aiudr.trg’;
@@rms_table_rpm_itl_aiudr.trg;

spool off;

exit;           
            #再执行
            echo @patch1205dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #执行到 s6199940_sa_error.sql 又错了:
  Updating Indexes on ‘SA_ERROR’
  DROP INDEX SA_ERROR_I5
             *
  ERROR at line 1:
  ORA-01418: specified index does not exist
           #解决:编辑 s6199940_sa_error.sql ,去掉drop index语句;再编辑patch1205dbcs.sql,从s6199940_sa_error.sql开始。
           vi s6199940_sa_error.sql
           vi patch1205dbcs.sql
            #再执行
            echo @patch1205dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           #错误:s6317116_pk_index.sql
          
  Creating Primary Key on ‘ITEM_SUPP_COUNTRY_LOC’
  ALTER TABLE ITEM_SUPP_COUNTRY_LOC
  *
  ERROR at line 1:
  ORA-14016: underlying table of a LOCAL partitioned index must be partitioned 

           #原因是Primary key的创建语句使用了USING INDEX LOCAL ,这要求表和索引是分区的,但我们的Demo环境没有进行分区。
           #解决方法,去掉里面的LOCAL语句
           #接下来的sql个执行
           cp s6317116_pk_index.sql s6317116_pk_index.sql.bak
           vi s6317116_pk_index.sql
           #去掉local
           echo @s6317116_pk_index.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           echo @rms_table_ald_aiudr.trg | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           echo @rms_table_rpm_itl_aiudr.trg | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
          
           #全部完成                             
           
            cd $STAGING_AREA/db_objects
            echo @patch1205rms.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/utility
            echo @inv_obj_comp.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/data
            echo @patch1205ctl.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/data/lang/ZHS
            echo @patch1205ctl_zhs_sec.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            #完成
           
            ================= db patch for 12.0.6==========================================
           
            STAGING_AREA=/d01/app/retail/rms/12.0.6/dbserverunix
            export STAGING_AREA
                      
            cd $STAGING_AREA/pricing/types
            echo @pricing1206types.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
                       
            cd $STAGING_AREA/pricing/dbcs                   
            echo @pricing1206dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL           

            cd $STAGING_AREA/pricing/db_objects                   
            echo @pricing1206rms.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/pricing/data
            echo @pricing1206ctl.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL      
           
            cd $STAGING_AREA/dbcs
            echo @patch1206dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/db_objects
            echo @patch1206rms.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/utility
            echo @inv_obj_comp.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/data
            echo @patch1206ctl.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/data/lang/ZHS
            echo @patch1206ctl_zhs_sec.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            #顺利完成
           
           
            ================= db patch for 12.0.7==========================================
            STAGING_AREA=/d01/app/retail/rms/12.0.7/dbserverunix
            export STAGING_AREA
                      
            cd $STAGING_AREA/pricing/types
            echo @pricing1207types.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
                       
            cd $STAGING_AREA/pricing/dbcs                   
            echo @pricing1207dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL           

            cd $STAGING_AREA/pricing/db_objects                   
            echo @pricing1207rms.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL           
           
            cd $STAGING_AREA/dbcs
            echo @patch1207dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #有问题:
  ALTER TABLE SYSTEM_OPTIONS DROP CONSTRAINT CHK_SYS_OPT_ELC_IND
                                             *
  ERROR at line 1:
  ORA-02443: Cannot drop constraint  – nonexistent constraint
            #停在SQL s6401279a_system_options.sql
            #解决方法:编辑s6401279a_system_options.sql 去掉语句:ALTER TABLE SYSTEM_OPTIONS DROP CONSTRAINT CHK_SYS_OPT_ELC_IND
            #编辑patch1207dbcs.sql ,去掉s6401279a_system_options.sql以前的语句
            cp s6401279a_system_options.sql s6401279a_system_options.sql.bak
            vi s6401279a_system_options.sql
            cp patch1207dbcs.sql patch1207dbcs.sql.bak
            vi patch1207dbcs.sql
            echo @patch1207dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #有问题
            #停在:s6694465e_SYSTEM_OPTIONS.sql   constraint CHK_SOP_AIP_IND 不存在
            #解决方法:把这个文件中的drop constaint语句全部去掉,其他同上
            vi s6694465e_SYSTEM_OPTIONS.sql
            vi patch1207dbcs.sql
            echo @patch1207dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #有问题 ,往system_option  表回插数据的时候,有些字段不能为NULL,但实际数据是NULL的。
            把system_option表中的如下字段设置为Null ,然后接着执行。
            INCREASE_TSF_QTY_IND
            RPM_RIB_IND
            RTM_SIMPLIFIED_IND,
            TSF_AUTO_CLOSE_STORE
            TSF_AUTO_CLOSE_WH
            vi s6694465e_SYSTEM_OPTIONS.sql
            vi patch1207dbcs.sql
            echo @patch1207dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #又出错啦,sql停在 s6766707a_ALLOC_STATUS_TRIGGER.sql ;原因ORA-04080: trigger ‘ALLOC_STATUS_TRIGGER’ does not exist
            #解决方法:编辑s6766707a_ALLOC_STATUS_TRIGGER.sql 去掉这条语句
            #          编辑vi patch1207dbcs.sql 去掉 s6766707a_ALLOC_STATUS_TRIGGER.sql前的所有语句。
            cp s6766707a_ALLOC_STATUS_TRIGGER.sql s6766707a_ALLOC_STATUS_TRIGGER.sql.bak
            vi s6766707a_ALLOC_STATUS_TRIGGER.sql
            vi patch1207dbcs.sql
            echo @patch1207dbcs.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #OK 完成!           
           
            cd $STAGING_AREA/db_objects
            echo @patch1207rms.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/utility
            echo @inv_obj_comp.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            cd $STAGING_AREA/data
            echo @patch1207ctl.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #出错啦
            #出错文件:c6694465d_nav_folder_base.sql :语句:
   insert into nav_folder_base(folder,
   *
   ERROR at line 1:
   ORA-02291: integrity constraint (RMS12DEV.NFB_NFB_FK) violated – parent key not
   found
            #解决方法:把c6694465d_nav_folder_base.sql 放到sqldeveloper中单独执行:
            #结果其他语句都正常,唯有这一句失败
            insert into nav_folder_base(folder,
                            folder_name,
                            parent_folder)
                    values(‘REPLENISHMENT’,
                           ‘Replenishment’,
                           ‘ITEM_RELATED’
                          );
            #完整性外健约束是因为字段 PARENT_FOLDER 上有外健,引用的是本表的FOLDER字段,那么如果是第一条记录
            #肯定是不符合外健约束的了,解决方法:去掉这个约束。
            #编辑 patch1207ctl.sql ,去掉包括c6694465d_nav_folder_base.sql 以前的所有语句。
            vi patch1207ctl.sql
            echo @patch1207ctl.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #完成
          
            cd $STAGING_AREA/data/lang/ZHS
            echo @patch1207ctl_zhs_sec.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            #全部完成
           
============================================================
            #从12.0.4 – 12.0.7 的AppPatch
                      
            #准备源文件(各版本的patch)
           
            rm -f /d01/app/retail/rms/app/toolset/bin/*           
            rm -f /d01/app/retail/rms/app/rms/forms/bin/*           
            rm -f /d01/app/retail/rms/app/rms/reports/bin/*

            #rms 12.0.4
            cp -f /d01/app/retail/rms/12.0.4/appserverunix/toolset/src/* /d01/app/retail/rms/app/toolset/src/
            cp -f /d01/app/retail/rms/12.0.4/appserverunix/forms/src/* /d01/app/retail/rms/app/rms/forms/src/
            #rms 12.0.5
            cp -f /d01/app/retail/rms/12.0.5/appserverunix/toolset/src/* /d01/app/retail/rms/app/toolset/src/
            cp -f /d01/app/retail/rms/12.0.5/appserverunix/forms/src/* /d01/app/retail/rms/app/rms/forms/src/
            #rms 12.0.6
            cp -f /d01/app/retail/rms/12.0.6/appserverunix/toolset/src/* /d01/app/retail/rms/app/toolset/src/
            cp -f /d01/app/retail/rms/12.0.6/appserverunix/forms/src/* /d01/app/retail/rms/app/rms/forms/src/
            cp -f /d01/app/retail/rms/12.0.6/appserverunix/reports/src/* /d01/app/retail/rms/app/rms/forms/src/
            #rms 12.0.7
            cp -f /d01/app/retail/rms/12.0.7/appserverunix/toolset/src/* /d01/app/retail/rms/app/toolset/src/
            cp -f /d01/app/retail/rms/12.0.7/appserverunix/forms/src/* /d01/app/retail/rms/app/rms/forms/src/
           
            #环境变量
            ORACLE_HOME=/d01/app/oracleas/OraHome_1
            export ORACLE_HOME   
     DISPLAY=syfr12:1.0
     INSTALL_DIR=/d01/app/retail/rms/app
     export INSTALL_DIR    
     PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/forms10gr2_scripts:$PATH
     CLASSPATH=$ORACLE_HOME/jlib/importer:$ORACLE_HOME/jlib/debugger.jar:$ORACLE_HOME/jlib/utj.jar:$ORACLE_HOME/jlib/ewt3.jar:$ORACLE_HOME/jlib/share.jar:$ORACLE_HOME/jlib/dfc.jar:$ORACLE_HOME/jlib/help4.jar:$ORACLE_HOME/jlib/oracle_ice.jar:$ORACLE_HOME/jlib/jewt4.jar
     FORMS_BUILDER_CLASSPATH=$CLASSPATH
     FORMS_PATH=$INSTALL_DIR/toolset/bin:$INSTALL_DIR/rms/forms/bin:$ORACLE_HOME/forms
     REPORTS_PATH=$INSTALL_DIR/rms/reports/bin:$ORACLE_HOME/forms
     TK_UNKNOWN==$ORACLE_HOME/guicommon/tk/admin
     UP=rms12dev/rms12dev@RETL
     LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32:$ORACLE_HOME/jdk/jre/lib
     export DISPLAY PATH CLASSPATH FORMS_BUILDER_CLASSPATH FORMS_PATH REPORTS_PATH TK_UNKNOWN UP LD_LIBRARY_PATH   
            #注意:这里不要多此一举的去设置NLS_LANG参数,否则会出现错误: can’t start/complete ….
           
           
            su root
            xhost +
           
            #[RMS Toolset Installation]:
            su oretail
            cp $INSTALL_DIR/toolset/src/*.pll $INSTALL_DIR/toolset/bin
            cd $INSTALL_DIR/toolset/bin        
            pll2plx10gr2_toolset
            rm -f *.plx           
            cp $INSTALL_DIR/toolset/src/*.fmb $INSTALL_DIR/toolset/bin
            fmb2fmx10gr2_fm
            rm -f fm_*.fmx
            fmb2fmx10gr2           
                for PROG in `ls *.fmb | grep -v fm_`
  > do PROGNAME=`echo $PROG`
  > rm -f $PROGNAME
  > done  
            cp $INSTALL_DIR/toolset/src/*.mmb $INSTALL_DIR/toolset/bin
            mmb2mmx10gr2
            rm -f *.mmb
           
           
            #[RMS Forms Installation]:
            cp $INSTALL_DIR/rms/forms/src/*.pll $INSTALL_DIR/rms/forms/bin
            cd $INSTALL_DIR/rms/forms/bin
            pll2plx10gr2_forms
            rm -f *.plx
            cp $INSTALL_DIR/rms/forms/src/*.fmb $INSTALL_DIR/rms/forms/bin           
            fmb2fmx10gr2_fm
            rm -f fm_*.fmx
            fmb2fmx10gr2           
                for PROG in `ls *.fmb | grep -v fm_`
  > do PROGNAME=`echo $PROG`
  > rm -f $PROGNAME
  > done
            cp $INSTALL_DIR/rms/forms/src/*.mmb $INSTALL_DIR/rms/forms/bin           
            mmb2mmx10gr2
            rm -f *.mmb
           
            #[RMS Reports Installation]
            cd $INSTALL_DIR/rms/reports
            mkdir bin
            cp $INSTALL_DIR/rms/reports/src/rep25lib.pll $INSTALL_DIR/rms/reports/bin
            cd $INSTALL_DIR/rms/reports/bin          
            pll2plx10gr2_reports
            rm -f rep25lib.plx           
            cp $INSTALL_DIR/rms/reports/src/*.rdf $INSTALL_DIR/rms/reports/bin
            rdf2rep10gr2
            rm -f *.rdf
           
            2) 打开任何一个Form,都报错 CONTOF@3LABL is not a member of %s2 (%s3)
            解决方法: 考虑到batch安装未成功以及问题1的解决方法,估计在能够正式使用前必须先把Patch打到12.0.7
            打到12.0.3 这个问题依然存在

============================================================
            #从12.0.4 – 12.0.7 的Batch Patch

rm -f /d01/app/retail/rms/db/rms/oracle/lib/bin/*
rm -f /d01/app/retail/rms/db/rms/oracle/proc/bin/*
           
           
su oretail
cp -f /d01/app/retail/rms/12.0.4/dbserverunix/batch/lib/src/*  /d01/app/retail/rms/db/rms/oracle/lib/src/
cp -f /d01/app/retail/rms/12.0.5/dbserverunix/batch/lib/src/*  /d01/app/retail/rms/db/rms/oracle/lib/src/
cp -f /d01/app/retail/rms/12.0.6/dbserverunix/batch/lib/src/*  /d01/app/retail/rms/db/rms/oracle/lib/src/ 
cp -f /d01/app/retail/rms/12.0.7/dbserverunix/batch/lib/src/*  /d01/app/retail/rms/db/rms/oracle/lib/src/        
cp -f /d01/app/retail/rms/12.0.4/dbserverunix/batch/proc/src/*  /d01/app/retail/rms/db/rms/oracle/proc/src/
cp -f /d01/app/retail/rms/12.0.5/dbserverunix/batch/proc/src/*  /d01/app/retail/rms/db/rms/oracle/proc/src/
cp -f /d01/app/retail/rms/12.0.6/dbserverunix/batch/proc/src/*  /d01/app/retail/rms/db/rms/oracle/proc/src/ 
cp -f /d01/app/retail/rms/12.0.7/dbserverunix/batch/proc/src/*  /d01/app/retail/rms/db/rms/oracle/proc/src/ 

           再按照正常的步骤编译和安装batch
                   
            # [Set Environment Variables]:
            su oretail
            ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
            export ORACLE_HOME
            ORACLE_SID=RETL
            export ORACLE_SID
            INSTALL_DIR=/d01/app/retail/rms/db
            export INSTALL_DIR
            MMHOME=$INSTALL_DIR/rms
            export MMHOME
            MMUSER=rms12dev
            PASSWORD=rms12dev
            export MMUSER
            export PASSWORD
            LD_LIBRARY_PATH=$ORACLE_HOME/lib:$MMHOME/oracle/lib/bin:$LD_LIBRARY_PATH
            export LD_LIBRARY_PATH
            PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
            export PATH
            LIBRARY_PATH=$ORACLE_HOME/lib:$MMHOME/oracle/lib/bin:$LIBRARY_PATH
            export LIBRARY_PATH
           
            # [Configure Make File]:
            cd $INSTALL_DIR/rms/oracle/lib/src
            cp -f platform_linux_oel_x86_64.mk platform.mk
            ./oramake
           
     # [Compile Batch Libraries ]
            cd $INSTALL_DIR/rms/oracle/lib/src
            make -f retek.mk depend 2>&1 | tee libdpnd.log(这句话需要key进去,不能copy 忽略警告)
            cd $INSTALL_DIR/rms/oracle/lib/src
            make -f retek.mk -r retek rms resa 2>&1 | tee libretek.log
            #这次make 一次性通过,居然没有出什么错误。 早知道这样,就应该在开始的时候,一次性的把12.0.0-12.0.7 的原文件全部累堆在一起。
                       
            #[To install batch libraries]
            make –f retek.mk install
             
            #[Compile Batch Source Code]
            cd $INSTALL_DIR/rms/oracle/proc/src
            make -f mts.mk rms-depend recs-depend rtm-depend resa-depend 2>&1 | tee srcdpnd.log (key 进去)
            #会有警告 stddef.h 找不到,不用管它,是makedepend 本身的搜索路径有问题,gcc没有问题。
            make -f rms.mk PRODUCT_PROCFLAGS=dynamic=ansi ditinsrt(key 进去)
            #正常。
           
           
            cd $INSTALL_DIR/rms/oracle/proc/src/
            make -f mts.mk rms-ALL recs-ALL resa-ALL rtm-ALL 2>&1 | tee srcall.log(key 进去)
            #出现错误:file : sacrypt.pc ; statement : PLS-S-00201, identifier ‘DBMS_CRYPTO.ENCRYPT_AES128’ must be declared
            #分析ENCRYPT_AES128 是 package DBMS_CRYPTO中声明的常量。
            #在DBMS_CRYPTO package 中可以查到:
            #ENCRYPT_AES128     CONSTANT PLS_INTEGER            :=     6;  — 0x0006
            #以rms12dev 执行 SELECT DBMS_CRYPTO.ENCRYPT_AES128 FROM dual 时也报无效的标识符错误。
            #权限问题
            #$ORACLE_HOME/bin/sqlplus ‘/as sysdba’
            SQL>grant execute on DBMS_CRYPTO to rms12dev with grant option;
            再执行Make
            #又出问题啦:
            #SART_THTEND 重复定义;原因:这是以前版本在build的时候因为缺少这个定义而自己加进去的,现在新版本的
            #make已经修正了,所以这自己添加的内容得去掉。
            vi saimptlog_rounding.pc
     #去掉 const char *SART_THTEND=”E”;  #const char *SART_THTTSA=”S”;
     vi saimptlogfin.pc
     #去掉 #const char *SYSI_MLA=”M”;
            #再执行Make
            #这回成功了。
            #小结,如果一开始 就直接对batch的源文件堆叠到12.0.7的话,应该只需要执行grant execute on DBMS_CRYPTO to rms12dev with grant option; 就可以顺利make 通过了,不需要走那么多弯路。
           
            #[To install batch programs ]
            make -f mts.mk rms-install recs-install resa-install rtm-install
            #成功完成
              
============================================================
            #安装种子数据(基本设置)
            #原来已经装好了,但是因为打了DBpatch,所以又要重装了.
            unzip 5985761.zip
           
            STAGING_AREA=/d01/app/retail/rms/12.0.3/linux_hotfix
            export STAGING_AREA  
            INSTALL_DIR=/d01/app/retail/rms/db
            export INSTALL_DIR
            ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
            export ORACLE_HOME
            ORACLE_SID=RETL
            export ORACLE_SID
            NLS_LANG=AMERICAN_AMERICA.UTF8
            export NLS_LANG
            PATH=$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/dcm/bin:$INSTALL_DIR/rms/oracle/lib/src:$PATH
            export PATH
           
            确认如下条件成立:
            1) SYSTEM_OPTIONS.INCREASE_TSF_QTY_IND,RPM_RIB_IND,RTM_SIMPLIFIED_IND,TSF_AUTO_CLOSE_STORE,TSF_AUTO_CLOSE_WH  更改成可以为NULL;
            2) ribdoctypes.sql 是经过更改后的, 使用两个数据文件进行sqlldr的. (把$INSTALL_DIR/cux-seed-rib-data/* 覆盖到$INSTALL_DIR/data/)
           
            #脚本准备(已完成 参考上文的seeddata安装)
            #先删除
            cd $STAGING_AREA/seed_data/delete_scripts
            echo @removeRmsDemoData.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            echo @removeRmsSeedData.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            #echo @delete_check.sql | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            在PLSQLDEVELOPER 中 执行delete_check.sql 然后看output 中尚未删除的表
            如果存在则手工删除(truncate 或者 delete from)
         #如果无法删除,一般是由外健引用,可用Toad的Schema browser 看表的referential 查看相关外键,先删除引用表的数据
         #解决所有未删除的数据,知道删除干净。
         #查找外键语句:SELECT * FROM USER_CONSTRAINTS WHERE CONSTRAINT_TYPE=’R’ and table_name=表名
         #失效外健可用如下语句:ALTER TABLE RPM_WORKSHEET_VIEW_COL DISABLE CONSTRAINT RWC_RWN_FK;

            #重建
            cd $INSTALL_DIR/data
            rm -f *.log
            $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            SQL>@rmsseeddata.sql
            SQL>username/password@database? rms12dev/rms12dev@RETL
            SQL>is vat on? Y
            SQL>What is the owner schema? RMS12DEV
            SQL>is vat_classon ? Y
            SQL>Role to add?  DEVELOPER           
            SQL>Enter Calendar type to be used? C
            SQL>Enter week start – week end option?3
            SQL>Enter date to be set as transaction date?
            SQL>Enter date to be set as transaction date (vdate as DD-MON-YYYY): 01-MAR-2008
            SQL>second language?zhs
            SQL>primy language? zhs           
            SQL>Base_contry_id ? CN
            SQL>Primy Currency ? CNY
           
            检查RmsSeedData.log
            #成功的标志是检查rmsseeddata.log没有一个ORA错误。
            #在没有错误的情况下,界面汉化是完整的,如果出现部分错误,汉化可能不完整,系统加载也可能出现各种错误。
            #因为Retail的多语言支持不是通过fmb,而是在数据库里面存储界面上的多语言标签的,所以各版本的的patch虽然有多个语言版本,但实际上只要下载generic版即可。(其他语言的patch 和 gereric实际是一样的,形式主义。)
============================================================
            #安装演示数据(Demo数据)
            #demo 的数据主要在 general_data_installb.pls 中 ,该文件只是在12.0.1-12.0.2 patch 和 12.0.3 hotfix中存在,在以后的patch中都不存在。
            #general_data_installb.pls的最新版本是在12.0.3 hotfix中的。
           
            su oretail
           
            INSTALL_DIR=/d01/app/retail/rms/db
            export INSTALL_DIR
            ORACLE_HOME=/d01/app/oracle/product/10.2.0/db_1
            export ORACLE_HOME
            ORACLE_SID=RETL
            export ORACLE_SID
            NLS_LANG=AMERICAN_AMERICA.UTF8
            export NLS_LANG
           
            cd /d01/rms_stage/5985761/seed_data/db_objects/           
            echo @general_data_installs.pls | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            echo @general_data_installb.pls | $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
           
            #备注;在前面的步骤中 rmsdemodata.sql 已经从12.0.3的linux hotfix(patch 5985761)中Copy 到$INSTALL_DIR/data中了)
            cd $INSTALL_DIR/data
            $ORACLE_HOME/bin/sqlplus rms12dev/rms12dev@RETL
            SQL>@rmsdemodata.sql
                Enter the Base Country Id (2 characters): CN
  Enter the Primary currency: CNY
  Is Multi-channel on? Y or N: Y
  Is Bracket Costing on? Y or N: Y
  What is the owner schema? rms12dev
  Number of items to create: 2000
  Transaction level: 1
         #成功完成
            
            
            
      =========DEMO数据安装完成===========================
     
     
==============
帮助文件配置
==============
                   
      HELP_DIR=/d01/app/retail/rms/app/web_html
      APACHE_CONF=/d01/app/oracleas/OraHome_1/Apache/Apache/conf
      vi /d01/app/oracleas/OraHome_1/Apache/Apache/conf/httpd.conf
      在文件末添加如下行:
     

#PerlRequire
<Location /java/help>
SetHandler perl-script
PerlHandler Apache::Registry
AddHandler perl-script .pl
Options +ExecCGI
PerlSendHeader On
</Location>     
Alias /java/help/ “/d01/app/retail/rms/app/web_html/help/”     
Alias /web_gif/ “/d01/app/retail/rms/app/web_html/gif/”
Alias /en/ “/d01/app/retail/rms/app/web_html/helpfiles/english/”
Alias /EN/ “/d01/app/retail/rms/app/web_html/helpfiles/english/”
Alias /zhs/ “/d01/app/retail/rms/app/web_html/helpfiles/english/”
Alias /ZHS/ “/d01/app/retail/rms/app/web_html/helpfiles/english/”
Alias /english/ “/d01/app/retail/rms/app/web_html/helpfiles/english/”
Alias /temp/ “/d01/app/retail/rms/app/web_html/temp/”     
     
      重启动Apache
      ORACLE_HOME=/d01/app/oracleas/OraHome_1
      export ORACLE_HOME
      $ORACLE_HOME/opmn/bin/opmnctl status -l
     
      $ORACLE_HOME/opmn/bin/opmnctl @cluster restartproc ias-component=WebCache
      $ORACLE_HOME/opmn/bin/opmnctl @cluster restartproc ias-component=HTTP_Server
      $ORACLE_HOME/opmn/bin/opmnctl @cluster startproc ias-component=HTTP_Server
      http://syfr12:7777/forms/frmservlet?config=rms

RIB安装

/*********************************************************************
Hand Co,ltd   Copy Right 2008-2009 Reserved  RIB 安装日志                          
–Created by       :  yunfang.shang@hand-china.com
–Creation Date    :  2008-10-2
–Version          :  1.0 
======                Update History                         =========
–2008-10-3  version 1.0  created

**********************************************************************/

概述:RIB可以使用OAS 或者 Seebeyond e*Gate 作为Jms Server ; 在Retail R12版本上比较成熟的集成方案还是使用Seebeyond e*Gate
Seebeyond e*Gate 简单的说就是个消息服务器,和ActiveMQ 是一类性质的产品.只不过它是个商业产品,在可靠性和易用性方面比ActiveMQ
要强很多.

      Seebeyond e*Gate 包括如下组件:
      1)Registry host
      2)Participating host
      3)GUI hosts
      4)add-ons
     
      解开: B30703-01_seebeyond_505_gui_doc.zip 后,按照doc目录下的eGate_Install_Guide_SRE.pdf 进行安装.
      安装前需要先安装jdk1.5
      在安装
     
1\ 安装vmware for linux
   上传VMware-workstation-5.5.1-19175.tar.gz 到/d01
   解压缩
   cd /d01/vmware-distrib
   ./vmware-install.pl  
   提示配置参数时,全部使用默认值.

2\ 在vmware 上安装 linux RHEL 4.6
   不多说了,一般人都会。
   安装完后注意安装一下vmware-tools
   (备注:实验证明host=Windows下的虚拟机创建的vmdk 在host=linux 下的虚拟机同样可用,所以linux可以不用重新安装直接拷贝一个vmdk过来就可以了)
  
3\ 安装SeeBeyond e*Gate
   参考:1  B30703-01_seebeyond_505_gui_doc\docs\eGate_Install_Guide_SRE.pdf ->Installation Instructions for Linux 章节进行安装
        2  RIB\B31315_01_doc\rib\pdf\12014\rib-12014-ig.pdf->SeeBeyond Install Notes 章节
   先下载个jdk1.5安装好
  
   groupadd egate
   useradd -g egate egate
  
   #3.1安装registry host 和 particpating host
   上传 B30704-01_seebeyond_505_hosts.zip 到 /d01/seebeyond_505_hosts  
   cd /d01/seebeyond_505_hosts
   unzip B30704-01_seebeyond_505_hosts.zip  
   chmod -R 755 *  
   ln -s /usr/bin/gunzip /usr/bin/uncompress 
   chown -R egate:egate  /d01/seebeyond_505_hosts
   su egate
   cd  /d01/seebeyond_505_hosts/setup
   ./setup.sh
   #以下没有特别提示,都选默认值,有特别提示,按提示操作
        Installation type (choose one):
        >2
        Choose Registry Replication Option.
        >2
        Enter Administrator password for this Primary Registry:
        >STC
        Choose participating host platform to install in repository.
        >7
        >5
        >0
        e*Gate Registry Server installation completed.
        #Registry host 安装完成
        #接着安装Participating Host
        Installation type (choose one):
        >1
        #在进行之前,关闭客户端进程,打开另一个终端
             ps -A | grep stcinstd.exe
             kill -9 XXXX
             ps -A | grep stccb.exe
             kill -9 xxxx
        Please enter the Java 2 SDK Installation path (e.g. /opt/java1.3):
        >/jdk1.5.0_16/jre
        Please specify the schema for which your control broker will be started
        >
        Enter password for Administrator:
        >STC
        Installation type (choose one):
        >0
        #完成安装. 期间有一个错误: clock2timestamp…权限不够,不影响其继续完成.
       
        The shell scripts
   egateclient.sh and
   egateclient.csh
 were created in /home/egate/egate/client.
 You must execute these scripts or add their contents to
 your .profile or .cshrc file prior to executing e*Gate
 apps from the command line.
 
   #3.2安装addons 
   上传 B30705-01_seebeyond_505_addons.zip 到 /d01/seebeyond_505_addons
   su root
   cd /d01/seebeyond_505_addons
   unzip B30705-01_seebeyond_505_addons.zip  
   chmod -R 755 *  
   chown -R egate:egate  /d01/seebeyond_505_addons
   su egate
   cd  /d01/seebeyond_505_addons/setup
   ./setup.sh
   #以下没有特别提示,都选默认值,有特别提示,按提示操作
        Installation type (choose one):  
        >1   
        安装出错: Could not run stcaclutil.exe Please check your username, password
        google ,metalink未果.
  
   # 重新安装 3.1 ,这次使用root用户,而不是egate用户.
     3.1 重装完成.没有任何错误,安装过程中也不需要停止客户端,做什么kill -9 XXXX 之类的动作.
     3.2 安装addons ,这次没有出现 Could not run stcaclutil.exe 之类的错误.
         Choose Add-on categories to install.
         >1
         Select one of the following to install.
         >2
         >6
         >0
         Choose Add-on categories to install.
         >0
         Installation type (choose one):
         >0
         #安装完成,没有任何错误.
        
   # 小结:虽然seebeyond的安装文档不建议用root用户安装,但实践表明用root用户安装没有问题,且开机自动启动egate服务.比较好.
          而以普通用户(比如egate用户) 安装过程中会出现多个错误.

 

   —————————————
   #3.3 安装GUI
   —————————————
   #准备一台 winxp的虚拟机
   #修改hosts ,添加 192.168.1.65 egate.vicp.net egate
   #安装jdk1.5
   #开始安装gui
   #安装时要求选择语言时,选择英语
   #安装时要求录入registry host时,输入egate ;Administrator 密码录入STC
   #安装完成后,把<jdk_home>\lib\tools.jar 拷贝到 d:\egate\cline\jre1.3\lib\
   #错误:Registry client error:not ready
   #这个错误是因为egate registry host 的服务启动模式不匹配。
   #这个错误可以暂时忽略,下文有解决办法。(其实就是用RIB带的egate启动命令启动服务后,就可以连上了)
  
   —————————————
   #3.4 安装rib
   —————————————
   cd /opt
   mkdir ribinstall
   #上传如下文件到 /opt/ribinstall
   #p5635294_1200_GENERIC_1201_infra.zip
   #p5635307_1200_GENERIC_1201_rms.zip
   #p5635310_1200_GENERIC_1201_rpm.zip
   #解压缩
   cd /opt/ribinstall
   unzip p5635294_1200_GENERIC_1201_infra.zip
   unzip rib_12.0.1_install.zip
   tar -xvf ribcommon1201_eng.tar
   tar -xvf  ribobjects1201_eng.tar
   tar -xvf riha1201_eng.tar
   tar -xvf rdmt1201_eng.tar
   unzip p5635307_1200_GENERIC_1201_rms.zip
   tar -xvf ribpak1201forrms1201_eng.tar
   unzip p5635310_1200_GENERIC_1201_rpm.zip
   tar -xvf ribpak1201forrpm1201_eng.tar
  
   chmod -R 755 *
   #上传hibernate2.jar 到/opt/ribinstall/RIB1201/external-lib
   cd /opt/ribinstall/RIB1201
   cp egate_profile egate_profile.bak
   vi egate_profile
   
      export EHOME=/opt/egate
      export RETEK_INSTALL_DIR=/opt/ribinstall     
      export EGATE_SERVER_NAME=egate
      export EGATE_SERVER_PORT=23001
      export RIB_SCHEMA=RIB_TST
     
   #执行安装前要先运行这个profile  
   source /opt/ribinstall/RIB1201/egate_profile
   $RETEK_INSTALL_DIR/RIB1201/Retek_Sbyn/start_egate
   #然后使用Schema Designer 连接此egate服务器
   #备注:我曾经在安装完egate服务器后直接用Schema Designer连接此服务器,无论怎么试都连不上。
   #后来把/etc/rt5.d/下属于egate服务器的启动脚本去掉后,重启服务器,然后再使用 start_egate 启动egate服务器后就可以使用Schma Desinger连上了.
   #按照rib-1201-ig.pdf pg16 创建新的Schema RIB_TST
  
   #导入RIB组件(Import RIB Components)
   #在VNC界面上执行xhost +
   #回到Secure CRT
   export DISPLAY=192.168.1.65:0.0  
  
   cd $RETEK_INSTALL_DIR/RIB1201/Migration_Scripts
  
  
   ./install 1201
   #出错,输入的参数是对的,但脚本就是判断为错误的,经检查发现脚本有问题
   #解决: 修改第57行和142行
   # 57行
   # validparms[${arraycntr}]=[${i}] ==> validparms[${arraycntr}]=[${i}]
   # 142行
   # case [${j}] in ==> case ${j} in
   # 修改的原因是原来的脚本比较 case [1201] in [1201] 结果为false ,这不是我们想要的.
   # 如果比较 case 1201 in 1201 结果则为True ,这是我们想要的.
   #再执行
   ./install 1201
  
      #关键问题回答
      Do you wish to do a delta install on the top of the full install of the previous release?
      >NO
      #安装失败
      /opt/egate/RIB/ComponentUtils/scripts directory does not exist.
      Install is exiting.
      #检查,确实无此目录. 而且install脚本在前面也没有把ComponentUtils从安装源拷贝过去.
      #解决方法: 把$RETEK_INSTALL_DIR/RIB1201/ComponentUtils 目录拷贝到此目录
      cp -R $RETEK_INSTALL_DIR/RIB1201/ComponentUtils /opt/egate/RIB/
      #再执行 ./install 1201
      #错误Importeways script failed.
           See /opt/egate/RIB/ComponentUtils/scripts/stderr.txt for details.
    [root@egate Migration_Scripts]# more /opt/egate/RIB/ComponentUtils/scripts/stderr.txt
    ./install[1078]: importeways: not found          
      解决方法:
          PATH=$PATH:.
          export PATH
          cd $RETEK_INSTALL_DIR/RIB1201/Migration_Scripts
          #再执行 ./install 1201  
          #错误: No .zip files exist in /opt/egate/RIB/eways/eways-in.
          cd /opt/egate/RIB/eways
          mkdir eways-in
          解决: 去掉install脚本中,出错分支的exit 语句.让其继续下一步.
          #结果eway 的import未完成,其他都完成
         
          #查找发现 eways-in 的zip文件都在rms的 rib安装包中.
          #拷贝RMS的eway 到$EHOME(这一步安装文档未提及 不过install 脚本会到$EHOME/RIB/eways/eways-in 中寻找.zip进行安装,如果没有文件会出错退出)
          cp -R /opt/ribinstall/RIBforRMS1201/Egate/eways-in  $EHOME/RIB/eways/
          #再执行 ./install 1201  未成功,采用手工导入的方法导入这些zip.
          #手工导入了2个,测试够用了,准备先测试一个eway: dwVendortoRMS .这是从外部导入供应商的。
         
   —————————————
   #3.5 配置rib
   —————————————
   #按照rib-1201-ig.pdf ->RIB Schema Configration 进行配置。
   #step 1-6 按install guider操作。
  
   #step4,要求能打开jms server administrator.
   #备注:jms administrator 在 Schema Manager中,不在Schema Designer中。
   #jms administrator 试图打开 egate_iqmgr ,但这个egate_iqmgr上面的partcipating host 是inactive 的.
   #egate_iqmgr没有在24053端口上侦听
   #所以无法打开,
   #到了这一步,在GUI中发现一个问题:
   #我看到有两个partcipating host : egate(inactive) 和 egate.vicp.net
   #egate是inactive的,而导入的eway都到了这个partcipating host中了,而且eway导入到哪个partcipatin host无法选择.
   #这就有问题了,  会什么会有两个partcipatin host, 为什么默认导入eway时会被导入到一个inactive的partcipating host中?
   #检查egate的log发现有提示 ” at lease one second registry host should be installed”
   #是否必须装second registry host?  
  
   #setp 7
   cd /opt/egate/client/classes
   cp hibernate.cfg.xml hibernate.cfg.xml.bak
   vi hibernate.cfg.xml
   #按要求修改
  
   #step9
   cp -f $RETEK_INSTALL_DIR/RIB1201/ThirdPartyLib/oracle/classes12.zip $EHOME/server/registry/repository/default/ThirdParty/oracle/classes/
   cp -f $RETEK_INSTALL_DIR/RIB1201/ThirdPartyLib/oracle/classes12.zip $EHOME/client/ThirdParty/oracle/classes/
  
   配置完成后启动 RIB
   # Egate.txt 列出了所有需要被启动的eway;
   cp -f /opt/ribinstall/RIB1201/Egate/Eways/Egate.txt /opt/egate/
   source /opt/ribinstall/RIB1201/egate_profile  
   $RETEK_INSTALL_DIR/RIB1201/Retek_Sbyn/start_rib ALL
   #有一个错误:stccmd: error while loading shared libraries: libncurses.so.4
   #解决:google ->
          cd /usr/lib
          ln -s libncurses.so.5.0 libncurses.so.4
          ldconfig
   $RETEK_INSTALL_DIR/RIB1201/Retek_Sbyn/stop_rib ALL
   $RETEK_INSTALL_DIR/RIB1201/Retek_Sbyn/start_rib JMS SUB TAFR
   #JMS server启不来
   #查脚本发现jms名称来自etate.txt 第一行,但这个名称在Schema designer中看不到. 能看到的是egate-iqmgr
   #结合Step4的问题.决定重新安装egate,安装时选择安装second registry host.
   #并在安装完成egate,但尚未安装rib前登陆 schema designer检查有几个partcipating host? 哪个是默认active的?
   #删除 /opt/egate目录  
   #重新按照egate安装步骤进行安装
   #这次比较有意思,安装后,用Schema designer 可以连接,用不着停止服务再使用$RETEK_INSTALL_DIR/RIB1201/Retek_Sbyn/start_egate
   #看来以前有经验主义错误.
   netstat -lntp 可以看到有stciqmgrd.exe 在25551端口侦听
   #但是schema designer中依然看到两个partcipating host : egate(inactive) 和 egate.vicp.net .并且egate_iqmgr 是在egate 下的.
   #更改etd/hosts
   #原来192.168.1.65 egate.vicp.net egate
   #改成: 192.168.1.65 egate
   #重新安装在导入default Schema时卡住了,经分析是网络设置中 hostname=egate.vicp.net ,但hosts中没有对egate.vicp.net的解析.
   #把hostname 改成 egate重新安装,一切正常.
   #用Schema desinger连接后,打开myschma查看只有一个 partcipating host了 : egate ,在这个egate下也没有任何iqmgr.
                            打开default查看有两个partcipating host : egate(inactive) 和_STC_DEFAULTS_.host(inactive) , 在egate(inactive) 下有iqmgr: egate_iqmgr.
                            打开registryReplication 看只有一个partcipating host : egate ,这个egate下有egate_iqmgr
                           
   #用Schema designer新建了一个Schema RIB_TST
   #新建完后,RIB_TST下有个partcipating host : egate(inactive)
   #但是重新启动后($RETEK_INSTALL_DIR/RIB1201/Retek_Sbyn/start_egate) 再打开RIB_TST看 egate 已经是active了
   #继续安装RIB
   #按照前文./install 1201 进行.
  
   #发现安装时,脚本曾试图安装一个iqmJMS
   Import 1201 contains an iqmJMS.
   Calling importeways script to import iqmJMS with parameters:  egate 23001 RIB_TST Administrator STC
 ..
 
 ****************************************************
 Importeways script failed.
 See /opt/egate/RIB/ComponentUtils/scripts/stderr.txt for details.
 
 This install attempt failed.
 
 Install is exiting.
 
 **************************************************** 
    #但失败了.
    #这个需要手工安装,文件在目录:
    ${RETEK_INSTALL_DIR}/RIB${inputparms[${count}]}/Egate/Common_Components/iqmJMS.zip
    #使用Schema designer手工安装
   
    #所有的eway 安装失败,这些也需要手工安装
   
 ****************************************************
 Importeways script failed.
 See /opt/egate/RIB/ComponentUtils/scripts/stderr.txt for details.
 
 This install attempt failed.
 
 Install is exiting.
 
 ****************************************************
    #先安装两个eway 用于测试. 其他以后再装(有几十个呢)
   
    #使用脚本启动RIB
    $RETEK_INSTALL_DIR/RIB1201/Retek_Sbyn/start_rib ALL
    #错误 /opt/ribinstall/RIB1201/Retek_Sbyn/start_rib[248]: /opt/egate/start_cb: not found 路径不对
    #解决:
    cp $RETEK_INSTALL_DIR/RIB1201/Retek_Sbyn/start_cb /opt/egate/
    #再启动
    $RETEK_INSTALL_DIR/RIB1201/Retek_Sbyn/start_rib ALL
    #卡在启动jms server的地方了 
   
    #broke是启动了, 但iqmgr还是没有起来,用schema manager查看,可以看到broke 已经up了,但其他都是红色,Down
    #如何启动iqmJMS 和其他eway呢?
   
    #解决vi start_rib
    把 export REG_HOST=localhost  修改为  export REG_HOST=egate
    #在执行
    ./start_rib ALL
    #成功,jms server和两个eway都起来了(备注,我修改了 $EHOME/Egate.txt ,只保留了iqmJMS和两个eway:
    ewFrtTermToRMS is up
    ewVendorToRMS is up
   
   
    #用Schema manager  查看iqmJMS已经起来了,但是eway还是没有起来.
    #但如果在Control tab页针对这个eway 执行start命令则得到的反馈是该eway已经启动.是否Schema manger的状态检测有问题?
    #明天继续研究.