2012-06-01 54 views
0

當我停止監聽,得到以下錯誤信息......爲Linux無法停止在Oracle監聽器10g的

LSNRCTL:版本10.2.0.4.0 - 生產時間01-JUN-2012 12: 21:31 版權所有(c)1991,2007,Oracle。版權所有。 NL-00857:錯號碼(0 - 1需要)的參數 「停止」

我使用下面的命令停止監聽..

$ ORACLE_HOME/bin中/ LSNRCTL停止偵聽

當我通過命令提示符執行命令然後它的工作,但通過Java它失敗。

請幫我解決這個問題....

+0

添加代碼你如何嘗試從Java中執行它。 – yatul

+0

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」; Process proc = Runtime.getRuntime()。exec(cmdStr); – Anjali

+0

任何人請幫助我.... – Anjali

回答

0

我覺得你的java cmdStr是不正確的;你不能只在命令之間放置一個空格(設置env變量然後調用lsnrctl)。你需要使用一個分號:

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"; 
+0

我試過這個,但仍然存在問題。它syas .... env:status:權限被拒絕 – Anjali

0

env是bash命令,所以你不能從Java Exec的它。你可以把它變成一個簡短的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"); 
}