事务处理管理器的故障排除
“接收器无法起动或没有定义”错误
1. 请确认 listener.ora 文件不含由于人工编辑此文件所引入的语法错误。多数错误都是由于遗漏或多加了括弧而引起。使用 Oracle 网络管理器 3.1.4 可以防止此类问题的发生。除了 Oracle 网络管理器之外,Oracle 不再以其它方法支持网络配置文件的操作。
2. 请确认您已修改的 listener.ora 文件确是 SQL*Net 正在阅读的文件。为此,对 listener.ora 文件所在目录的名称定义 SQL*Net UNIX 环境变量 TNS_ADMIN。重新起动该接收器。如果接收器起动时没有问题,则 SQL*Net 正在阅读的是另外一个接收器文件。请确保将
listener.ora 文件放在适当的目录下。如果您不能确定网络配置文件的路径,请与数据库管理员联系。
3. 请确认您正在定义了接收器的机器运行 lsnrctl(listener.ora 中的主字段)。您必须在定义的主机上运行接收器。
4. 请确认没有其它流程正在使用相同的网络地址。有可能另一个接收器(事务处理管理器在“独立”模式下运行),或者另外一个网络程序已经占据了此网络地址。如果这样,请将接收器设置为另一个网络地址。要查找您可分配至接收器的适当网络地址,请与数据库管理员联系。
在打开销售订单表单时出现 Oracle 网络层错误
1.“OE:事务处理管理器”预置文件是否已正确定义?
“OE:事务管理器”预置文件可确定客户机应连接的 Oracle 订单分录事务处理管理器。网络层信息将指定 Oracle 订单分录事务处理管理器的名称。如果该信息指定的名称与您所期望的名称不匹配,则确认此预置文件是否有正确的事务处理管理器名称。如果没有,请使用“系统管理员”责任打开“系统预置文件值”窗口,并在站点层设置正确的名称。如果已在站点层设置了正确的值,则此值可在应用、责任或用户层进行改写。您必须做适当的更改,以使客户机可以读取正确的“事务处理管理器”名称。请参阅:Oracle 订单分录/发运管理系统预置文件选项
2. TNSPING 公用程序是否可以与 OE 事务处理管理器连接?
Oracle TNSPING 是一个与 SQL*Net 2.3 或更高版本一起包装的公用程序。要快速确认 PC 是否可与网络上的服务器连接,请执行以下步骤:
1. 起动客户机上的 TNSPING。通常,依次选择“开始”菜单上的“程序”、Oracle for Windows、TNSPING。
2. 在“地址”提示下,输入在 OE:事务处理管理器预置文件选项和 tnsnames.ora 配置文件中所定义的订单分录事务处理管理器名称。
如果输入成功,TNSPING 将报告一个“确定”信息,其后是往返行程时间。如果 TNSPING 已成功连接至事务处理管理器,但在打开“销售订单”表单时,Oracle 网络层仍然出错,请与系统管理员联系。
如果 TNSPING 无法连接至订单分录事务处理管理器,它将发送错误信息。以下步骤将说明此问题。
3. tnsnames.ora 文件中是否定义了事务处理管理器?
请确认客户机上的 tnsnames.ora 文件中是否定义了事务处理管理器的条目。如果没有定义,您必须为该文件添加适当的条目。请查阅《Windows 客户机的 Oracle 应用产品安装手册》第 5 章中的 Oracle 订单分录管理系统一节。
4. 配置文件是否在适当的目录中?
1. 请确认您修改的 tnsnames.ora 和 sqlnet.ora 文件确是 SQL*Net 正在阅读的文件。在客户机上,tnsnames.ora 和 sqlnet.ora 文件在 ORACLE_HOME/network/admin 目录中。要确定 ORACLE_HOME 在 PC 上的位置,请查阅《Windows 客户机的 Oracle 应用产品安装手册》第 2 章中的配置文件。
您还可以使用 SQL*Net 跟踪文件来确认 SQL*Net 正在阅读的 tnsnames.ora 文件。要打开 SQL*Net 跟踪文件,请在客户 PC 上更新 sqlnet.ora 文件。修改以下三个参数:
trace_level_client = ADMIN
trace_file_client = sqlnet
trace_directory_client=C:\ORAP15\network\trace
确保将 trace_level_client 设置为 ADMIN。要定义跟踪文件的位置,可根据需要对 trace_file_client 和 trace_directory_client 进行修改。
2. 请设法通过 TNSPING(如上所述)、SQL*Plus 或通过打开“销售订单”表单来连接至订单分录事务处理管理器。如果 SQL*Net 连接失败,请查阅由 SQL*Net 生成的跟踪文件。使用编辑器或字处理器来搜索跟踪文件以跟踪“tnsnames.ora”。此行将指明
SQL*Net 正在阅读的 tnsnames.ora 文件。
5. 接收器是否已启动并运行?
1. 请确认接收器已启动运行。在服务器上运行“lsnrctl status [listener name]”命令。
如果接收器未启动或运行,则 lsnrctl 将显示一个类似于下文的信息:(在此实例中,接收器的名称为“LISTENER_OEORPC_testsun”。)
LSNRCTL for SVR4:Version 2.1.6.1.0 - Production on 04-SEP-96 00:15:36
TNS-01101:Could not find service name LISTENER_OEORPC_testsun NNC-00406:name "LISTENER_OEORPC_testsun" does not exist
2. 如果接收器未运行,请启动它。如果接收器已运行,lsnrctl 将显示一个类似于下文的信息:
LSNRCTL for SVR4:Version 2.1.6.1.0 - Production on 04-SEP-96 00:14:19
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=testsun)(PORT=1527))
STATUS of the LISTENER
------------------------
Alias LISTENER_OEORPC_testsun
Version TNSLSNR for SVR4:Version 2.1.6.1.0 - Production
Start Date 04-SEP-96 00:12:44
Uptime 0 days 0 hr.1 min.35 sec
Trace Level off
Security OFF
Listener Parameter File /u6/oracle/prod/7.1.6.2/netword/admin/listener.ora
Listener Log File /tmp/log/oeorpc_testsun.log
Services Summary...
OEORPC_testsun has 1 service handlers
The command completed successfully
3. 请确认由 lsnrctl 实用程序的输出所指示的网络地址与客户机的 tnsnames.ora 文件中为事务处理管理器定义的网络地址相同。此外,请检验输出的“接收器参数文件”值以验证 lsnrctl 是否正在读取所需的 listener.ora 文件。
4. 请确认在客户机的 tnsnames.ora 文件中为事务处理管理器定义的 SID 值与服务器 listener.ora 的 SID 名称值相匹配。如果不匹配,则您必须更新客户机的 tnsnames.ora 文件或停止接收器,修改服务器的 listener.ora 文件,然后重新启动事务处理管理器的接收器,以使这两个值相匹配。
6. 是否已正确生成 listener.ora 文件?
1. 在 listener.ora 文件中一个共同的问题是没有正确定义用户参数“ENVS”。请在应用管理器环境下,以“独立”模式运行事务处理管理器。(请参阅:独立模式)如果客户机能够与独立的事务处理管理器连接,则很可能是没有正确定义用户参数“ENVS”。
2. 请确认您在一行中定义的 ENVS 参数没有任何多余的字符,如制表符或空格。此外,请确认 FND_TOP、OE_TOP、TNS_ADMIN 以及其它环境变量均已正确定义。
3. 请使用设置了 OERPCDBG 和 OEDBGFILE 环境变量的“独立”模式来运行诊断程序。(请参阅:生成诊断文件)搜索诊断程序输出中的所有错误。一个潜在的错误可能是事务处理管理器未连接至数据库。
4. 请确认服务器的 tnsnames.ora 文件也具有该客户机连接至数据库的数据库条目。此外,请验证是否已将 TNS_ADMIN 变量设置至 listener.ora 文件的正确目录中。
7. 是否仍然无法启动?
其它安装或配置问题可能对事务处理器有不利影响。
名称服务器:某些名称服务器会引起与事务处理管理器配置不兼容的问题。Oracle 订单分录管理系统目前并不支持使用“名字服务器”的网络配置。通过在 sqlnet.ora 文件中搜索与以下内容类似的条目,您可以确认网络环境中是否存在“名称服务器”:
names.name_servers = (ADDRESS_LIST =
(ADDRESS = (COMMUNITY = tcp) (PROTOCOL = TCP) (Host = name_server) (Port = 1521)))
SQL*Net V2:可能您的客户个人计算机上没有正确安装或配置 SQL*Net V2。一些已知的问题包括不兼容的 TCP/IP 适配器或 TCP/IP 堆栈问题等。要确认 SQL*Net V2 是否正在工作,请使用 SQL*Net V2 连接字符串来连接至 SQL*Plus 3.1 中的数据库。例如,对
SQL*Net V1 可使用连接字符串“t:testsun:A106CD”;而对 SQL*Net V2,则可使用连接字符串“A106CD”。数据库“A106CD”的条目应在客户机的 tnsnames.ora 文件中进行定义。如果您使用 SQL*Net V2 连接字符串无法连接至数据库,并且已确认客户机的 $ORACLE_HOME/network/
admin 目录中的 tnsnames.ora 文件已存在数据库条目,则说明客户机的 SQL*Net V2 安装存在问题。请与您的系统管理员联系。