Opics资金交易系统部署运维实战:从环境准备到批处理排障
简介:这份安装维护手册面向Opics系统的实施工程师、数据库管理员及运维人员,用于解决系统从零部署到稳定运行阶段的环境准备、配置调优与日常维护问题。资源为单个doc文档,压缩包大小7.15MB,内容按章节组织,目录结构清晰,便于按需查阅。手册首先介绍Opics系统总体架构,列出硬件、系统及应用软件清单;随后详细说明安装步骤、目录权限定义、数据库创建和ODBC配置,并分别对OSYS批量处理组件和Rate Feed实时数据更新功能给出配置方法;还覆盖ALM安装、报表系统接口以及系统运行维护等内容。对于需要独立完成安装或排查故障的读者,手册中的具体操作路径和参数说明能有效缩短上手时间。已有493人学习下载,适合项目交付、内部培训与日常运维场景参考。
1. 装 Opics 前先看架构:五类机器和三条数据链路
Opics 系统的安装维护,难的不是那套安装包本身,而是它背后一整套立体环境:数据库要跑在 AIX 5.3 加 Oracle 9.2.0.7 for AIX64 上,文件服务器是 Windows 2003 英文版还得装中文字符集,客户端要通过 Citrix 发布,Rate Feed 行情导入还要靠 Excel 共享工作簿一层层往下传。装不好会怎样?头寸算错、汇率导入失败、证实模板打不开,日终报表全是黑匣子。我最初接手这份环境时,光目录权限就核对了三遍。这篇笔记按“环境盘点 → 分角色安装 → Rate Feed 配置 → 常见问题排查 → 验证跑通”的顺序写,适合要部署 Opics 一期、二期,或者正在给存量资金交易系统做迁移维护的运维同学。
2. 环境盘点:AIX 5.3、Windows 2003 与 Opics 目录权限清单
2.1 硬件与软件版本清单:Oracle 9.2.0.7 跑在 AIX 上
先把主机角色理清。Opics 这套环境不是单机版,手册里明确列了五类机器:数据库服务器、文件服务器(兼 Citrix)、Risk 服务器、批量机器、利率导入及风险客户端。数据库服务器是小型机,跑 AIX 5.3,数据库是 Oracle 9.2.0.7 for AIX64;其余机器基本都是 Windows 2003 英文版。注意这里的“英文版”是手册原文要求,不是随便装个中文版就行,后面我会解释字符集为什么这么重要。
| 主机角色 | 硬件形态 | 操作系统 | 关键软件 |
|---|---|---|---|
| Oracle 数据库服务器(2 台) | pSeries 小型机 | AIX 5.3 | Oracle 9.2.0.7 for AIX64 |
| 文件服务器 / Citrix 服务器(2 台) | 2850 机架服务器 | Windows 2003 英文版(安装中文字符集) | Citrix Server 20 用户、Terminal Server 20 用户、Office 2003 英文版(Access、Excel)、Oracle Sql Net 客户端、Opics 客户端、Opics Risk 客户端 |
| Opics Risk 服务器(1 台) | 1855 刀片服务器 | Windows 2003 | Oracle Sql Net 客户端、MQ、Office 2003 英文版、Opics Risk |
| 批量机器(1 台) | PC | Windows 2003 | Oracle Sql Net 客户端、Opics 客户端、Citrix 客户端 |
| 利率导入及风险客户端(1 台) | PC | Windows 2003 | Oracle Sql Net 客户端、Office 2003 英文版、Opics 客户端、Citrix 客户端 |
数据库服务器两台的用意很明确,一主一备,主库出问题备库能立刻顶上。文件服务器也是两台,生产一套、灾备一套,Citrix 和 Terminal Server 同在这台机器上,各 20 用户,业务终端通过 ICA 远程登录,不在本地装 Opics 客户端。Oracle Sql Net 客户端是客户端机器连数据库的必经通道,批量机器和 Risk 服务器上都少不了它。Risk 服务器额外装了 MQ,这个中间件负责风险模块和核心系统之间的消息传递,安装时要确认队列管理器名称和手册一致,不一致的话 Risk 界面能打开但收不到交易消息。
这里要特别提醒字符集的事。Windows 2003 英文版默认区域是英语,不装中文字符集的话,Citrix 用户的中文输入法装不上,Opics 里的中文交易对手名称、证实模板的汉字全都会变成乱码。手册里写“安装中文字符集”,我实操时一般会在安装完系统后立刻打开控制面板的“Regional and Language Options”,在 Languages 页勾选 Install files for East Asian languages,区域格式切到 Chinese (PRC) 并重启一次。这个步骤放在装 Citrix 之前做,否则后续改区域设置会触发一堆组件重新初始化。
2.2 文件服务器目录规划:D 盘三个根目录与二十个解包子目录
文件服务器上,手册要求在 D 盘创建三个根目录:opics、opicsdata、opxacc。三者职责完全不同,opics 是系统程序和配置文件的家;opicsdata 是日终备份目录,每天跑 bbkr 文本备份就落在这里;opxacc 是 Citrix 用户的个人目录,每个用户一个子目录。这三个目录我见过有人图省事全建在 opics 下面,结果备份和程序混在一起,日终归档把程序目录撑爆,属于初期布局没想清楚。
安装包解包后,opics 目录下会生成二十多个子目录。对照手册把主要目录的用途捋一遍:
| 目录名 | 用途 |
|---|---|
| DOCS | 系统使用文档 |
| OPXACCESS | 文本证实模板 |
| OPXARC | 交易数据归档文件,日终按日期生成子目录 |
| opxdb | 假日设置文件 |
| opxexe | 应用程序主目录 |
| OPXFAX | 需传真的文本证实 |
| OPXGRSS | 报表配置文件 |
| opxhlp | 系统帮助文档 |
| opxico | 图标 |
| opxjob | OSYS、BSYS 批量步骤列表 |
| opxlog | 系统日志,每个用户一个日志文件 |
| opxpwd | 用户权限配置文件 |
| opxrpt | 报表文件 |
| opxrva | Opics Risk 相关文件 |
| opxsec | 用户权限配置文件 |
| opxsys | 程序参数文件 |
| opxupr | 客户化参数文件 |
| reg | 注册信息 |
| scripts | 数据库脚本 |
| source | RDA 开发代码 |
| Zdata61 | 原始备置数据 |
另外还有 OPXANA、opxint、opxpub 三个目录,一期里没有启用,二期扩容时才会用到,安装时保持存在就行,不用去动它。解包完成后,D:\opics 要设为共享并映射成 M 盘。这个 M 盘是给谁用的?不是给 Windows 用户当网络盘用的,是给 Opics 客户端程序做路径代号用的。很多配置文件里写的是 M:\opxexe 这种形式,如果你把共享改成别的盘符,客户端登录后链路直接断掉。
2.3 目录权限矩阵:一般用户、系统管理员、批量各能碰什么
目录建好只是第一步,权限矩阵才是这个项目里最值得抄作业的部分。手册里给了一张完整的目录权限定义表,按“一般用户、系统管理员、批量”三类账户分别控制读写、删除、执行权限。我把它简化成实际操作时最容易漏的几条:
| 目录 | 一般用户 | 系统管理员 | 批量 |
|---|---|---|---|
| opxexe(应用程序) | 读、写 | 读、写、删 | 读、写、删、执行 |
| opxjob(批量步骤列表) | 读、写、删 | 读、写、删 | 读、写、删、执行 |
| opxlog(系统日志) | 读、写 | 读、写、删 | 读、写、删、执行 |
| opxsec / opxpwd / opxupr(权限与客户化参数) | 读、写、删 | 读、写、删 | 读、写、删、执行 |
| opxsys(程序参数) | 读、写 | 读、写、删 | 读、写、删、执行 |
| OPXARC(归档) | 读、写 | 读、写、删 | 读、写、删、执行 |
| OPXGRSS(报表配置) | 读、写 | 读、写、删 | 读、写、执行 |
这套权限设计有几个明确的意图。系统管理员账户比一般用户多的核心是 delete 权限,用来清理日志和过期的归档文件,普通用户即使写入了坏文件也不能自己删,必须走管理员;批量账户则比管理员多一个 execute 权限,因为 OSYS 批处理需要直接执行 opxexe 下的程序文件,一般用户和管理员日常操作只需要读和写。opxlog 这个目录我特别提一句,批量账户要有删除权限,是因为 osys 进程跑久了日志极大,批处理日终时要能自己清理旧文件,否则磁盘会很快塞满。权限配错时最典型的现象是:Citrix 用户登录后能打开 Opics 主界面,但一保存交易凭证就报“无法写入文件”,到服务器上一查,NTFS 权限少给了写权限。这类问题查起来最耗时间,因为界面正常给了你一个“系统没问题”的错觉。
提示:Windows 2003 上共享权限和 NTFS 权限是两层独立的。共享层给了 Change,NTFS 层没给写,最终结果还是不能写。配置时两层都要过一遍。
3. 分角色安装:Oracle 9.2.0.7、ODBC 与 Citrix 用户配置
3.1 数据库服务器安装:AIX 5.3 上建 Oracle 实例
数据库服务器是整个 Opics 环境的地基,这块装不好,后面所有客户端连接都会出问题。Oracle 9.2.0.7 for AIX64 在 AIX 5.3 上安装,核心流程是先建 Oracle 用户和文件系统,再跑 Oracle Universal Installer,最后用 Database Configuration Assistant 建实例。手册里只是提到“见 ORACLE 安装文档”,我这里按这个场景下合格运维的做法补全。
# AIX 上创建逻辑卷和文件系统,挂载到 /oracle 和 /oradata mklv -y oracle_lv rootvg 8G crfs -v jfs2 -d oracle_lv -m /oracle -A yes -p rw mklv -y oradata_lv rootvg 16G crfs -v jfs2 -d oradata_lv -m /oradata -A yes -p rw # 创建 Oracle 用户和组 smitty mkgroup smitty mkuser # oracle 用户主组设为 dba,补充组设为 oinstall chown -R oracle:dba /oracle /oradata创建逻辑卷和文件系统的命令,是把新磁盘空间划给 Oracle 用。AIX 5.3 上跑 Oracle 9.2.0.7 有个老坑:系统维护补丁级别不够时,Oracle Universal Installer 会直接报操作系统版本不支持,实际是缺少补丁包。装之前先用 oslevel -r 查一下系统版本,对照 Oracle 安装文档确认补丁要求,别一上来就装,装到一半失败再回头打补丁,清理残留很麻烦。Oracle 安装本身用 oracle 用户登录,解包后运行 runInstaller,按向导走到最后会提示以 root 执行 root.sh,这一步不能省,否则监听器和数据库服务起不来。
实例创建时字符集我一般选 ZHS16GBK。Opics 业务是人民币资金交易,交易对手、证实模板、报表里全是中文,数据库字符集和客户端字符集不一致,查询汇率描述时出来的就是乱码,而且这种问题在安装阶段测不出来,要等到日终跑完报表才发现,排查成本极高。建完库后,用 opics 用户跑 scripts 目录下的建表脚本,导入 Zdata61 目录里的初始备置数据。
-- 用 sysdba 登录,创建表空间和用户(常见做法,具体名字以手册为准) CREATE TABLESPACE OPICS_DATA DATAFILE '/oradata/opics01.dbf' SIZE 4G; CREATE USER opics IDENTIFIED BY opics DEFAULT TABLESPACE OPICS_DATA; GRANT CONNECT, RESOURCE TO opics;这个步骤做完,建议立刻做一次数据库冷备份。因为后面安装 ODBC 和客户端时会在数据库里写连接测试,万一测试把数据弄脏了,还能有个干净起点。两套数据库服务器一套做生产一套做备库,备库用归档日志恢复,才能保证日终 bbkr 备份之外还有一层恢复手段。
3.2 文件服务器安装:中文字符集、Office 组件与共享映射
文件服务器安装顺序,手册里写得很清楚:Windows 2003 英文版 → 中文字符集 → 中文输入法 → Citrix Server → Office 2003 英文版(Access、Excel)→ Oracle Sql Net。这个顺序不能乱,尤其字符集要在装 Citrix 之前配好。输入法用微软拼音,装完字符集后在控制面板的 Regional Options 里把输入法加进去。Citrix Server 安装时选 20 用户模式,和 Terminal Server 的 20 用户授权是两套东西,都要装。
Office 2003 英文版这里有个细节:必须装 Access 和 Excel 两个组件。Opics 的文本证实模板是 Access 格式的,报表很多走 Excel 导出;如果装的是精简版 Office,把 Access 组件省了,后面打开证实模板时直接报“找不到 Microsoft Access 数据库引擎”,这个报错在日志里完全看不出来,只会反复弹窗。Oracle Sql Net 客户端装好后,用 Net Manager 配置到数据库服务器的连接,服务名要和 tnsnames.ora 里的一致。
D 盘三个目录建好后,把安装包解包到 opics 目录,然后设置共享并映射 M 盘:
# Windows 2003 上设置共享,用户列表按实际创建的 Citrix 用户来 net share opics=D:\opics /grant:citrix5011,change net share opxacc=D:\opxacc /grant:citrix5011,change # 在服务器本机会话里映射 M 盘(发布到 Citrix 后,每个用户会话要单独映射) net use M: \\fileserver\opics这里说明一下共享设计的逻辑。D:\opics 共享给所有 Citrix 用户,对应系统安装目录,只给 change 权限,也就是能改文件但不能改共享权限;D:\opxacc 也要共享出来,因为 Citrix 用户的个人目录在服务器上是真实路径,但在发布会话里客户端程序访问的是 UNC 路径。M 盘映射这句话写在这里容易让人误以为一劳永逸——实际上在服务器本机映射的 M 盘不会自动带到每个 Citrix 用户的会话里。我一般会把 net use M: 写进 Citrix 发布应用的登录脚本,让每个用户在建立 ICA 会话时自动映射,而不是手动点一次。
3.3 创建 Opics 数据库与 ODBC:手册只给目录名,落地还得靠这几步
手册第 2.3 节只写了“创建 Opics 数据库和 Opics”,第 2.4 节只写了“安装配置 ODBC”,内容空白。实际安装时,这两步串联了文件服务器和数据库服务器,是最容易让人卡住的地方。
创建 Opics 数据库,不是说在 Oracle 里建一个实例,而是在已经建好的 Oracle 实例中创建 Opics 业务用户和表结构。操作路径是在文件服务器上用 Sql Net 客户端连到数据库,以 opics 用户身份执行 scripts 目录下的建表脚本,按脚本里的 readme 说明执行。然后导入 Zdata61 初始备置数据,这个目录存放的是原始的假日表、币种表、汇率模板等基础数据,不导的话系统起来后基础参数全是空的。
ODBC 配置我一般在文件服务器和批量机器上都做,系统 DSN 指向 Oracle:
[OPICS] Driver=Oracle in OraHome92 ServerName=ORCL DatabaseName=ORCL配置时打开 ODBC Data Source Administrator,在系统 DSN 里点添加,选 Oracle 驱动,ServerName 填 tnsnames.ora 里配置的服务名,然后点 Test Connection 验证。关键是字符集必须和数据库一致,常见做法是在 Oracle ODBC 驱动的高级设置里指定 ZHS16GBK,否则通过 ODBC 读取的交易数据中文全部乱码。这个坑在于:测试连接时显示成功,因为 Oracle 驱动不校验字符集,真正跑批处理时才会把乱码数据写进文件,到时候已经晚了。
3.4 Citrix 用户配置:opx.ini 的四个参数决定数据落在哪
Citrix 用户配置是整个安装过程里最“手工作业”的部分。手册里给了一长串用户名:citrix5011、citrix5010、citrix5012、citrix3080、citrix3078 等等,每个用户都要在 Windows 2003 里创建,赋读写权限。然后在 D:\opxacc 下创建对应的用户目录,每个目录里再建两个子目录:opxacc 和 opxcom。不要把这两个子目录建错位置,Opics 客户端登录后找的就是这两个路径。
[SETTINGS] PCID=OPX001 OPXCOMMON=D:\OPXACC\citrix3053\OPXCOM OPXACCFILES=D:\OPXACC\citrix3078\OPXACC LASTID=GZT这是从 C:\Windows\opx.ini 拷贝到每个用户 Windows 目录下后要改的内容。四个参数各管一件事:PCID 是这个客户端在 Opics 系统里的唯一终端标识,同一台服务器上绝对不能重复,默认是 OPX001,实际配置时按用户或终端编号改;OPXCOMMON 指向公共目录,存放该用户要共享的公共模板和公共文件,这里是 citrix3053 的 OPXCOM;OPXACCFILES 指向个人私有目录,存放当前用户自己的交易文件、草稿和证实文件,这里是 citrix3078 的 OPXACC;LASTID 是用户组或机构标识,同批用户保持一致,手册里用的是 GZT。
OPXCOMMON 和 OPXACCFILES 这两个路径非常容易搞混。我见过有人把两个参数写成同一个目录,结果用户 A 保存的证实文件用户 B 也能打开覆盖,触发权限冲突,日终生成报表时模板互相污染。原则是:公共放 OPXCOM,私有放 OPXACC。每个用户的 Windows 目录是独立的,拷贝 opx.ini 时必须拷到对应用户的 profile 下,不能只拷到默认管理员 profile,否则用户登录后读的还是旧配置。
Citrix 侧最后一步是发布应用程序。在 Citrix 管理控制台里发布三个图标:Opics、Opics Risk、Convert。Convert 是文件转换工具,二期做北方之星数据导入时会用到,发布时别漏掉。业务终端不装 Opics 客户端,只装 Citrix 客户端,通过 ICA 会话访问文件服务器上发布的这三个应用,数据不会留在终端本地,这对资金交易系统的安全边界是有利的。
3.5 Opics Risk 与客户端安装要点
Opics Risk 服务器单独一台 1855 刀片,安装内容比文件服务器少:Oracle Sql Net 客户端、MQ、Office 2003 英文版、Opics Risk 客户端。MQ 的配置要核实队列管理器名,手册里没有给具体名字,实际项目中一般是安装文档附带,装完要跑一次连通测试,确保 Risk 能收到交易消息。批量机器装 Oracle Sql Net、Opics 客户端和 Citrix 客户端;利率导入及风险客户端多装一个 Office 2003 英文版,用来处理 Rate Feed 的 Excel 行情文件。
客户端安装策略我建议统一走 Citrix 发布,不要在各台终端上单独装 Opics 客户端。原因很简单:资金交易系统的客户端版本必须一致,散装客户端很容易出现版本漂移,有的人是 152042 升级包后的版本,有的人还是旧的,日终跑批时数据格式对不上。通过 Citrix 集中发布,服务器上更新一次,所有终端下次登录自动用新版本,运维成本低很多。批量机器上的本地 Opics 客户端是给 OSYS 批处理用的,不受这个限制。
4. Rate Feed 与 OSYS:行情数据从 Excel 进 OPICS 的三层链路
4.1 行情终端侧:Excel 共享工作簿与五分钟自动保存
Rate Feed 是 Opics 的前置行情输入环节,配置分三段:行情终端、Opics Risk 客户端、Opics 系统自身。行情终端上有一个共享目录(手册里对应的是行情终端共享目录,这里统一用 C:\QUOTES 举例说明),目录下放四个 Excel 文件:CNY INREST RATE.XLS、DLSP.XLS、FX RATE.XLS、INTETEST RATE.XLS。分别对应人民币拆借利率、存贷款数据、外汇汇率、集团内部利率。这四个文件是行情源头,后面 Risk 端拉数据全指着它们。
拿到这四个文件后,在 Excel 2003 里依次打开,做两个设置:第一,Tools 菜单里打开 Share Workbook,在 Editing 页勾选 Allow changes by more than one user;第二,Tools 菜单里打开 AutoSave,设置每五分钟自动保存一次。共享工作簿是为了让多个行情维护人员能同时修改不同 sheet 而不互相锁文件,自动保存是为了保证 Risk 端拉取时拿到的不是半天的旧数据。
设置里有个细节:AutoSave 功能默认不在 Excel 2003 的工具栏里,需要在“加载项”里启用,找不到就回 Office 安装盘补组件。共享工作簿模式下,Excel 会用编辑者名字给修改加标记,后续更新数据时看到带方括号的单元格别紧张,那是共享编辑的正常现象。这里最容易翻车的是文件被某个人以非共享方式独占打开,其他用户连接时看到“文件正在使用”的提示,这种情况下 Risk 端刷新数据会失败,但不会报错,因为 Excel 会缓冲读取,表现出来就是数据一直停滞。
4.2 Risk 客户端侧:Z 盘映射与两分钟刷新
Opics Risk 机器上,先把行情终端共享目录映射成 Z 盘,这一步和文件服务器上的 M 盘映射是同一套路。Risk 端有四个自己的工作文件:CNYIR.XLS、DLSP.XLS、FX.XLS、IR.XLS。这四个文件以行情终端的同名文件为数据源,通过 Excel 的“获取外部数据”功能建立连接。
查询名称:CNYIR_FEED 数据源:Z:\CNYIR.XLS 刷新频率:每 2 分钟刷新一次 打开文件时刷新:是在 Excel 2003 的数据菜单里,选择“获取外部数据 → 新建查询”,源类型选 Excel 文件,路径指向 Z 盘对应文件,然后在数据区域属性里设置刷新频率为 2 分钟。这里需要注意的是:Risk 端的 2 分钟刷新和行情终端的 5 分钟自动保存是配合关系,源文件 5 分钟落一次盘,Risk 端最多晚 2 分钟拿到新数据。如果你把刷新频率改成 1 分钟,反而会在源文件还没保存时读到旧数据,形成“数据没变”的假象,排查时容易误判行情中断。实际观察时间戳时,源文件保存时间和 Risk 端数据变化时间相差 2 分钟以内属于正常。
4.3 OPICS 系统侧:REVP、REVX、RATE 映射怎么配
行情文件里的数据是原始市场报价,要让 Opics 业务模块认这些数据,还要在系统侧做映射。手册给的配置项是四张表:汇率映射里 REVP 做期限定义、REVX 做表映射、REVI 做汇率检查;利率映射里 RATE 做表映射、RHIS 做利率检查。
REVP 定义期限段,比如隔夜、一周、一个月这些标准期限;REVX 把行情文件里的币种和期限组合映射到 Opics 内部科目;REVI 是汇率校验规则,比如汇率偏离上一收盘价超过一定比例就拦截。利率侧类似,RATE 表负责市场利率到资金利率的映射,RHIS 做历史利率和当日利率的交叉校验。配置顺序先 REVP,再 REVX,最后 REVI,因为表映射依赖期限定义,校验规则依赖映射关系。如果批处理跑完提示“无此期限”或者“汇率缺失”,检查顺序基本就是往前走:先看 REVP 有没有定义这个期限,再看 REVX 映射是否覆盖该币种,最后看 REVI 的校验阈值是不是设得太严。
这套映射配置,属于装的时候不觉得重要、跑起来全是问题的地方。我见过有人在 REVX 里少配了一个币种对,日终汇率导入时那一行的数据被整体跳过,结果其他币种都正常,只有一个币种的头寸怎么都对不上,查了两天才定位到是映射表漏配。
4.4 OSYS 批处理:D22RATE0001 与二期新增的 D22SMCL
OSYS 是 Opics 的批量调度进程,Rate Feed 导入的数据要经过 OSYS 的批处理步骤才能真正进入业务系统。手册里提到了一个批次 D22RATE0001,下面挂了利率导入和汇率导入两个程序:RTXTOSYS 负责利率导入,XTFXOSYS 负责汇率导入,另外还有 ISYSOSYS 做 BR22 导入、ISYSOSY1 做 BR00 导入。
| 批次 / 程序 | 作用 |
|---|---|
| D22RATE0001 | 日终利率汇率导入的批次控制 |
| RTXTOSYS | 利率导入 |
| XTFXOSYS | 汇率导入 |
| ISYSOSYS | BR22 批量导入 |
| ISYSOSY1 | BR00 批量导入 |
日终批量时,OSYS 按步骤列表依次执行这些程序,Rate Feed 落地的行情文件被读入数据库。二期项目里新增了北方之星接口,核心是 D22SMCL 进程:北方之星系统通过映射网络驱动器的方式连接到 Opics 文件服务器,定时运行 osys 的 D22SMCL,读取人民币债券收盘价数据,自动录入 Opics 进行债券市值重估(Mark To Market)。这个进程配置时要注意网络驱动器的映射不能断,北方之星那台机器重启后映射会丢失,得在计划任务里加一条映射命令。
Dealing 3000 交易终端接口是另一条链路,通过 RS-232 串口线和交易系统服务器通信,定时运行 osys 进程把外汇交易、拆借交易自动导入。串口是老式协议,配置里最麻烦的是波特率和串口号,线松了或者端口被别的程序占用,osys 进程能启动但读不到数据。排查时不要只盯应用日志,先看串口状态是不是通了,这是二期接口最容易忽略的物理层问题。
5. 常见问题排查:安装维护阶段最常翻车的五个点
5.1 现象一:Citrix 用户登录后 OPICS 找不到 M 盘
现象:Citrix 用户通过 ICA 登录后能打开 OPICS 主界面,但点任何菜单都提示找不到 M 盘路径,程序无法正常使用。
原因:共享 D:\opics 时只设了共享权限,NTFS 权限没有给 Citrix 用户;或者 M 盘映射只在管理员会话里执行过,用户会话里没有这个盘符。Windows 2003 的驱动器映射是按会话隔离的,管理员映射的 M 盘不会自动出现在每个用户会话中。
解决:先检查 D:\opics 的 NTFS 权限,给 citrix 用户组至少“读取和写入”级别;再把 net use M: 命令写进 Citrix 发布应用的登录脚本,保证每个 ICA 会话建立时自动映射。验证方法是用测试用户登录后在命令提示符里执行 net use,看有没有对应的 M 盘连接记录。
5.2 现象二:opx.ini 改了,界面还是空白
现象:按手册创建 Citrix 用户并修改 opx.ini 后,该用户登录 OPICS 能看到主界面,但交易列表、证实模板、个人文件全部空白,像是没加载任何个人数据。
原因:opx.ini 里 OPXCOMMON 和 OPXACCFILES 路径写反了,或者 d:\opxacc 下对应的用户目录里没有建 opxacc 和 opxcom 两个子目录。还有可能是 opx.ini 拷到了默认管理员 profile,没有拷到该用户自己的 Windows 目录。
解决:逐一核对 opx.ini 的四个参数,确认 OPXCOMMON 指向子目录 OPXCOM,OPXACCFILES 指向子目录 OPXACC,且实际目录存在。PCID 在同一台服务器上必须唯一,重复会导致用户数据互相覆盖。用该用户登录后检查 Windows 目录下的 opx.ini 是否为修改后的版本,而不是管理员 profile 里残留的旧文件。
5.3 现象三:Rate Feed 上游更新了,Risk 端数据不动
现象:行情终端确认四个 Excel 文件已经保存了最新数据,但 Opics Risk 端对应的文件数据一直不变,刷新没有效果。
原因:行情终端的 Excel 文件没有启用共享工作簿,被某个编辑者以独占方式打开,Risk 端读取时被文件锁卡住;或者外部数据区域的刷新频率设置成了“手动刷新”,没有按两分钟一次的参数配置。
解决:先到行情终端确认四个文件都在 Tools → Share Workbook 里勾选了 Allow changes by more than one user,并启用了 AutoSave 五分钟保存。再回到 Risk 端,打开数据区域属性,把刷新频率改为每两分钟一次,并勾选“打开文件时刷新”。如果文件被独占锁住,找到占用会话关闭即可。
5.4 现象四:opxlog 和 opxarc 把磁盘撑满
现象:系统运行一段时间后,文件服务器 D 盘可用空间快速下降,排查发现 opxlog 目录下 osys 用户的日志文件特别大,opxarc 目录下每天一个归档目录也在持续增长。
原因:osys 进程是实时监控批处理,日志不轮转,长时间运行会积累到几个 GB;opxarc 按日生成归档目录,每个目录里是当日交易数据文件,一个月不清就会占用大量磁盘。
解决:把 opxlog、opxarc、opicsdata 三个目录列入月度运维计划,定期转存到带库,转存完成后删除服务器上的旧文件。手册的建议是一个月转存一次。我在实际操作中会增加一条日终批处理步骤,自动保留最近 30 天的日志,其余压缩后放到归档区,避免月底一次性清理时磁盘已经满了。
5.5 现象五:二期升级后 D22SMCL 起不来,日志报缺表
现象:二期升级程序更新完后,OSYS 里新加的 D22SMCL 进程启动失败,日志提示数据库里缺表或字段不存在,北方之星的债券收盘价数据无法导入。
原因:二期升级包没有按顺序执行。手册里给的更新顺序是 Phase II 下 case 152042、152412 → case 152562 → case 154293、154294 → case 154681,每个文件夹里都有 readme.doc 说明更新步骤。跳顺序或者漏跑数据库脚本,就会导致程序文件是新版、数据库结构还是旧版的不一致状态。
解决:升级前先把 d:\opics 下的 opxdb、opxexe、OPXFAX、OPXGRSS、opxhlp、opxico、opxint、opxjob、opxpub、opxpwd、opxrva、opxsec、opxsys、opxupr、scripts、source 目录完整备份到 d:\backup\before change。然后严格按 case 顺序逐包更新,每个包按 readme.doc 操作,涉及数据库的脚本用 sqlplus 以 opics 用户执行完,再启动 osys 进程验证 D22SMCL。万一升级失败,把 d:\backup\before change 还原,再从头走一遍,这个备份就是后悔药。
6. 装完怎么验证:五步检查日志、归档和备份
6.1 上线前的五步验证清单
安装和配置完成后,不要急着交机,按下面五步做一次完整验证。这套验证动作我每次部署迁移都会强制走一遍,比看安装日志管用得多。
| 验证项 | 操作 | 预期结果 |
|---|---|---|
| 目录权限 | 用 citrix 测试用户登录,打开 OPICS 并保存一个测试凭证 | 保存成功,个人目录 opxacc 下出现对应文件 |
| M 盘映射 | 在 Citrix 会话内执行 net use | 显示 \fileserver\opics 已连接,状态为“确定” |
| 日志生成 | 打开 OPICS 做一次查询操作,然后查看 opxlog 目录 | 当前用户名对应的日志文件生成,末尾有时间戳 |
| 批处理跑通 | 手动触发 D22RATE0001 批次 | 执行完成无错误,opxarc 目录下出现按日期命名的目录 |
| 行情刷新 | 对比行情终端源文件和 Risk 端 Z 盘文件的时间戳 | 两者时间差在两分钟以内 |
每一步的具体指向要心里有数。目录权限验证是为了确认 NTFS 权限和共享权限都生效,这一步能防住第一类翻车;日志生成验证说明客户端到服务器的写链路没有问题;批处理验证是确认 OSYS 调度和 Rate Feed 导入链路完整,opxarc 出现新目录就证明日终归档机制在正常工作。这五步全部走完,才能说系统达到了可以上生产的程度。
6.2 日终备份恢复演练
还有一个验证不能省:日终备份。Opics 每天日终通过 bbkr 命令做完整的文本备份,命令已经包含在批量过程里,备份输出到 d:\opicsdata 目录,每天根据生产系统日期生成一个独立目录。验证时先确认当天日终后 opicsdata 下生成了新目录,再抽查里面的文本备份文件数量,最后我建议做一次恢复演练:把某一天的备份文件复制到一台临时机器,按手册的恢复流程恢复到临时数据库,比对交易总笔数和当日日志,确认备份文件不是空壳。
以后每次部署迁移,我都会强制走一遍这五步验证加一次恢复演练,确认日志、归档、备份三个目录都有新文件才敢交机。这套流程看着琐碎,但资金交易系统出问题就是头寸不准、报表延后的事故级别,多花十分钟验证,值得。希望帮到你。
本文还有配套的精品资源,点击获取