简介:这份文档面向 Opics 系统项目的实施与运维人员,提供从部署到日常维护的完整操作指引,适合需要独立完成系统搭建、配置与排障的初中级技术人员参考。压缩包内为 1 个 doc 文件,约 7.15MB,内容按章节组织,涵盖系统总体架构与软硬件清单、安装步骤与目录权限定义、创建 Opics 数据库及 ODBC 配置、OSYS 批量处理、Rate Feed 路透终端与风险模块配置,并延伸至 ALM 安装、报表系统接口和系统运行维护等模块,目录层级清晰,便于按实施阶段逐章查阅。目前已有 494 人学习,可作为项目交付时的现场对照手册,也可用于梳理各组件之间的依赖关系与配置要点,帮助读者减少试错、快速定位安装与维护中的关键环节。
1. 从一台 Dell 2850 说起:Opics 这套环境为什么总在“装完才出事”
上周帮一个做资金交易系统的朋友看环境,一台 Dell 2850 上 Windows Server 2003 英文版刚装完,Citrix 也起来了,结果业务同事一登录 Opics 客户端就报错,查了半天发现是opx.ini里OPXCOMMON路径还指着上一台机器的用户目录。这种“装完能启动、一用就翻车”的情况,在 Opics 这类老牌资金交易系统上太常见了。它不像现在一个 Docker 镜像就能跑起来的东西,Opics 的安装是一整套硬件、操作系统、数据库、中间件、客户端层层咬合的工程:Oracle 9.2.0.7 跑在 AIX 5.3 上,文件服务器和 Citrix 跑 Windows 2003,Risk 服务器单独一台刀片,批量机又是另一台 PC。哪一层的版本、字符集、目录权限没对齐,后面就是连锁反应。这篇笔记按我实际装过的一套环境来写,从版本选型、目录规划、ODBC 配置到 Rate Feed 和 OSYS 批量,最后落到怎么验证跑通,新手能照着走,熟手能对照看版本和参数取舍。
2. 装前把环境列清:Opics 的硬件、系统与版本对照
Opics 这套系统对环境的挑剔程度,放在今天看几乎是“考古级”的。它不是一个单体应用,而是由数据库服务器、文件/Citrix 服务器、Risk 服务器、批量机、利率导入机等多台机器组成的分布式部署。装之前如果不把每台机器的角色、操作系统版本、依赖软件列清楚,后面装到一半发现某台机器缺 Oracle Sql Net 客户端或者字符集不对,返工成本极高。我一般会先画一张对照表,把每台机器的职责和软件清单钉死,再动手。
2.1 五类机器的角色划分与软件清单
按手册里的架构,这套环境至少涉及五类机器,每类的软件栈不一样,装的时候顺序也有讲究。下面这张表是我整理的环境对照,装之前建议先照着核对一遍,缺什么补什么。
| 机器角色 | 硬件 | 操作系统 | 关键应用软件 |
|---|---|---|---|
| Oracle 数据库服务器 | IBM pSeries ×2 | AIX 5.3 | Oracle 9.2.0.7 for AIX64 |
| 文件服务器 / Citrix 服务器 | Dell 2850 ×2 | Windows 2003 英文版(装中文字符集) | Citrix Server(20 用户)、Terminal Server、Office 2003 英文版、Oracle Sql Net 客户端、Opics 客户端、Opics Risk 客户端 |
| Opics Risk 服务器 | Dell 1855 刀片 | Windows 2003 | Oracle Sql Net 客户端、MQ、Office 2003 英文版 |
| 批量机 | Dell PC | Windows 2003 | Oracle Sql Net 客户端、Opics 客户端、Citrix 客户端 |
| 利率导入及风险客户端 | Dell PC | Windows 2003 | Oracle Sql Net 客户端、Office 2003 英文版、Opics 客户端、Citrix 客户端 |
这张表里最容易被人忽略的是“英文版系统 + 中文字符集”这个组合。Windows 2003 英文版本身不带中文支持,但 Opics 的报表、文本证实模板里会有中文内容,所以装完系统第一件事就是补中文字符集和微软中文输入法,否则后面 Office 打开模板就是乱码。另一个坑是 Oracle 客户端版本,数据库是 9.2.0.7,客户端侧的 Sql Net 最好跟服务端大版本对齐,别拿一个高版本客户端去连 9i,ODBC 驱动匹配不上是常事。
2.2 版本选择的取舍:为什么是 Oracle 9.2.0.7 和 AIX 5.3
这套环境是 2007 年前后的配置,放到今天当然有更新的选择,但如果是要复现或维护一套既有系统,版本就不能随便动。Oracle 9.2.0.7 是 9iR2 的一个补丁集版本,选它而不是 9.2.0.1,主要是稳定性补丁已经打全,Opics 的数据库脚本在这个版本上验证过。AIX 5.3 配 pSeries 也是当年 IBM 小型机的主流组合,64 位 Oracle 在这上面跑得稳。
我一般会提醒一句:如果是在新环境里重建,数据库版本尽量跟原生产保持一致,别自作主张升到 10g 或 11g。Opics 的建库脚本、ODBC 配置、甚至某些 SQL 写法都是针对 9i 调的,升版本带来的隐式类型转换、字符集默认值变化,足够让你排查一整天。字符集这块,建库时选对 NLS_CHARACTERSET 很关键,中文环境常见做法是 ZHS16GBK,建完库用SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%';确认一遍,别等数据进去了才发现字符集不对。
2.3 装前检查清单:字符集、客户端、共享目录
动手前我会过一遍这几项,都是后面步骤的前置条件:
- 数据库服务器 Oracle 已按独立文档装好,监听正常,能用 sqlplus 连上。
- 文件服务器 Windows 2003 英文版已补中文字符集和微软中文输入法。
- 每台需要连库的机器都装了对应版本的 Oracle Sql Net 客户端,并能用 tnsping 通。
- 文件服务器上规划好 D 盘目录:
opics、opicsdata、opxacc,后面所有安装都围绕这三个目录展开。 - Citrix 用户账号在 Windows 里先建好,权限给到读写。
提示:字符集和 Sql Net 这两项如果装完系统不先确认,后面装 Opics 客户端时 ODBC 建数据源会直接失败,报错信息还很含糊,容易误判成驱动问题。
3. 文件服务器与 Citrix 安装:目录、权限和 opx.ini 三件事
文件服务器是整个 Opics 环境的中枢,客户端程序、公共配置、用户数据都从这里分发。Citrix 则负责把 Opics 客户端和 Risk 客户端发布给业务终端,业务同事本地只装一个 Citrix 客户端就能用。这一章的安装步骤看着琐碎,但每一步都对应后面会踩的坑,尤其是目录权限和opx.ini的路径改写,装错一个字符就是登录报错。
3.1 系统层安装顺序与目录创建
文件服务器 / Citrix 服务器的软件安装有固定顺序,乱序装容易出现组件依赖问题。我按手册的顺序走,并在每步后做了验证:
# 1. 安装 Windows 2003 Server 英文版,装完后补中文字符集 # 控制面板 -> 区域和语言选项 -> 安装东亚语言支持 # 2. 安装微软中文输入法 # 3. 安装 Citrix Server(20 用户授权) # 4. 安装 Terminal Server # 5. 安装 Office 2003 英文版,至少选 Access 和 Excel # 6. 安装 Oracle Sql Net 客户端,配置 tnsnames.ora 指向数据库这段顺序里,Citrix 要在 Terminal Server 之前或按厂商文档顺序装,Office 放在后面是因为它依赖系统组件。装完这些,再在 D 盘建三个目录:
# 在 D 盘根目录创建 Opics 运行所需目录 mkdir D:\opics mkdir D:\opicsdata mkdir D:\opxaccopics放应用程序和系统文件,opicsdata是每日备份目录,opxacc放各 Citrix 用户的个人配置和访问文件。这三个目录的用途在后面权限表和备份策略里都会用到,名字别改,Opics 的程序里很多路径是写死相对这三个目录的。
3.2 解包 Opics 软件包与目录权限定义
把 Opics 系统软件包拷到服务器后,解到D:\opics下,解包后会出现一批子目录,包括DOCS、OPXACCESS、OPXARC、opxdb、opxexe、opxjob、opxlog、opxpwd、opxrpt、opxsec、opxsys、opxupr、scripts、source、Zdata61等。这些目录的权限不是一刀切给 Everyone 读写就完事,手册里给了一张很细的权限矩阵,一般用户、系统管理员、批量三类角色对每个目录的读、写、删除、执行权限都不一样。
我一般会按这张矩阵用 icacls 批量设,核心原则是:opxexe应用程序目录普通用户只读可执行,opxlog日志目录普通用户可写,opxpwd、opxsec这类权限配置文件只有管理员能写,opxjob批量步骤列表批量账号要能读写。下面是一个设置示例,实际按矩阵逐目录调整:
# 示例:opxexe 目录,普通用户只读+执行,管理员完全控制 icacls D:\opics\opxexe /grant "Users:(OI)(CI)(RX)" /grant "Administrators:(OI)(CI)(F)" # 示例:opxlog 目录,普通用户可写(日志要落盘) icacls D:\opics\opxlog /grant "Users:(OI)(CI)(M)" /grant "Administrators:(OI)(CI)(F)" # 示例:opxpwd 权限配置目录,仅管理员可写 icacls D:\opics\opxpwd /grant "Users:(OI)(CI)(R)" /grant "Administrators:(OI)(CI)(F)"(OI)(CI)表示对象继承和容器继承,RX是读加执行,M是修改,F是完全控制。权限设错最典型的后果是:普通用户跑 OSYS 批量时写不了opxlog,进程静默失败;或者反过来,普通用户能改opxpwd,权限配置被误改导致登录异常。设完权限后,共享D:\opics,给相应读写权限,再把D:\opics映射为 M 盘,很多客户端配置里引用的是 M 盘路径。
3.3 Citrix 用户目录与 opx.ini 改写
Citrix 用户是这套环境里最容易出问题的地方。每个 Citrix 用户登录后,Opics 需要知道他的公共目录和个人访问文件目录在哪,这个信息就写在用户 Windows 目录下的opx.ini里。手册的做法是:在 Windows 里建好一批 citrix 用户(如 citrix5011、citrix3053 等),在D:\opxacc下为每个用户建同名目录,目录里再建opxacc和opxcom两个子目录,然后把C:\windows\opx.ini拷到每个用户的 Windows 目录下并改写路径。
[SETTINGS] PCID=OPX001 OPXCOMMON=D:\OPXACC\citrix3053\OPXCOM OPXACCFILES=D:\OPXACC\citrix3078\OPXACC LASTID=GZT这段配置里,OPXCOMMON和OPXACCFILES两个路径必须改成对应用户自己的目录,PCID是终端标识,LASTID是上次登录标识。我见过最常见的翻车就是批量拷贝opx.ini时忘了改路径,所有用户都指向同一个目录,结果 A 用户的操作覆盖了 B 用户的配置,登录时报“配置文件被占用”或者数据串号。稳妥做法是写个脚本按用户名替换:
# 为每个 citrix 用户生成独立的 opx.ini,路径按用户名替换 for /f %%u in (citrix_users.txt) do ( copy C:\windows\opx.ini C:\Users\%%u\opx.ini powershell -Command "(Get-Content C:\Users\%%u\opx.ini) -replace 'citrix3053','%%u' -replace 'citrix3078','%%u' | Set-Content C:\Users\%%u\opx.ini" )citrix_users.txt里一行一个用户名。替换完建议抽查两三个用户的opx.ini,确认OPXCOMMON和OPXACCFILES都指向自己的目录。最后在 Citrix 里发布 Opics、Opics Risk、Convert 三个应用,业务终端装 Citrix 客户端就能访问。
4. 数据库、ODBC 与 Risk 安装:连接层最容易翻车的地方
Opics 的文件服务器装完,接下来是让它连上数据库。这一层涉及建库、建 Opics 用户、配 ODBC 数据源、装 Risk 客户端,每一步都是“连接”性质的工作,任何一处参数不对,表现都是客户端连不上库或者连上了查不到数据。这一章把连接层的安装和配置拆开讲,重点放在 ODBC 和 Risk 的配置细节上。
4.1 创建 Opics 数据库与用户
数据库服务器上的 Oracle 按独立文档装好后,需要为 Opics 建库和建用户。建库的字符集前面提过,中文环境用 ZHS16GBK。建 Opics 用户时给足表空间和权限:
-- 创建 Opics 用户并授权(在数据库服务器上以 sysdba 执行) CREATE USER opics IDENTIFIED BY "opics_pwd" DEFAULT TABLESPACE OPICS_DATA TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON OPICS_DATA; GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE SYNONYM TO opics; GRANT CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE TO opics;DEFAULT TABLESPACE指向专门给 Opics 建的表空间,别用 SYSTEM。QUOTA UNLIMITED是给足配额,Opics 的脚本会建大量表和索引。授权里CREATE VIEW、CREATE SYNONYM、CREATE PROCEDURE都是 Opics 建库脚本需要的,少一个后面跑脚本就报权限不足。建完用户,用 Opics 提供的建库脚本(在scripts目录下)以 opics 用户登录执行,建表和初始数据。
4.2 ODBC 数据源配置与验证
ODBC 是 Opics 客户端和 Oracle 之间的桥。在文件服务器和每台需要直连库的机器上,都要配一个系统 DSN。步骤是:控制面板 → 管理工具 → 数据源 ODBC → 系统 DSN → 添加 → 选 Oracle 驱动 → 填数据源名、TNS 服务名、用户名密码。
# 典型 ODBC 配置项(以 Oracle 9i 驱动为例) Data Source Name: OPICS TNS Service Name: OPICSDB # 对应 tnsnames.ora 里的服务名 User ID: opics配完别急着点确定,先点“Test Connection”,输入密码测试。测试通过只说明网络和监听通,还要用 Opics 客户端实际登录一次才算数。常见失败原因有三个:tnsnames.ora里服务名和 ODBC 里填的不一致;客户端是 64 位但 ODBC 配在了 32 位面板里(或反过来);Oracle 客户端版本和服务端 9.2.0.7 差太多导致驱动握手失败。我一般会在配完后用tnsping OPICSDB先确认 TNS 解析正常,再测 ODBC。
4.3 Opics Risk 安装与 MQ 依赖
Risk 服务器是独立一台 Dell 1855 刀片,装 Windows 2003,软件栈是 Oracle Sql Net 客户端、MQ、Office 2003 英文版。Risk 的安装按独立安装文档走,但有两个点要特别注意:一是 MQ 要先装好并配置队列管理器,Risk 和主系统之间的消息传递依赖它;二是 Risk 连库用的 ODBC 数据源要和主系统指向同一个库,但数据源名可以不同,装完后在 Risk 配置里指定。
# Risk 服务器上确认 MQ 队列管理器运行 dspmq # 输出应为 QMNAME(OPICS_RISK) STATUS(Running) 类似内容dspmq是 MQ 的命令行工具,确认队列管理器处于 Running 状态。如果 Risk 装完启动报连接错误,先查 MQ 是否起来,再查 ODBC 是否能通,最后才怀疑 Risk 自身配置。这个排查顺序能省不少时间,因为 MQ 没起时的报错信息往往指向数据库,容易误导。
5. Rate Feed 与 OSYS 批量:数据进来的两条通道
系统能登录只是第一步,Opics 要真正跑起来,得有数据进来。数据入口主要有两条:一条是 Rate Feed,把路透终端的汇率、利率文件导进系统;另一条是 OSYS 批量,定时跑各种导入和处理进程。这两条通道配不好,系统就是个空壳,报表和风险计算都出不来。这一章讲 Rate Feed 的三段式配置和 OSYS 批量的进程安排。
5.1 Rate Feed 三段配置:路透终端、Risk 客户端、系统映射
Rate Feed 的配置分三段,缺一不可。第一段在路透终端上,把汇率利率文件共享出来:
共享目录:C:\reuters 目录文件:CNY INREST RATE.XLS DLSP.XLS FX RATE.XLS INTETEST RATE.XLS打开这几个 Excel 文件,在 Tools 里选 Share Workbook,勾选 Allow changes by,再在 Tools 里设 AutoSave 每五分钟保存一次。这一步是让路透终端持续把最新报价写进文件。
第二段在 Opics Risk 客户端上,把C:\reuters映射成 Z 盘,然后在 Risk 的 Data → 获取外部数据里,把这四个文件设成数据源,刷新频率设每两分钟一次。映射盘符别用已经占用的,Z 盘是手册里的约定,改了要在 Risk 配置里同步改。
第三段在 Opics 系统里配映射关系:
汇率映射:REVP 期限定义 REVX 表映射 REVI 汇率检查 利率映射:RATE 表映射 RHIS 利率检查然后在 OSYS 里挂导入批处理:D22RATE0001、RTXTOSYS(利率导入)、XTFXOSYS(汇率导入)、ISYSOSYS(BR22 导入)、ISYSOSY1(BR00 导入)。这几条批处理是数据从文件进系统的实际执行者,配完要手动跑一次确认数据落库。
5.2 OSYS 批量进程与二期新增接口
OSYS 是 Opics 的批量调度核心,一期的批量步骤列表在opxjob目录下。二期的批量增加了衍生产品部分,操作流程和一期一致,但多了两个接口进程:北方之星接口的D22SMCL进程,定时读取人民币债券收盘价导入系统做市值重估;Dealing 3000 接口则通过 Rs-232 串口连路透交易系统服务器,定时跑 OSYS 进程读取外汇和拆借交易。
# 手动触发一次 OSYS 批量(示例,实际按 opxjob 里的步骤名) osys /BATCH:D22RATE0001 osys /BATCH:D22SMCL/BATCH:后面跟的是opxjob里定义的批量步骤名。二期升级时,程序更新有严格顺序,按Phase II→case 152042 152412→case 152562→case 154293 154294→case 154681依次更新,每个文件夹下的 readme.doc 都要看。更新前先把d:\opics下opxdb、opxexe、opxjob、opxpwd、opxsec、opxsys、opxupr、scripts、source等目录备份到d:\backup\before change,这是升级翻车时的后悔药。
6. 避坑与排查:五个装 Opics 时真踩过的坑
这套环境装下来,报错信息往往不直接指向根因,下面五条是我实际踩过或者帮人排查过的,按“现象 → 原因 → 解决”记下来,装的时候对照着看能少走弯路。
6.1 客户端登录报配置文件错误
现象:Citrix 用户登录 Opics 客户端,提示配置文件无法访问或路径无效。原因:opx.ini里的OPXCOMMON、OPXACCFILES路径没改成该用户自己的目录,或者D:\opxacc下没建对应的opxacc、opxcom子目录。解决:逐用户核对opx.ini路径,确认D:\opxacc\<用户名>\opxacc和opxcom存在,权限给到该用户读写。
6.2 ODBC 测试通过但客户端连不上
现象:ODBC 里 Test Connection 成功,但 Opics 客户端登录时报数据库连接失败。原因:ODBC 配在了 32 位数据源面板,而 Opics 客户端是 64 位(或反之),两者看到的 DSN 不是同一个。解决:确认客户端位数,在对应位数的 ODBC 管理器里配系统 DSN,配完重启客户端再试。
6.3 OSYS 批量静默失败无日志
现象:手动跑 OSYS 批量,命令返回了但数据没进来,opxlog下也没有对应日志。原因:批量账号对opxlog或opxjob目录没有写权限,进程写日志失败后静默退出。解决:按权限矩阵检查批量账号对opxlog(可写)、opxjob(读写)的权限,用 icacls 补上修改权限。
6.4 Rate Feed 数据不刷新
现象:路透终端文件在更新,但 Opics 里汇率利率一直是旧值。原因:Risk 客户端里映射的 Z 盘断了,或者外部数据刷新频率没设成两分钟,或者 OSYS 导入批处理没挂上。解决:先在 Risk 里确认 Z 盘能打开文件,再查刷新频率设置,最后在 OSYS 里手动跑一次RTXTOSYS、XTFXOSYS确认导入链路通。
6.5 二期升级后程序报版本不匹配
现象:按升级包更新后,客户端启动报程序版本与数据库不匹配。原因:升级包没按顺序打,或者漏了某个 case 目录,导致opxexe和opxdb里的脚本版本不一致。解决:从d:\backup\before change回滚,严格按Phase II→ 各 case 的顺序重打,每个 readme.doc 逐条对照执行,打完确认opxdb里的版本脚本已执行。
注意:升级前备份
d:\opics下核心目录这一步不能省,回滚全靠它。备份目录建议带日期,别覆盖上一次的备份。
7. 装完怎么验证:从登录到批量跑通的一条验证链
装完不等于跑通,Opics 这种多层系统,得有一条从客户端到数据库、从数据入口到批量的完整验证链,逐段确认才算数。我一般按下面这条链走一遍,每段都有明确的通过标准,任何一段不过就停下来查,别往下走。
第一步,客户端登录验证。用一个 Citrix 业务账号登录发布的 Opics 客户端,能进主界面、能打开一个查询窗口,说明 Citrix 发布、opx.ini、ODBC、数据库连接这条链是通的。这一步过了,连接层基本没问题。
第二步,数据入口验证。在路透终端确认四个 Excel 文件在更新,在 Risk 里确认 Z 盘能读到文件,然后在 OSYS 里手动跑一次RTXTOSYS和XTFXOSYS,跑完在 Opics 里查汇率利率表,看有没有当天的新数据。有数据说明 Rate Feed 三段配置都生效了。
第三步,批量验证。手动触发一次日终批量,观察opxlog下是否生成对应用户日志,opxarc下是否生成按日期命名的归档目录,opicsdata下是否生成当天的备份目录。这三个目录都有产出,说明批量链路和备份机制都在工作。
第四步,接口验证(二期环境)。确认北方之星接口的D22SMCL进程能读到债券收盘价并导入,Dealing 3000 接口能通过串口读到交易数据。这两个接口的验证要看具体数据是否落库,不能只看进程有没有启动。
下面这张表是我常用的验证对照,装完照着打勾:
| 验证项 | 操作 | 通过标准 |
|---|---|---|
| 客户端登录 | Citrix 账号登录 Opics | 进主界面,能查询 |
| 汇率利率导入 | 手动跑 RTXTOSYS、XTFXOSYS | 表里有当天新数据 |
| 日终批量 | 触发日终批量 | opxlog、opxarc、opicsdata 均有产出 |
| 备份 | 检查 opicsdata 当天目录 | 目录存在且有数据文件 |
| 二期接口 | 跑 D22SMCL、Dealing 3000 进程 | 交易/债券数据落库 |
这套验证链走完,环境才算真正交付。从那以后我每次装完 Opics,不管多赶时间,都会把这条链从头到尾走一遍,尤其是opx.ini路径和opxlog权限这两处,宁可多花十分钟核对,也不想再经历一次业务登录报错、回头翻半天配置的折腾。希望帮到你。
本文还有配套的精品资源,点击获取