Tworzenie użytkownika i nadanie uprawnień użytkownikowi bazy

Tworzenie użytkownika bazy Oracle:

Nadanie uprawnień użytkownikowi:

Typowe role dla połączenia i tworzenia obiektów w swoim schemacie:
CONNECT, RESOURCE

Uprawnienia do wszystkich tabel.
Stwórzmy role support:
create role support;
Następnie dodajmy do niej prawa

Uprawnienia do wszystkich obiektów w poleceniu

Przykład:
GRANT support TO test2;

Podgląd uprawnień w widokach
user_sys_privs dla uzytkownika:

dla usera sys:

src: http://www.nazmulhuda.info/grant-select-on-all-tables-in-a-specific-schema-to-a-user

Procedura PL/SQL wyliczająca wartość kolumny B na podstawie kolumny A

Cel: Wyliczenie kolumny Bna podstawie wartości z kolumny tabeli z dla wszystkich wierszy.
Kontekst: Hurtownia danych. Tabela faktów zawiera już przeliczony wiek pacjenta, dodałem jeszcze jeszcze jedną kolumne GRUPA_WIEK aby wstawić w nią klucz obcy do mini wymiaru zawierającego grupy wiekowe.
Uwaga: złamana 3 postać normalna, kolumna jest zależna od drugiej.

Krótki wywód o poszukiwaniu optymalnej długości typu danych. Część 1 – atrybut NAZWISKO.

Weźmy pod lupę atrybut NAZWISKO.
varchar2(30), (50), (100) a dlaczego nie(4000)? (https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1145132537055)

Używając poniższych zapytań, po przebrnięciu przez masę kwiatków dobrnąłem do elitarnego grona ludzi z najdłuższymi nazwiskami w „mojej” bazie. Znalazłem obcokrajowca z 29 znakami w tym trzema białymi.
Najdłuższe polskie to kombinacje dwóch nazwisk z myślnikiem i jedno ze spójnikiem „vel”. Natomiast jeśli chodzi o imiona to dość popularne są podwójne co oznacza dla nas ponad 20 znaków.
Nieźle. Ale co mówią statystyki?
Znalazłem panią Achmistrowicz-Wachmistrowicz. Idąc tym tropem, zrobiłem szybki research na portalach genealogicznych. Podpowiadają one nazwiska 15 znakowe, co potencjalnie daje szanse na uzasadnione varchar2(31) …
Bezpieczna wartoscia biorac pod uwage obcokrajowcow bedzie 100.

Klucz obcy odwołujący się do tej samej tabeli

Co zrobić w sytuacji gdy w tabeli Pracownicy masz mieć zawartą informacje o przełożonym tej osoby? Przeciez przełożony jest też pracownikiem. Nie trzeba tworzyć zawiłych redundatnych konstrukcji, z pomocą przychodzi rekurencja – możemy odwołać się do tej samej encji.

Analiza relacji tabel

Mały tool wyświetlający referencje do podrzędneych tabelu.  Select wykonany w Developerze wyświetli okienko wprowadzenia zmiennej (‚&tableOfInterest’) dla nazwy tabeli parent. Przydatny do szukania relacji, analizy struktury bazy.
Szybsza opcja niz szukanie w GUI po foreign key, ale raczej do wspomagania niz jako substytut Data Modelera 🙂

1. Mamy FK sprawdzmy do których PK odwoluja sie:

2. I odwrotnie. Mamy PK i chemy znalezc tabele, ktore sie do niego odwoluja.

Klucze główne w Oracle, autoinkrementacja oraz funkcja sys_guid

W odróżnieniu od innych baz, w Oraclu do wersji 11g, do tworzenia inkrementacji klucza głównego nie mogliśmy użyć zwyczajnie autonumeracji jak na poniższym przykładzie w MySQL

Zamiast tego trzeba było stosować wyzwalacz, który pobierał wartość z sekwencji.

Lata pózniej w wersji 12c wprowadzono możliwość określenia takiej właściwości przy tworzeniu tabeli, w prostszy sposób.

Funkcja sys_guid.

W niektórych przypadkach przydatna może być funkcja sys_guid generująca i zwracająca globalny, unikalny ID (RAW, do 16 bajtów). Składa się z id hosta, procesu lub id wątku oraz niepowtarzalnej wartości. Nie jest to inkrementacja tzn. nie są to kolejne „user-friendly” liczby, a wartości heksadecymalne (vide wynik przykładu 1. poniżej). Poza tym może być używana jako wartość domyślna w CREATE TABLE (DEFAULT)

 

Przykłady sys_guid():
1. Aktualizacja kolumny.

Wynik:

UID_COL
—————————————-
7CD5B7769DF75CEFE034080020825436
7CD5B7769DF85CEFE034080020825436
7CD5B7769DF95CEFE034080020825436
7CD5B7769DFA5CEFE034080020825436

2. Zastosowanie przy uzyciu wyzwalacza

SQLPLUS: Command not found

Przyczyną może być brak ustawionych zmienych.

Kopiujemy je z instalacji Oracle za pomocą…

lub
Uruchamiamy narzedzie:
/usr/bin/oraenv
Ewentualnie: