System Privileges yaitu hak akses untuk User Accounts me-execute Data Definition Language (DDL) Statement dan Control Statement terhadap object di Database seperti CREATE TABLE, ALTER TABLE, CREATE SEQUENCE dan lain-lain. Ada banyak sekali System Privileges di Oracle Database diantaranya:

  1. Flashback Data Archives
  2. Indexes
  3. Procedures
  4. Profiles
  5. Roles
  6. Sequences
  7. Sessions
  8. Tables
  9. Trigger
  10. Types
  11. User
  12. View
  13. Dan masih banyak lagi untuk lebih lengkapnya bisa check di sini

Untuk mengetahui suatu user telah di berikan hak akses (privileges) tertentu kita bisa menggunakan query seperti berikut:

Dengan System Privileges kita bisa memberikan hak akses kepada user tersebut dan juga mencabutnya menggunakan perintah

  1. GRANT, untuk memberikan ijin terhadap user tertentu
  2. REVOKE, untuk mencabut ijin privileges dari user tertentu

GRANT System Privileges

Untuk memberikan ijin terhadap user tertentu sebagai contoh bisa membuat table, membuat sequences, membuat view, membuat index, dan procecure maka perintahnya seperti berikut:

Jika di jalankan maka hasilnya seperti berikut:

bash> sqlplus system/passwordnyaOracle18@XEPDB1

SQL*Plus: Release 18.0.0.0.0 - Production on Fri Mar 12 18:09:38 2021
Version 18.4.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Last Successful login time: Fri Mar 12 2021 17:14:02 +00:00

Connected to:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0

SQL> select *
from DBA_SYS_PRIVS
where GRANTEE = 'TOKO_ONLINE';

GRANTEE     PRIVILEGE                                ADM COM INH
----------- ---------------------------------------- --- --- ---
TOKO_ONLINE CREATE SESSION                           NO  NO  NO

SQL> conn toko_online/toko@XEPDB1
Connected.

SQL> create table test_table(
  2  id varchar2(10) not null);
create table test_table(
*
ERROR at line 1:
ORA-01031: insufficient privileges


SQL> conn system/passwordnyaOracle18@XEPDB1
Connected.

SQL> grant create table,
    create sequence,
    create any index,
    create view,
    create procedure
to TOKO_ONLINE;

Grant succeeded.

SQL> conn toko_online/toko@XEPDB1
Connected.
SQL> create table test_created(
  2  id varchar2(10) not null);

Table created.

SQL> select table_name from tabs;

TABLE_NAME
------------------------------
TEST_CREATED

SQL> conn system/passwordnyaOracle18@XEPDB1
Connected.

SQL> select * from DBA_SYS_PRIVS where GRANTEE = 'TOKO_ONLINE';

GRANTEE     PRIVILEGE                                ADM COM INH
----------- ---------------------------------------- --- --- ---
TOKO_ONLINE CREATE TABLE                             NO  NO  NO
TOKO_ONLINE CREATE VIEW                              NO  NO  NO
TOKO_ONLINE CREATE PROCEDURE                         NO  NO  NO
TOKO_ONLINE CREATE SESSION                           NO  NO  NO
TOKO_ONLINE CREATE SEQUENCE                          NO  NO  NO
TOKO_ONLINE CREATE ANY INDEX                         NO  NO  NO

6 rows selected.

Selain itu juga kita bisa memberikan semua hak access ke user tersebut dengan perintah seperti berikut:

REVOKE System Privileges

Selain itu juga kita bisa mencabut hak aksesnya dengan menggunakan perintah revoke <roles, ...> from <user>. Contohnya saya mau menghapus privileges create view berikut adalah querynya:

Jika di jalankan maka hasilnya seperti berikut:

SQL> conn system/passwordnyaOracle18@XEPDB1
Connected.

SQL> select *
from DBA_SYS_PRIVS
where GRANTEE = 'TOKO_ONLINE';

GRANTEE     PRIVILEGE                                ADM COM INH
----------- ---------------------------------------- --- --- ---
TOKO_ONLINE CREATE TABLE                             NO  NO  NO
TOKO_ONLINE CREATE VIEW                              NO  NO  NO
TOKO_ONLINE CREATE PROCEDURE                         NO  NO  NO
TOKO_ONLINE CREATE SESSION                           NO  NO  NO
TOKO_ONLINE CREATE SEQUENCE                          NO  NO  NO
TOKO_ONLINE CREATE ANY INDEX                         NO  NO  NO

6 rows selected.

SQL> revoke create view from TOKO_ONLINE;

Revoke succeeded.

SQL> select *
from DBA_SYS_PRIVS
where GRANTEE = 'TOKO_ONLINE';

GRANTEE     PRIVILEGE                                ADM COM INH
----------- ---------------------------------------- --- --- ---
TOKO_ONLINE CREATE TABLE                             NO  NO  NO
TOKO_ONLINE CREATE PROCEDURE                         NO  NO  NO
TOKO_ONLINE CREATE SEQUENCE                          NO  NO  NO
TOKO_ONLINE CREATE SESSION                           NO  NO  NO
TOKO_ONLINE CREATE ANY INDEX                         NO  NO  NO


SQL> conn toko_online/toko@XEPDB1
Connected.

SQL> create or replace view v_test_data as select * from TEST_CRATETED;
create or replace view v_test_data as select * from TEST_CRATETED
                       *
ERROR at line 1:
ORA-01031: insufficient privileges

Selain itu juga kita bisa cabut semua privilege-nya dengan perintah seperti berikut: