Oracle kein Zugriff auf DBA_TAB_PRIVS

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Weizenbaum
Beiträge: 28
Registriert: Mi 24. Aug 2016, 09:00

Oracle kein Zugriff auf DBA_TAB_PRIVS

Beitrag von Weizenbaum »

Hallo,
ich probiere grad rum, wie ich an die Tabelle DBA_TAB_PRIVS komme, um damit vorher nachzusehen, ob der angemeldete User die erforderlichen Rechte hat zum lesen, neuen Datensatz hinzufügen oder gar ändern und löschen.
Im SQL-Plus komm ich an die Tabelle gut ran, indem ich conn / as SYSDBA eingebe, von mein Lazarus-Programm allerdings nicht. Ich verwende hierfür die Oracle-Komponente die bei Lazarus mitgeliefert wurde.
Version ist 2.0.6 - Lazarus und FPC-Version ist 3.0.4

Hier nun der Code, wo ich mich probiere als SYSDBA anzumelden

Code: Alles auswählen

 
  if RadioButtonOracle.Checked = true then
  begin
    OracleConnection1.DatabaseName:= 'XE';
    OracleConnection1.HostName:= 'localhost:1521';
    OracleConnection1.UserName:= 'SYSDBA';
    OracleConnection1.Password:= 'masterkey';
    OracleConnection1.Params.Append(' /as SYSDBA');
    try
      OracleConnection1.Open;
    except
      ShowMessage('Keine Verbindung');
      Exit;
    end;
  end;
 


Und hier der Quelltext, wo ich probiere an die Übersicht der Rechte ranzukommen, welche mit Grant zuvor erteilt wurden.

Code: Alles auswählen

 
  if OracleConnection1.Connected = true then
  begin
    SQLTransactionOracle:= TSQLTransaction.Create(nil);
    SQLTransactionOracle.DataBase:= OracleConnection1;
    SQLTransactionOracle.Active:= true;
 
    SQLQueryOracle:= TSQLQuery.Create(nil);
    SQLQueryOracle.DataBase:= OracleConnection1;
    SQLQueryOracle.Transaction:= SQLTransactionOracle;
    with SQLQueryOracle do
    begin
      stmp:= 'select * from DBA_TAB_PRIVS where TABLE_NAME = ' + QuotedStr('KUNDEN');
      SQL.Text:= 'select * from DBA_TAB_PRIVS where TABLE_NAME = ' + QuotedStr('KUNDEN');
      //SQL.Text:= 'select * from KUNDEN where KUNDENNR = ' + QuotedStr('KdNr03');
      Open;
      if IsEmpty = false then
      begin
        stmp:= '';
      end;
    end;
  end;
 


Weiß jemand, wie ich an diese Tabelle DBA_TAB_PRIVS von Lazarus aus rankomme?

Antworten