Прежде всего, я хотел бы указать, что я пытаюсь выполнить это обновление удаленно. Я получаю эту ошибку:UTL_RECOMP.RECOMP_SERIAL должен быть объявлен
2015-04-24:11:59:42 [Error] myDB - Failed to Recompile 'DBTYPE' Database Objects: ExcSQL Failed: Oracle Error Encountered: ORA-06550: line 1, column 7: PLS-00201: identifier 'UTL_RECOMP.RECOMP_SERIAL' must be declared ORA-06550: line 1, column 7: PL/SQL: Statement ignored (6550) SQL Text: begin utl_recomp.recomp_serial('DBTYPE'); end;
2015-04-24:11:59:42 [Error] WorksObjects Execution Failed: DBTYPE - Process JAR Files Failed: Failed to Recompile 'DBTYPE' Database Objects:ExcSQL Failed: Oracle Error Encountered: ORA-06550: line 1, column 7: PLS-00201: identifier 'UTL_RECOMP.RECOMP_SERIAL' must be declared ORA-06550: line 1, column 7: PL/SQL: Statement ignored (6550) SQL Text: begin utl_recomp.recomp_serial('DBTYPE'); end;
2015-04-24:11:59:42 [Error] UPGD FAILED! : myDB - Upgrade Error - Worker Thread Process Error - DBTYPE - Process JAR Files Failed: Failed to Recompile 'DBTYPE' Database Objects:ExcSQL Failed: Oracle Error Encountered: ORA-06550: line 1, column 7: PLS-00201: identifier 'UTL_RECOMP.RECOMP_SERIAL' must be declared ORA-06550: line 1, column 7: PL/SQL: Statement ignored (6550) SQL Text: begin utl_recomp.recomp_serial('DBTYPE'); end;
, когда я пытаюсь перекомпилировать недействительные объекты. Единственное, что я могу найти в Интернете, это то, что при перекомпиляции я должен войти в систему как sysdba, которую я сейчас делаю.
"Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = " + MyHostName + ")(PORT = 1521))(CONNECT_DATA =" +
"(SERVICE_NAME = " + mySID + ")));DBA Privilege = SYSDBA;" +
"User Id = " + MyID + ";Password = " + MyPW;
Моя связь работает правильно, потому что я могу работать на 3/4 процесса обновления, пока я не достиг этой точки, где я пытаюсь и перекомпилировать эту конкретную схему.
Conn = GetConn(MyID, MyPW);
if (DevelopSrvr)
{
ExcSQL(Conn, "alter session set plsql_debug=true");
}
ExcSQL(Conn, "begin utl_recomp.recomp_serial('" + schema + "'); end;");
Эта программа работает нормально локально, и я проверил трассировку стека, и все переменные возвращают ожидаемые значения. Есть что-то, что мне не хватает? Заранее спасибо
Спасибо за помощь Даниэль! Я подключаюсь как sys к серверу, но там, где я догоняюсь, мне нужно запустить sqlplus после правильного подключения? –
, когда я имею в виду связанный как sysdba, мое приложение C# соединяет меня с сервером как sysdba, и мне интересно, нужно ли мне открывать sqlplus с этой точки. Удивительно, если проще запустить sqlplus локально и попытаться подключиться таким образом. Почувствуйте, как я делаю двойную работу. –
Если вы можете запустить sqlplus локально, это не будет проблемой при запуске «utl_recomp.recomp_serial». В приведенном выше примере было выполнено выполнение «sqlplus» с клиентской машины (удаленно). –