Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] Подключение к Oracle под sysdba

Ответить
Настройки темы
Delphi - [решено] Подключение к Oracle под sysdba

Аватара для fossil

Ветеран


Сообщения: 637
Благодарности: 20


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Доброго времени суток!
Делюсь с вами своей проблемой, так как после потраченного рабочего дня на поиски решения, я расписался в собственном бессилии.
Программа пишется в консольном режиме. Необходимо чтобы она совершала некоторые операции в базе данных.
Для выполнения большинства скриптов программе нужны привилегии пользователя SYS под SYSDBA.

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

Код: Выделить весь код
TDBXError: ORA-28009: connection to sys should be as sysdba or sysoper
Если выполнять данные действия под пользователем SYSTEM, то код вполне рабочий.
В интернете прочитал о том, что для подключения под ролью SYSDBA необходимо использовать .NET (если действительно так, то мне необходимы примеры).

Заранее хочу сообщить, что в строку инициализации были попытки ввести параметры подключения "DBA Privilege=SYSDBA", а также "RoleName=sysdba"

Заранее благодарен за любую помощь!

Код: Выделить весь код
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, Windows, WinSvc, ShellApi, Registry, SqlExpr, DbxOracle;

  var
    dbpath:string='C:\Oracle\ora92';
    dbname:string='database';
    dbpass:string='password';
    readst:string;
    result:boolean;
    Reg: TRegistry;
    Conn: TSQLConnection;
    Query: TSQLQuery;

    procedure MyWriteln(const S: string);
    var
    NewStr: string;
    begin
       SetLength(NewStr, Length(S));
       CharToOem(PChar(S), PChar(NewStr));
       Writeln(NewStr);
    end;

    procedure MyWrite(const S: string);
    var
    NewStr: string;
    begin
       SetLength(NewStr, Length(S));
       CharToOem(PChar(S), PChar(NewStr));
       Write(NewStr);
    end;

begin
  try
    { TODO -oUser -cConsole Main : Insert code here }
    MyWrite('Путь до базы данных Oracle ['+dbpath+']: ');
    readln(readst);
    if (readst<>'') then dbpath:=readst;
    if not DirectoryExists(dbpath) then
      begin
      MyWriteln('ОШИБКА! Путь до базы данных Oracle не найден!');
      readln;
      Exit;
      end;
    MyWrite('Имя базы данных ['+dbname+']: ');
    readln(readst);
    if (readst<>'') then dbname:=readst;
    MyWrite('Пароль пользователя SYS ['+dbpass+']: ');
    readln(readst);
    if (readst<>'') then dbpass:=readst;

    MyWrite('Подключаемся к базе данных... ');
    Conn := TSQLConnection.Create(nil);
    Query := TSQLQuery.Create(nil);
    try
      try
        Conn.ConnectionName:='OracleConnection';
        Conn.DriverName := 'Oracle';
        Conn.GetDriverFunc:='getSQLDriverORACLE';
        Conn.LibraryName:='dbxora30.dll';
        Conn.VendorLib:='OCI.DLL';
        Conn.Params.Clear;
        Conn.Params.Add('DataBase='+dbname);
        Conn.Params.Add('User_Name=sys');
        Conn.Params.Add('Password='+dbpass);
        Conn.LoginPrompt:=false;
        Conn.Connected:=true;
        Query.SQLConnection := Conn;
        Query.SQL.Text := 'SELECT banner FROM v$version';
        Query.Open;
        while not Query.Eof do begin
          Writeln(Query.Fields[0].AsString);
          Query.Next;
        end;
      except
        on E: Exception do
          Writeln(E.ClassName, ': ', E.Message);
      end;
    finally
      Query.Free;
      Conn.Free;
    end;
    readln; //КОНЭЦ
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

-------
Согласно непопулярному мнению, Windows - враждебная ОС.
Так получилось, что Windows не выбирает себе друзей.


Отправлено: 14:29, 22-03-2012

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


моя строка подключения к ораклу(C#)
Код: Выделить весь код
DATA SOURCE=bosstest.sun;DBA PRIVILEGE=SYSDBA;PERSIST SECURITY INFO=True;USER ID=FIRSOV
Использую Oracle ODP.NET провайдера.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:38, 23-03-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для fossil

Ветеран


Сообщения: 637
Благодарности: 20

Профиль | Сайт | Отправить PM | Цитировать


Да я тоже уже перешел на .NET и все заработало.
Спасибо.

-------
Согласно непопулярному мнению, Windows - враждебная ОС.
Так получилось, что Windows не выбирает себе друзей.


Отправлено: 10:46, 23-03-2012 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] Подключение к Oracle под sysdba

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочие БД - Установка Oracle 11g, удаленное подключение Const Программирование и базы данных 0 17-11-2011 16:36
Сообщество разработчиков OpenOffice не хочет работать под крылом Oracle OSZone News Новости информационных технологий 0 29-09-2010 12:30
VBS/WSH/JS - Подключение сетевых дисков из под Win Berline Программирование и базы данных 0 21-01-2010 11:11
сетевое подключение есть - сети нет <под Vista, под ХР проблем нет> Bright Microsoft Windows Vista 9 01-09-2007 14:03
подключение второго винта под xp andrew brave Microsoft Windows 2000/XP 7 15-03-2005 00:47




 
Переход