Skip to Main Content

Breadcrumb

Oracle Supplied Users

Teil 6: Von Oracle ausgelieferte Datenbank Benutzer

Abhängig von den installierten Optionen und Features gibt es innerhalb der Oracle Datenbank eine gewisse Anzahl von Benutzern, die Oracle mitbringt. Oft würde man gerne wissen, welche Benutzer dies sind um diese explizit auszuschließen. Abhängig von der Oracle Release gibt es dafür Möglichkeiten:

Alle Oracle Datenbank Editionen

Folgende Abfrage geht zumindest ab Oracle 9i.

SELECT OWNER
  FROM DBA_LOGSTDBY_SKIP
 WHERE STATEMENT_OPT = 'INTERNAL SCHEMA'
 UNION ALL
SELECT username
  FROM DBA_USERS
 WHERE username like 'APEX%';

Ab Oracle 12c gibt es einen einfacheren Weg

Ab Oracle 12c liefert Oracle die Information selbst.

SELECT username
  FROM DBA_USERS
 WHERE ORACLE_MAINTAINED = 'Y';

Nutzung für Monitoring

Damit kann man die Oracle Benutzeraccounts jetzt einfach und effizient beim Monitoring ausschließen - beispielsweise, wenn man den Platzverbrauch der Applikation(en) in einer Datenbank überwachen möchte.
Das Beispiel zeigt eine Query, die die Oracle Benutzeraccounts zuerst in einer WITH Clause abholt - das ist nicht zwingend nötig, macht die Abfrage aber leichter lesbar (und potentiell auch schneller).

WITH orauser as (SELECT username FROM DBA_USERS WHERE ORACLE_MAINTAINED = 'Y')
SELECT owner as "DB Schema", trunc(sum(bytes)/1024/1024/1024,3) as "GB used"
  FROM DBA_SEGMENTS
 WHERE owner not in (SELECT username FROM orauser)
 GROUP BY owner;