Снять дамп, используя стандартное средство оракла - EXP - C#
Формулировка задачи:
Здравствуйте друзья.
Хочу снять дамп используя стандартное средство оракла - EXP.
При неверном пароле стоит на WaitForExit ожидая завершения процесса снятия дампа но оно не завершится т.к пароль неверен, при закрытии проги в процессах остается запущенный EXP.exe,
при неверном SID базы такого не происходит ОТЛАДЧИК ПРОХОДИТ ЧЕРЕЗ WaitForExit. Я ЗАМЕТИЛ ЧТО EXP.exe в диспетчере появляется и потом проподает. В отладчике также заметил ошибку выдоваемую в обоих случаях ExitTime = "process.ExitTime" запустило исключение типа "System.InvalidOperationException" - примерно такого содержания ошибка.
Как мне обработать эти ошибки грамотно?
Как добавить еще пользователей для снятия дамп для них?
Что посоветуете друзья, что добавить, что убавить?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Globalization; namespace exportDumpOracle { class Program { static void Main(string[] args) { Console.WriteLine("Снятие дампа."); int result; try { string arguments = string.Format(CultureInfo.CurrentCulture, "user/passw@u07 FILE=C:\\ur07.dmp"); result = LaunchCommand("EXP.exe", arguments); } catch (Exception exc) { Console.WriteLine("Произошла ошибка снятия дампа: " + exc.Message); Console.ReadKey(); } finally { } } private static int LaunchCommand(string fileName, string arguments) { using (Process process = new Process()) { process.StartInfo.FileName = fileName; process.StartInfo.Arguments = arguments; process.StartInfo.UseShellExecute = false; //Возвращает или задает значение, позволяющее определить, нужно ли использовать оболочку операционной системы для запуска процесса. process.StartInfo.CreateNoWindow = true; //Возвращает или задает значение, позволяющее определить, нужно ли запускать процесс в новом окне. process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.OutputDataReceived += delegate(object sender, DataReceivedEventArgs e) { Trace.WriteLine(e.Data, "PROCESS"); }; process.ErrorDataReceived += delegate(object sender, DataReceivedEventArgs e) { Trace.WriteLine(e.Data, "PROCESS"); }; process.Start(); process.BeginOutputReadLine(); process.BeginErrorReadLine(); process.WaitForExit(); if (process.ExitCode != 0 && process.ExitCode != 3) { throw new ApplicationException(string.Format( CultureInfo.CurrentCulture,"rrrrr", process.StartInfo.FileName, process.ExitCode)); } return process.ExitCode; } } } }
Решение задачи: «Снять дамп, используя стандартное средство оракла - EXP»
textual
Листинг программы
if (process.ExitCode != 0 && process.ExitCode != 3) { throw new ApplicationException(string.Format( CultureInfo.CurrentCulture,"Ошибка при снятии дампа", process.StartInfo.FileName, process.ExitCode)); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д