1
我想要做的是創建一個打開sqlplus,連接到遠程服務器並執行數據庫重新編譯的進程。使用進程在客戶端服務器上執行utl_recomp
string arg =
"\"conn " + myConnect + " as sysdba \""+
"\"begin UTL_RECOMP.RECOMP_SERIAL('" + mySchema + "'); end;\"";
Process pro = new Process()
pro.StartInfo.FileName = "sqlplus.exe";
pro.StartInfo.Arguments = arg;
pro.StartInfo.EnvironmentVariables["ORACLE_HOME"] = Srvr.OH;
pro.StartInfo.UseShellExecute = false;
pro.StartInfo.RedirectStandardOutput = true;
pro.StartInfo.RedirectStandardError = false;
pro.Start();
pro.WaitForExit();
該進程運行但我的對象仍然無效。我已經遠程連接並從命令行以sysdba的身份成功運行了此sql語句。有任何想法嗎?
我猜你打算使用轉義序列,而你的一個字符串沒有。擺脫@前綴。 – Zer0
@前綴被用作以前的字符串文字。我在這裏編輯它,並從我的源代碼中刪除,但仍然是同樣的問題。感謝您指出了Zer0。 –
哪些對象無效,爲什麼?看看'select * from dba_errors where owner ='MYSCHEMA';'。這可能是單獨重新編譯並不能解決問題。 –