02_Rights
Code-Dateien
| Dateiname | Aktion |
|---|---|
| CODECode_Rights.zip | Download |
PDF-Dokumente
| Dateiname | Aktion |
|---|---|
| PDFFolie_Rights.pdf | Öffnen |
| PDFUebung_001.pdf | Öffnen |
Videos
| Dateiname | Aktion |
|---|---|
| VIDEOVideo_Right_D | Abspielen |
| VIDEOVideo_Right_E | Abspielen |
| VIDEOVideo_Rights_Slides_D | Abspielen |
| VIDEOVideo_Rights_Slides_E | Abspielen |
Lernmaterialien
Delete
System
DROP TABLESPACE TBS_GRIESMAYER_RIGHTS INCLUDING CONTENTS AND DATAFILES;
DROP USER BANK CASCADE;
DROP USER GRIESMAYER CASCADE;Alle User und Tablespaces werden gelöscht.
Anlegen
Tablespace
System
CREATE SMALLFILE TABLESPACE TBS_GRIESMAYER_RIGHTS
DATAFILE '/opt/oracle/oradata/XE/XEPDB1/r1.dbf' SIZE 10M,
'/opt/oracle/oradata/XE/XEPDB1/r2.dbf' SIZE 5M
LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
Check
docker exec -it oracle21c /bin/bash
cd oradata/
cd XE
cd XEPDB1/
ls -l
total 2283972
-rw-r----- 1 oracle oinstall 10493952 Dec 2 12:06 r1.dbf
-rw-r----- 1 oracle oinstall 5251072 Dec 2 12:06 r2.dbf
User
System
CREATE USER GRIESMAYER PROFILE "DEFAULT" IDENTIFIED BY "oracle"
DEFAULT TABLESPACE TBS_GRIESMAYER_RIGHTS
TEMPORARY TABLESPACE TEMP
ACCOUNT UNLOCK;
GRANT SELECT ANY DICTIONARY TO GRIESMAYER;griesmayer
Das CONNECT Recht fehlt und somit ist ein login nicht
möglich.
System
GRANT CONNECT TO GRIESMAYER;griesmayer
SELECT tablespace_name
FROM dba_tablespaces
ORDER BY tablespace_name;
5 TBS_GRIESMAYER_RIGHTSSystem
CREATE USER BANK PROFILE "DEFAULT" IDENTIFIED BY "oracle"
DEFAULT TABLESPACE TBS_GRIESMAYER_RIGHTS
TEMPORARY TABLESPACE TEMP
ACCOUNT LOCK;
Table
System
GRANT CREATE TABLE TO GRIESMAYER;Der User GRIESMAYER kann im eigenen Schema Tabellen
anlegen.
griesmayer
CREATE TABLE CUSTOMER
(
CUSTOMER_ID INTEGER,
FIRST_NAME VARCHAR(30),
BALANCE DECIMAL(8,2)
);
System
GRANT CREATE ANY TABLE TO GRIESMAYER;griesmayer
CREATE TABLE BANK.CUSTOMER
(
CUSTOMER_ID INTEGER,
FIRST_NAME VARCHAR(30),
BALANCE DECIMAL(8,2)
);
System
GRANT DROP TABLE TO GRIESMAYER;
GRANT DROP ANY TABLE TO GRIESMAYER;Wie oben nur zum Löschen.
System
GRANT RESOURCE TO GRIESMAYER;Quota
Eine Quota in Oracle ist ein Speicherlimit, das einem Benutzer für ein bestimmtes Tablespace zugewiesen wird.
Quotas dienen dazu:
Speicherverbrauch von Benutzern zu kontrollieren
zu verhindern, dass ein Benutzer den Tablespace vollschreibt
Ressourcen gerechter zu verteilen
Ordnung und Sicherheit in großen Datenbanken zu erhalten
System
ALTER USER GRIESMAYER QUOTA 1M ON TBS_GRIESMAYER_RIGHTS;
ALTER USER BANK QUOTA 1M ON TBS_GRIESMAYER_RIGHTS;
Object Rights
Table
System
GRANT INSERT, SELECT ON BANK.CUSTOMER TO GRIESMAYER;griesmayer
INSERT INTO BANK.CUSTOMER VALUES (1, 'Max', 500);View
System
GRANT CREATE ANY VIEW TO GRIESMAYER;griesmayer
CREATE VIEW BANK.CUSTOMER_NOAMOUNT AS
(
SELECT CUSTOMER_ID,
FIRST_NAME
FROM BANK.CUSTOMER
);
Es können auch SELECT, DELETE,
INSERT und UPDATE Rechte auf die View vergeben
werden. In der View können Spalten ausgeblendet
werden!
System
GRANT SELECT, UPDATE ON BANK.CUSTOMER_NOAMOUNT TO GRIESMAYER;Sequence
Eine Sequence in Oracle ist ein Objekt, das fortlaufende, eindeutige Nummern erzeugt – meistens für Primärschlüssel wie ID-Spalten.
System
GRANT CREATE ANY SEQUENCE TO GRIESMAYER;
GRANT SELECT ANY SEQUENCE TO GRIESMAYER;griesmayer
CREATE SEQUENCE BANK.SEQ_CUSTOMER_ID START WITH 100;
SELECT BANK.SEQ_CUSTOMER_ID.NEXTVAL
FROM DUAL;
INSERT INTO BANK.CUSTOMER
SELECT BANK.SEQ_CUSTOMER_ID.NEXTVAL,
'Thomas',
CAST((DBMS_RANDOM.VALUE*2000-500) AS DECIMAL(10,2))
FROM BANK.CUSTOMER;Roles
Rechte können auch an Rollen vergeben werden.
Benutzer werden dann Rollen zugewiesen.
System
CREATE ROLE MARKETING;
GRANT SELECT ON BANK.CUSTOMER TO MARKETING;
GRANT MARKETING TO GRIESMAYER;Test Quota
griesmayer
INSERT INTO BANK.CUSTOMER VALUES (BANK.SEQ_CUSTOMER_ID.NEXTVAL, 'Thomas', 500);
INSERT INTO BANK.CUSTOMER
SELECT BANK.SEQ_CUSTOMER_ID.NEXTVAL,
'Thomas',
500
FROM BANK.CUSTOMER;
INSERT INTO BANK.CUSTOMER
SELECT BANK.SEQ_CUSTOMER_ID.NEXTVAL,
'Thomas',
500
FROM BANK.CUSTOMER;
...
Error starting at line : 1 in command -
INSERT INTO BANK.CUSTOMER
SELECT BANK.SEQ_CUSTOMER_ID.NEXTVAL,
'Thomas',
500
FROM BANK.CUSTOMER
Error report
ORA-01536: space quota exceeded for tablespace 'TBS_GRIESMAYER_RIGHTS'