poniedziałek, 21 października 2013

Synonimy w Oracle


Synonimy




Synominy są alternatywnymi nazwami dla tabel, widoków, sekwencji, procedur, funkcji, pakietów, widoków zmaterializowanych, klas javowych, typów obiektowych zdefiniowanych przez użytkownika, lub innych synonimów. Synonimy są użyteczne gdy np. zechcemy mieć krótszą nazwę dla jakiegoś obiektu, lub nazwę bardziej zrozumiałą dla człowieka. Np. tabela nazywa się „HUR_KLI_SZK_ORA” i nadajemy jej synomin „klienci_szkolen_oracle”. Nadanie użytkownikowi uprawnień do synonimu nie powoduje nadania uprawnień do obiektu dla którego synonim został stworzony. Uprawnienia do takiego obiektu muszą zostać nadane oddzielnie.
Synonimy możemy wykonywać w operacjach : SELECT, INSERT, DELETE, UPDATE, FLASHBACK, EXPLAIN PLAN, LOCK TABLE, AUDIT, NOAUDIT, GRANT, REVOKE, COMMENT



Uprawnienia do tworzenia synonimów




Aby tworzyć prywatne synonimy, wymagane jest uprawnienie CREATE SYNONYM
Aby tworzyć publiczne synonimy, wymagane jest uprawnienie CREATE PUBLIC SYNONYM
Aby tworzyć prywatne synonimy w schemacie innego użytkownika, wymagane jest uprawnienie CREATE ANY SYNONYM



Synonimy prywatne i publiczne




Synonimy publiczne, to synonimy widoczne dla wszystkich użytkowników. Aby korzystać z synonimów, użytkownicy muszą mieć dostęp do obiektów do których synonim się odnosi. Synonimy prywatne są widoczne tylko dla użytkownika w którego schemacie synonim się znajduje.




Tworzenie synominów




Składnia tworzenia publicznych synonimów jest następująca:



CREATE PUBLIC SYNONYM EMPS FOR EMPLOYEES;



Składnia tworzenia prywatnych synonimów jest następująca:



CREATE SYNONYM EMPS FOR EMPLOYEES;



Składnia tworzenia synonimu w schemacie innego użytkownika:



CREATE SYNONYM HR.EMPS FOR HR.EMPLOYEES;



Jeśli nazwiemy synonim prywatny i publiczny tak samo, system domyślnie będzie odwoływał się do synonimu prywatnego.



Tworząc synonim możemy również zastosować klauzulę OR REPLACE:



CREATE OR REPLACE SYNONYM HR.EMPS FOR HR.EMPLOYEES;



Sprawi ona, że jeżeli synonim o takiej nazwie już istnieje, zostanie podmieniony, a jeśli nie istnieje, zostanie utworzony.

Kasowanie synonimów




Aby skasować synonim prywatny :



DROP SYNONYM EMPS;



Aby skasować synonim publiczny:



DROP PUBLIC SYNONYM EMPS;



Aby skasować synonim ze schematu innego użytkownika:



DROP SYNONYM HR.EMPS;

Synonimy dla procedur, funkcji i pakietów




Tworzę w schemacie użytkownika SYS procedurę WITACZ:



CREATE PROCEDURE WITACZ(IMIE VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE('WITAJ '||IMIE);
END;



Następnie tworzę publiczny synonim o nazwie WITACZ dla procedury WITACZ. Zauważ że podając nazwę procedury, nie podaję jej parametrów:



CREATE PUBLIC SYNONYM WITACZ FOR WITACZ;



Ponieważ sama możliwość sięgnięcia do synonimu publicznego przez użytkownika HR nie sprawia że może on wywołać procedurę której dotyczny synonim, nadaję osobne uprawnienia do tej procedury:



GRANT EXECUTE ON WITACZ TO HR;



Z poziomu użytkownika HR wywołuję procedurę korzystając z synonimu:



EXECUTE WITACZ('ANDRZEJ');



W sposób analogiczny odbywa się to dla funkcji.



Nie możemy nadawać synonimów dla procedur i funkcji znajdujących się w pakietach. Możemy za to nadać synonim pakietowi:



CREATE PUBLIC SYNONYM PISANIE FOR DBMS_OUTPUT;



Następnie korzystając z synonimu dla pakietu, odwoływać się do elementów tego pakietu:



EXECUTE PISANIE.PUT_LINE('HELLO!');

Brak komentarzy:

Prześlij komentarz