konto usunięte

Temat: create user

Przepraszam za prawdopodobnie lamerskie pytanie ale moja wiedza odnośnie baz jest stosunkowo mała

utworzyłem bazę na oracle
z poziomu usera system stworzyłem użytkownika sel1, po zalogowaniu się na sel1 wykonałem skrypt dzięki któremu utwoezyły mi się tabele wypełniły się danymi, chciałbym założyć innego użytkownika sel2 ale żeby po zalogowaniu miał te same dane co widzę z poziomu sel1
Z tego co zrozumiałem w bazach oraclowych to user jest zamienne z schematem a nie chciałbym innego schematu tylko ten sam dla obu użytkowników.

tak tworzyłem pierwszego z nich

CREATE USER "sel1" PROFILE "DEFAULT"
IDENTIFIED BY "sel1" DEFAULT TABLESPACE "USERS"
ACCOUNT UNLOCK;
GRANT "AQ_ADMINISTRATOR_ROLE" TO "sel1" WITH ADMIN OPTION;
GRANT "AQ_USER_ROLE" TO "sel1" WITH ADMIN OPTION;
GRANT "CONNECT" TO "sel1" WITH ADMIN OPTION;
GRANT "DBA" TO "sel1" WITH ADMIN OPTION;
GRANT "EXP_FULL_DATABASE" TO "sel1" WITH ADMIN OPTION;
GRANT "IMP_FULL_DATABASE" TO "sel1" WITH ADMIN OPTION;

konto usunięte

Temat: create user

Innymi słowy chodzi mi żeby z jednej bazy (jednego schemtu (z tych samych danych)) kożystał więcej jak jeden użytkownik

konto usunięte

Temat: create user

z uzytkownika sel1 wykonaj:

grant select any table to public;

aby odwolac sie pozniej np. z sel2 do obiektu, ktorego wlascicielem jest sel1 musisz dodawac sel1.nazwa_obiektu lub stworzyc synonimy:

create synonym nazwa_obiektu for sel1.nazwa_obiektu

wtedy odwolujesz sie bez sel1.Piotr Bednarski edytował(a) ten post dnia 19.11.07 o godzinie 12:32
Grzegorz G.

Grzegorz G. ASE / Systems
Architect, Syniverse

Temat: create user

Jeden schemat nie może być ,,wspólną własnością'' więcej niż jednego użytkownika. Jedyna opcja to dać odpowiednie prawa do poszczególnych obiektów - nie istnieje
GRANT cokolwiek ON schema;

Żeby nadać uprawnienia w sposób zautomatyzowany jako user1 (właściciel danych) wykonujesz

select 'grant select on ' || table_name || ' to user2;'
from user_tables;

zmieniając select na prawa jakich faktycznie potrzebujesz (np. all, select, insert, update, delete) oraz user2 na nazwę użytkownika, który mam mieć odpowiednie prawa; następnie przekopiowujesz wynik tego zapytania i go uruchamiasz.
Ewentualnie może być też (dynamicznie wywoła wszystkie granty)

begin
for x in (select table_name from user_tables) loop
execute immediate 'grant select on ' || x.table_name || ' to user2';
end loop;
end;
/
Robert Żwirski

Robert Żwirski programista, Black
Red White S.A.

Temat: create user

odpowiednie uprawnienia dla uzytkownika można tez pobrać z tab dba_tab_privs, poniewaz sel1 ma uprawnienia dba więc bedzie miał dostęp do tej tablicy, grantee to rola lub uzytkownik, dostający uprawnienia, onwer,table_name to własciciel obiektu i nazwa , granto - przyznający uperwnienia

konto usunięte

Temat: create user

Dzięki wszystkim za cenne wskazówki i podpowiedzi utworzyłem usera nadałem dla niego granty na tablice i potem potworzyłem synonimy.

A jeszcze krótkie pytanko taka pętelka dla procedur funkcji i view
Robert Żwirski

Robert Żwirski programista, Black
Red White S.A.

Temat: create user

for x in (select object_name from user_objects where object_type in ('FUNCTION','PACKAGE','PROCEDURE','SEQUENCE')) loop

konto usunięte

Temat: create user

Dzięki wkońcu znalazłem forum na poziomie, wszytskie moje wątpliwości i problemy zostały rozwiązane, Mam nadzieję że i ja kiedyś dorównam poziomem i będę wstanie pomagać innym.
Pozdrawiam

Następna dyskusja:

[pl/sql] Create if exists




Wyślij zaproszenie do