사용자 생성하기
SQL> create tablespace khyup
2 datafile '/ORA19/app/oracle/oradata/ORACLE19/khyup01.dbf' size 10M;
SQL> select tablespace_name, bytes/1024/1024 MB, file_name
2 from dba_data_files;
SQL> create temporary tablespace temp_khyup
2 tempfile '/ORA19/app/oracle/oradata/ORACLE19/temp_khyup01.dbf' size 10M;
SQL> create user khyup
2 identified by khyup
3 default tablespace khyup
4 temporary tablespace temp_khyup
5 quota unlimited on khyup -- 할당량을 무제한으로 설정
6 quota 0m on system; -- system tablespace를 사용하지 못하게 설정
-- 여기서 resource, connect는 모두 role입니다.
SQL> grant resource, connect to khyup;
SQL> select username, default_tablespace "Default TS", temporary_tablespace "Temp TS"
2 from dba_users
3 where username='KHYUP';
SQL> conn khyup/khyup;
profile 생성하기(password 관련)
SQL> create profile sample_prof limit
2 failed_login_attempt 3
3 password_lock_time 5
4 password_life_time 15
5 password_reuse_time 15;
profile 생성하기(리소스 관련)
SQL> create profile re_sample_prof limit
2 cpu_per_session 1000
3 connect_time 480
4 idle_time 10;
사용자에게 profile 할당하기
SQL> select username, profile
2 from dba_users
3 where username='KHYUP';
SQL> select *
2 from dba_profiles
3 where profile='SAMPLE_PROF';
SQL> select *
2 from dba_profiles
3 where profile='RE_SAMPLE_PROF';
SQL> alter user khyup profile sample_prof;
SQL> alter user khyup profile re_sample_prof;
-- 여러 개의 profile을 적용하는 것이 불가능하다는 것을 알 수 있음.
SQL> select username, profile
2 from dba_users
3 where username='KHYUP';
-- 할당되어 있는 profile은 삭제 불가능
SQL> drop profile re_sample_prof;
-- 할당되어 있는 profile을 삭제하기 위해서는 cascade를 붙여주면 됨
SQL> drop profile re_sample_prof cascade;
-- 그 profile을 사용하는 user의 profile은 default로 변경됨.
SQL> select username, profile
2 from dba_users
3 where username='KHYUP';
권한 할당/해제하기
SQL> grant create table, create session to khyup;
-- System 권한 관련 받은 권한을 다른 사람에 줄 수 있는 권한 부여(with admin option)
SQL> grant create table, create session to khyup with admin option;
SQL> revoke create table from khyup;
SQL> grant select on khyup.testtable to khyup;
-- 받은 권한을 다른 사람에 줄 수 있는 권한 부여(with grant option)
SQL> grant update on khyup.testtable to khyup with grant option;
SQL> revoke select on khyup.testtable from khyup;
권한 조회하기
SQL> select *
2 from dba_sys_privs
3 where grantee='KHYUP';
Role 관리하기
SQL> create role trole;
SQL> grant create session, create table to trole;
SQL> grant trole to khyup;
-- user가 어떤 role을 가지고 있는지 조회
SQL> select *
2 from dba_role_privs where grantee='KHYUP';
GRANTEE GRANTED_ROLE ADM DEL DEF COM INH
--------------- --------------- --- --- --- --- ---
KHYUP RESOURCE NO NO YES NO NO
KHYUP TROLE NO NO YES NO NO
KHYUP CONNECT NO NO YES NO NO
-- user, role 별로 어떤 권한을 가지고 있는지 조회
SQL> select *
2 from dba_sys_privs where grantee='CONNECT';
SQL> select *
2 from dba_sys_privs where grantee='RESOURCE';