Снять дамп, используя стандартное средство оракла - EXP - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте друзья. Хочу снять дамп используя стандартное средство оракла - EXP.
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;
            }
        }
    }
}
При неверном пароле стоит на WaitForExit ожидая завершения процесса снятия дампа но оно не завершится т.к пароль неверен, при закрытии проги в процессах остается запущенный EXP.exe, при неверном SID базы такого не происходит ОТЛАДЧИК ПРОХОДИТ ЧЕРЕЗ WaitForExit. Я ЗАМЕТИЛ ЧТО EXP.exe в диспетчере появляется и потом проподает. В отладчике также заметил ошибку выдоваемую в обоих случаях ExitTime = "process.ExitTime" запустило исключение типа "System.InvalidOperationException" - примерно такого содержания ошибка. Как мне обработать эти ошибки грамотно? Как добавить еще пользователей для снятия дамп для них? Что посоветуете друзья, что добавить, что убавить?

Решение задачи: «Снять дамп, используя стандартное средство оракла - EXP»

textual
Листинг программы
 if (process.ExitCode != 0 && process.ExitCode != 3)
                {
                    throw new ApplicationException(string.Format(
                        CultureInfo.CurrentCulture,"Ошибка при снятии дампа",
                        process.StartInfo.FileName,
                        process.ExitCode));
                }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы