0

当我停止侦听器时,收到以下错误消息...

适用于 Linux 的 LSNRCTL:版本 10.2.0.4.0 - 生产日期为 2012 年 6 月 1 日 12:21:31 版权所有 (c) 1991, 2007, Oracle。版权所有。NL-00857:“停止”的参数数量错误(需要 0 - 1 个)

我正在使用以下命令来停止监听器..

$ORACLE_HOME/bin/lsnrctl 停止监听器

当我通过命令提示符执行命令时,它可以工作,但通过 java 失败。

请帮我解决这个问题......

4

2 回答 2

0

I think your java cmdStr is not correct; you can't just put a space between commands (setting the env variable then calling lsnrctl). You need to use a semicolon:

String cmdStr="env ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1;/u01/app/oracle/product/10.2.0/db_1/bin/lsnrctl stop LISTENER";
于 2012-06-01T20:32:48.297 回答
0

env是一个bash命令,所以你不能从java中执行它。您可以将其制作成一个简短的 shell 脚本并从 java 执行,或者您可以执行以下操作

String cmd = "/u01/app/oracle/product/10.2.0/db_1/bin/lsnrctl stop LISTENER";
String[] envp = "ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1";
Process proc = Runtime.getRuntime().exec(cmd, envp);
if (proc.waitFor() != 0) {
    throw new RuntimeException("exit value was nonzero");
}
于 2012-06-02T02:18:53.840 回答