KIC/ORACLE

[Oracle] 동의어, 권한

octopengj 2020. 10. 12. 15:25

동의어

 

<문1>

동의어(Synonym(유사어))

  • 단어는 다른데 의미가 같은 것

  • 테이블은 하나인데 이름이 2개

    • 백업테이블과는 다른 개념이다. 혼동 주의

      테이블(dept)과 백업테이블(b_dept)는 서로 다른 테이블이다.

 

형식) create synonym 동의어이름 for 대상객체명(=테이블명)

SQL> create synonym buser for b_dept2;

SQL>  create synonym buser for b_dept2;

동의어가 생성되었습니다.
SQL> select * from b_dept2;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        50 SUPPORT        KWANGJU
        60 TESTING        SEOUL
        70 TESTING2       SEOUL2
        80 TESTING3       SEOUL3
SQL> select * from buser;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        50 SUPPORT        KWANGJU
        60 TESTING        SEOUL
        70 TESTING2       SEOUL2
        80 TESTING3       SEOUL3

 

 

<문2>

동의어를 만드는 이유?

  • 사용권한과 연관이 있다.

  • 계정별로 관리 => 속한 테이블만 사용이 가능하다.

동의어의 종류

  • 개인용(Private Synonym)

    • 각 계정별로 따로 만드는 경우

    • 자기계정만 사용이 가능

  • 공용(Public Synonym)

    • 관리자만 만드는 경우

    • 모든 계정들이 사용이 가능한 동의어

동의어를 사용하는 목적

  • 소유자명.테이블명

  • 편리하게 자기만의 이름으로 변경해서 사용하고자 할때 쓰는 오라클 객체

 

다른 계정이 가지고 있는 테이블을 DML 하려면 사용권한?

DCL

owner(소유자)->권한을 줄 수도 있고(grant), 회수(rovoke)

 

DCL

형식) grant 권한종류.,,(all) on 적용테이블명 to 계정1, 계정2,,,,

inser, update,,,, to publie -> 거의 안씀

 

권한 부여하기

conn scott/tiger => test2 (b_test2) insert, select

 

 

SQL> grant insert, select on b_dept2 to test2;

SQL> grant insert, select on b_dept2 to test2;

권한이 부여되었습니다.

 

test2 계정으로 접속해서 확인해보자.

SQL> conn test2/t1234
연결되었습니다.

SQL> select * from b_dept2;
select * from b_dept2
              *
1행에 오류:
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다

SQL> select * from scott.b_dept2;

SQL> select * from scott.b_dept2;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        90 TESTING4       SEOUL4
        50 SUPPORT        KWANGJU
        60 TESTING        SEOUL
        70 TESTING2       SEOUL2
        80 TESTING3       SEOUL3

9 개의 행이 선택되었습니다.

 

scott.b_dept2; => buser2 동의어를 만들어서 사용

SQL> create synonym buser2 for scott.b_dept2;

SQL> select * from buser2;

 

SQL> show user
USER은 "TEST2"입니다

SQL> create synonym buser2 for scott.b_dept2;

동의어가 생성되었습니다.

SQL> select * from buser2;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        90 TESTING4       SEOUL4
        50 SUPPORT        KWANGJU
        60 TESTING        SEOUL
        70 TESTING2       SEOUL2
        80 TESTING3       SEOUL3

9 개의 행이 선택되었습니다.

결론적으로 상대방의 테이블을 마치 내것처럼 부르기 쉽게 만들어준 별칭 -> 동의어

 

 

 

<문3>

공용 동의어-> 관리자가 만들어줌(모든 계정이 사용가능)

 

 

SQL> conn sys/sys12345 as sysdba //role

형식)

SQL> create [public] synonym 시노님명 for 소유자명.테이블명

SQL> create public synonym butest for scott.b_dept2;

SQL> conn sys/sys12345 as sysdba
연결되었습니다.

SQL> show user
USER은 "SYS"입니다

SQL>  create public synonym butest for scott.b_dept2;

동의어가 생성되었습니다.

 

test2계정으로 접속해서 확인해보기

SQL> conn test2/t1234
연결되었습니다.

SQL> show user
USER은 "TEST2"입니다

SQL> select * from butest;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        90 TESTING4       SEOUL4
        50 SUPPORT        KWANGJU
        60 TESTING        SEOUL
        70 TESTING2       SEOUL2
        80 TESTING3       SEOUL3

9 개의 행이 선택되었습니다.

 

 

<문4>

scott계정이 b_dept2의 테이블에 대한 inser, select 권한 회수

 

형식) revoke 회수할 권한종류,,, on 적용 테이블명 from 계정명1,,,,

 

SQL> conn scott/tiger

SQL> rovoke insert, select on b_dept2 from test2;

SQL> conn scott/tiger
연결되었습니다.
SQL> show user
USER은 "SCOTT"입니다
SQL> revoke insert, select on b_dept2 from test2;

권한이 취소되었습니다.

 

 

 

<문5>

불필요한 동의어를 삭제

형식) drop synonym 삭제할 동의어 이름

SQL> drop synonym buser2;

SQL> drop synonym buser2;

동의어가 삭제되었습니다.

 

 

 

 

권한

  • 시스템 권한

    • 관리자가 주로 작업(계정관리(생성, 수정, 삭제))

  • 객체 권한

    • 각 계정이 관리(소유자 우선주의)

    • 테이블, 뷰, 시퀀스, 함수 등과 같은 객체를 조할 수 있는 권한

 

 

<문6>

계정관리 -> 생성, 수정, 삭제

 

 

SQL> conn sys/sys12345 as sysdba

 

--특정계정에서 암호를 변경하라 권고

형식) alter user 수정할 계정명 password expire

        => 새로운 암호로 변경처리

  1. 생성 SQL> create user hongtest identified by h1234;

  2. 수정 SQL> alter user hongtest password expire;

  3. 권한 SQL> grant connect, resource to hongtest;

SQL> create user hongtest identified by h1234;

사용자가 생성되었습니다.

SQL> alter user hongtest password expire;

사용자가 변경되었습니다.

SQL> grant connect, resource to hongtest;

권한이 부여되었습니다.

 

hongtest 접속

 

hongtest에 대한 비밀번호를 변경합니다.

새비밀번호: 1234로 설정해보기

다시입력: 1234

 

SQL> conn hongtest/h1234
ERROR:
ORA-28001: the password has expired


hongtest에 대한 비밀번호를 변경합니다.
새 비밀번호:  //비밀번호 입력시 눈에 보이지 않는다 
새 비밀번호 다시 입력:
비밀번호가 변경되었습니다.
연결되었습니다.

 

 

 

<문7>

오라클 설치시 hr계정의 락을 풀지 않았다. 풀어보자.

SQL> conn hr/hr1234

SQL> conn hr/hr1234
ERROR:
ORA-28000: the account is locked

 

관리자는 특정 계정을 사용하는 직원이 회사를 퇴사하거나, 잠시 휴가를 가는 경우 그 계정을 임시로 사용하지 못하게 관리자가 락을 건다. 업무를 인수하는 경우에는 다시 그 계정을 사용하고 암호만 변경해서 사용할 수도 있다.

이런 경우에 락을 걸고 해제 할 수 있다.

 

 

관리자가 락을 풀어주는 SQL문장?

SQL> conn sys/sys12345 as sysdba //관리자 로그인

형식)

  1. 이전에 계정을 이미 사용한 적이 있는 경우

alter user 계정명 account unlock (락을 걸때는 lock)

  1. 계정은 존재하는데 한번도 사용한 적이 없는 경우 => 새암호와 락해제를 동시작업

    aler user 계정명 identified by 새암호 account unlock

SQL> alter user hr identified by hr1234 account unlock;

SQL> conn hr/hr1234;

 

SQL> conn sys/sys12345 as sysdba
연결되었습니다.
SQL> alter user hr identified by hr1234 account unlock;

사용자가 변경되었습니다.

SQL> conn hr/hr1234
연결되었습니다.

 

 

<문9> 계정삭제

형식)

  1. 아무런 작업을 하지 않은 계정의 경우

    • drop user 삭제시킬 계정명

  2. 작업을 진행한 계정의 경우 (작업한 내용까지 함께 삭제)

    • drop user 삭제시킬 계정명 [cascade]

SQL> conn sys/sys12345 as sysdba
연결되었습니다.
SQL> drop user hongtest;
사용자가 삭제되었습니다.

 

 

 

 

<문10>

권한 종류 => 시스템 권한

system_privilege_map테이블

SQL> select * from system_privilege_map;

// 주석단 권한은 알고있기

관리자 로그인상태에서
SQL> select * from system_privilege_map;

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
        -3 ALTER SYSTEM                                      0
        -4 AUDIT SYSTEM                                      0
        -5 CREATE SESSION     // 로그인 할때 필요한 권한         0
                                 connect(롤)과 연관
        -6 ALTER SESSION                                     0
        -7 RESTRICTED SESSION                                0
       -10 CREATE TABLESPACE                                 0
       -11 ALTER TABLESPACE                                  0
       -12 MANAGE TABLESPACE                                 0
       -13 DROP TABLESPACE                                   0
       -15 UNLIMITED TABLESPACE                              0
       -20 CREATE USER         // 계정생성                     0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
       -21 BECOME USER                                       0
       -22 ALTER USER      //수정 => 락걸기, 락풀기, 암호 설정    0
       -23 DROP USER       //삭제                             0
       -30 CREATE ROLLBACK SEGMENT                           0
       -31 ALTER ROLLBACK SEGMENT                            0
       -32 DROP ROLLBACK SEGMENT                             0
       -40 CREATE TABLE     //테이블 생성권한                   0
       -41 CREATE ANY TABLE                                  0
       -42 ALTER ANY TABLE                                   0
       -43 BACKUP ANY TABLE                                  0
       -44 DROP ANY TABLE                                    0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
       -45 LOCK ANY TABLE                                    0
       -46 COMMENT ANY TABLE                                 0
       -47 SELECT ANY TABLE                                  0
       -48 INSERT ANY TABLE                                  0
       -49 UPDATE ANY TABLE                                  0
       -50 DELETE ANY TABLE                                  0
       -60 CREATE CLUSTER                                    0
       -61 CREATE ANY CLUSTER                                0
       -62 ALTER ANY CLUSTER                                 0
       -63 DROP ANY CLUSTER                                  0
       -71 CREATE ANY INDEX                                  0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
       -72 ALTER ANY INDEX                                   0
       -73 DROP ANY INDEX                                    0
       -80 CREATE SYNONYM                                    0
       -81 CREATE ANY SYNONYM                                0
       -82 DROP ANY SYNONYM                                  0
       -83 SYSDBA                  //관리자 권한 (role)        0
       -84 SYSOPER                                           0
       -85 CREATE PUBLIC SYNONYM   //공용동의어 생성            0
       -86 DROP PUBLIC SYNONYM     //공용동의어 삭제            0
       -90 CREATE VIEW             //뷰생성 권한               0
       -91 CREATE ANY VIEW                                   0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
       -92 DROP ANY VIEW                                     0
      -105 CREATE SEQUENCE         //시퀀스생성 권한            0
      -106 CREATE ANY SEQUENCE                               0
      -107 ALTER ANY SEQUENCE                                0
      -108 DROP ANY SEQUENCE                                 0
      -109 SELECT ANY SEQUENCE                               0
      -115 CREATE DATABASE LINK                              0
      -120 CREATE PUBLIC DATABASE LINK                       0
      -121 DROP PUBLIC DATABASE LINK                         0
      -125 CREATE ROLE          //롤을 생성할 수 있는 권한       0
      -126 DROP ANY ROLE                                     0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
      -127 GRANT ANY ROLE                                    0
      -128 ALTER ANY ROLE                                    0
      -130 AUDIT ANY                                         0
      -135 ALTER DATABASE                                    0
      -138 FORCE TRANSACTION                                 0
      -139 FORCE ANY TRANSACTION                             0
      -140 CREATE PROCEDURE                                  0
      -141 CREATE ANY PROCEDURE                              0
      -142 ALTER ANY PROCEDURE                               0
      -143 DROP ANY PROCEDURE                                0
      -144 EXECUTE ANY PROCEDURE                             0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
      -151 CREATE TRIGGER                                    0
      -152 CREATE ANY TRIGGER                                0
      -153 ALTER ANY TRIGGER                                 0
      -154 DROP ANY TRIGGER                                  0
      -160 CREATE PROFILE                                    0
      -161 ALTER PROFILE                                     0
      -162 DROP PROFILE                                      0
      -163 ALTER RESOURCE COST                               0
      -165 ANALYZE ANY                                       0
      -167 GRANT ANY PRIVILEGE                               0
      -172 CREATE MATERIALIZED VIEW                          0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
      -173 CREATE ANY MATERIALIZED VIEW                      0
      -174 ALTER ANY MATERIALIZED VIEW                       0
      -175 DROP ANY MATERIALIZED VIEW                        0
      -177 CREATE ANY DIRECTORY                              0
      -178 DROP ANY DIRECTORY                                0
      -180 CREATE TYPE                                       0
      -181 CREATE ANY TYPE                                   0
      -182 ALTER ANY TYPE                                    0
      -183 DROP ANY TYPE                                     0
      -184 EXECUTE ANY TYPE                                  0
      -186 UNDER ANY TYPE                                    0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
      -188 CREATE LIBRARY                                    0
      -189 CREATE ANY LIBRARY                                0
      -190 ALTER ANY LIBRARY                                 0
      -191 DROP ANY LIBRARY                                  0
      -192 EXECUTE ANY LIBRARY                               0
      -200 CREATE OPERATOR                                   0
      -201 CREATE ANY OPERATOR                               0
      -202 ALTER ANY OPERATOR                                0
      -203 DROP ANY OPERATOR                                 0
      -204 EXECUTE ANY OPERATOR                              0
      -205 CREATE INDEXTYPE                                  0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
      -206 CREATE ANY INDEXTYPE                              0
      -207 ALTER ANY INDEXTYPE                               0
      -208 DROP ANY INDEXTYPE                                0
      -209 UNDER ANY VIEW                                    0
      -210 QUERY REWRITE                                     0
      -211 GLOBAL QUERY REWRITE                              0
      -212 EXECUTE ANY INDEXTYPE                             0
      -213 UNDER ANY TABLE                                   0
      -214 CREATE DIMENSION                                  0
      -215 CREATE ANY DIMENSION                              0
      -216 ALTER ANY DIMENSION                               0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
      -217 DROP ANY DIMENSION                                0
      -218 MANAGE ANY QUEUE                                  1
      -219 ENQUEUE ANY QUEUE                                 1
      -220 DEQUEUE ANY QUEUE                                 1
      -222 CREATE ANY CONTEXT                                0
      -223 DROP ANY CONTEXT                                  0
      -224 CREATE ANY OUTLINE                                0
      -225 ALTER ANY OUTLINE                                 0
      -226 DROP ANY OUTLINE                                  0
      -227 ADMINISTER RESOURCE MANAGER                       1
      -228 ADMINISTER DATABASE TRIGGER                       0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
      -233 MERGE ANY VIEW                                    0
      -234 ON COMMIT REFRESH                                 0
      -235 EXEMPT ACCESS POLICY                              0
      -236 RESUMABLE                                         0
      -237 SELECT ANY DICTIONARY                             0
      -238 DEBUG CONNECT SESSION                             0
      -241 DEBUG ANY PROCEDURE                               0
      -243 FLASHBACK ANY TABLE                               0
      -244 GRANT ANY OBJECT PRIVILEGE                        0
      -245 CREATE EVALUATION CONTEXT                         1
      -246 CREATE ANY EVALUATION CONTEXT                     1

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
      -247 ALTER ANY EVALUATION CONTEXT                      1
      -248 DROP ANY EVALUATION CONTEXT                       1
      -249 EXECUTE ANY EVALUATION CONTEXT                    1
      -250 CREATE RULE SET                                   1
      -251 CREATE ANY RULE SET                               1
      -252 ALTER ANY RULE SET                                1
      -253 DROP ANY RULE SET                                 1
      -254 EXECUTE ANY RULE SET                              1
      -255 EXPORT FULL DATABASE                              0
      -256 IMPORT FULL DATABASE                              0
      -257 CREATE RULE                                       1

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
      -258 CREATE ANY RULE                                   1
      -259 ALTER ANY RULE                                    1
      -260 DROP ANY RULE                                     1
      -261 EXECUTE ANY RULE                                  1
      -262 ANALYZE ANY DICTIONARY                            0
      -263 ADVISOR                                           0
      -264 CREATE JOB                                        0
      -265 CREATE ANY JOB                                    0
      -266 EXECUTE ANY PROGRAM                               0
      -267 EXECUTE ANY CLASS                                 0
      -268 MANAGE SCHEDULER                                  0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
      -269 SELECT ANY TRANSACTION                            0
      -270 DROP ANY SQL PROFILE                              0
      -271 ALTER ANY SQL PROFILE                             0
      -272 ADMINISTER SQL TUNING SET                         0
      -273 ADMINISTER ANY SQL TUNING SET                     0
      -274 CREATE ANY SQL PROFILE                            0
      -275 EXEMPT IDENTITY POLICY                            0
      -276 MANAGE FILE GROUP                                 1
      -277 MANAGE ANY FILE GROUP                             1
      -278 READ ANY FILE GROUP                               1
      -279 CHANGE NOTIFICATION                               0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
      -280 CREATE EXTERNAL JOB                               0
      -281 CREATE ANY EDITION                                0
      -282 DROP ANY EDITION                                  0
      -283 ALTER ANY EDITION                                 0
      -284 CREATE ASSEMBLY                                   0
      -285 CREATE ANY ASSEMBLY                               0
      -286 ALTER ANY ASSEMBLY                                0
      -287 DROP ANY ASSEMBLY                                 0
      -288 EXECUTE ANY ASSEMBLY                              0
      -289 EXECUTE ASSEMBLY                                  0
      -290 CREATE MINING MODEL                               0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
      -291 CREATE ANY MINING MODEL                           0
      -292 DROP ANY MINING MODEL                             0
      -293 SELECT ANY MINING MODEL                           0
      -294 ALTER ANY MINING MODEL                            0
      -295 COMMENT ANY MINING MODEL                          0
      -301 CREATE CUBE DIMENSION                             0
      -302 ALTER ANY CUBE DIMENSION                          0
      -303 CREATE ANY CUBE DIMENSION                         0
      -304 DELETE ANY CUBE DIMENSION                         0
      -305 DROP ANY CUBE DIMENSION                           0
      -306 INSERT ANY CUBE DIMENSION                         0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
      -307 SELECT ANY CUBE DIMENSION                         0
      -308 CREATE CUBE                                       0
      -309 ALTER ANY CUBE                                    0
      -310 CREATE ANY CUBE                                   0
      -311 DROP ANY CUBE                                     0
      -312 SELECT ANY CUBE                                   0
      -313 UPDATE ANY CUBE                                   0
      -314 CREATE MEASURE FOLDER                             0
      -315 CREATE ANY MEASURE FOLDER                         0
      -316 DELETE ANY MEASURE FOLDER                         0
      -317 DROP ANY MEASURE FOLDER                           0

 PRIVILEGE NAME                                       PROPERTY
---------- ---------------------------------------- ----------
      -318 INSERT ANY MEASURE FOLDER                         0
      -319 CREATE CUBE BUILD PROCESS                         0
      -320 CREATE ANY CUBE BUILD PROCESS                     0
      -321 DROP ANY CUBE BUILD PROCESS                       0
      -322 UPDATE ANY CUBE BUILD PROCESS                     0
      -326 UPDATE ANY CUBE DIMENSION                         0
      -327 ADMINISTER SQL MANAGEMENT OBJECT                  0
      -328 ALTER PUBLIC DATABASE LINK                        0
      -329 ALTER DATABASE LINK                               0
      -350 FLASHBACK ARCHIVE ADMINISTER                      0

208 개의 행이 선택되었습니다.

 

 

 

 

<문11> role(롤)

  • 권한을 줄때 이 롤을 사용한다.(권한을 담아 놓은 그릇)

  • 단순, 반복적으로 여러번 권한을 주는 경우 사용

  • 편리성 때문에 한꺼번에 여러개의 권한을 준다.

롤 권한 종류 확인

SQL> select * from dba_roles;

dba_XXX, SYS_XXX, v$_XXX로 시작하는 테이블은 관리자만 사용이 가능하다.

 

SQL> select  * from dba_roles;

ROLE                           PASSWORD AUTHENTICAT
------------------------------ -------- -----------
CONNECT                        NO       NONE
RESOURCE                       NO       NONE
DBA                            NO       NONE
SELECT_CATALOG_ROLE            NO       NONE
EXECUTE_CATALOG_ROLE           NO       NONE
DELETE_CATALOG_ROLE            NO       NONE
EXP_FULL_DATABASE              NO       NONE
IMP_FULL_DATABASE              NO       NONE
LOGSTDBY_ADMINISTRATOR         NO       NONE
DBFS_ROLE                      NO       NONE
AQ_ADMINISTRATOR_ROLE          NO       NONE

ROLE                           PASSWORD AUTHENTICAT
------------------------------ -------- -----------
AQ_USER_ROLE                   NO       NONE
DATAPUMP_EXP_FULL_DATABASE     NO       NONE
DATAPUMP_IMP_FULL_DATABASE     NO       NONE
ADM_PARALLEL_EXECUTE_TASK      NO       NONE
GATHER_SYSTEM_STATISTICS       NO       NONE
JAVA_DEPLOY                    NO       NONE
RECOVERY_CATALOG_OWNER         NO       NONE
SCHEDULER_ADMIN                NO       NONE
HS_ADMIN_SELECT_ROLE           NO       NONE
HS_ADMIN_EXECUTE_ROLE          NO       NONE
HS_ADMIN_ROLE                  NO       NONE

ROLE                           PASSWORD AUTHENTICAT
------------------------------ -------- -----------
GLOBAL_AQ_USER_ROLE            GLOBAL   GLOBAL
OEM_ADVISOR                    NO       NONE
OEM_MONITOR                    NO       NONE
WM_ADMIN_ROLE                  NO       NONE
JAVAUSERPRIV                   NO       NONE
JAVAIDPRIV                     NO       NONE
JAVASYSPRIV                    NO       NONE
JAVADEBUGPRIV                  NO       NONE
EJBCLIENT                      NO       NONE
JMXSERVER                      NO       NONE
JAVA_ADMIN                     NO       NONE

ROLE                           PASSWORD AUTHENTICAT
------------------------------ -------- -----------
CTXAPP                         NO       NONE
XDBADMIN                       NO       NONE
XDB_SET_INVOKER                NO       NONE
AUTHENTICATEDUSER              NO       NONE
XDB_WEBSERVICES                NO       NONE
XDB_WEBSERVICES_WITH_PUBLIC    NO       NONE
XDB_WEBSERVICES_OVER_HTTP      NO       NONE
ORDADMIN                       NO       NONE
OLAPI_TRACE_USER               NO       NONE
OLAP_XS_ADMIN                  NO       NONE
OWB_USER                       NO       NONE

ROLE                           PASSWORD AUTHENTICAT
------------------------------ -------- -----------
OLAP_DBA                       NO       NONE
CWM_USER                       NO       NONE
OLAP_USER                      NO       NONE
SPATIAL_WFS_ADMIN              NO       NONE
WFS_USR_ROLE                   YES      PASSWORD
SPATIAL_CSW_ADMIN              YES      PASSWORD
CSW_USR_ROLE                   YES      PASSWORD
MGMT_USER                      NO       NONE
APEX_ADMINISTRATOR_ROLE        NO       NONE
OWB$CLIENT                     YES      PASSWORD
OWB_DESIGNCENTER_VIEW          NO       NONE

55 개의 행이 선택되었습니다.

 

 

 

<문12> 특정롤에 부여된 시스템 권한의 종류를 확인하는 SQL작성

           => dba_sys_privs

SQL> select * from dba_sys_privs where grantee=upper('&grantee');

 

SQL> select * from dba_sys_privs where grantee=upper('&grantee');
grantee의 값을 입력하십시오: connect
구   1: select * from dba_sys_privs where grantee=upper('&grantee')
신   1: select * from dba_sys_privs where grantee=upper('connect')

GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
CONNECT                        CREATE SESSION                           NO
SQL> /
grantee의 값을 입력하십시오: resource
구   1: select * from dba_sys_privs where grantee=upper('&grantee')
신   1: select * from dba_sys_privs where grantee=upper('resource')

GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
RESOURCE                       CREATE TRIGGER                           NO
RESOURCE                       CREATE SEQUENCE                          NO
RESOURCE                       CREATE TYPE                              NO
RESOURCE                       CREATE PROCEDURE                         NO
RESOURCE                       CREATE CLUSTER                           NO
RESOURCE                       CREATE OPERATOR                          NO
RESOURCE                       CREATE INDEXTYPE                         NO
RESOURCE                       CREATE TABLE                             NO

8 개의 행이 선택되었습니다.

 

 

 

<문13> 롤을 생성하고 권리자 권한으로 로그인을 할 수 있는 usercreate롤을 생성하여 scott, test2계정에게 권한을 부여하라.

 

형식) create role 생성시킬 롤이름;

SQL> create role usercreate;

 

SQL> create role usercreate;

 

SQL> select * from dba_roles;

 

ROLE                           PASSWORD AUTHENTICAT
------------------------------ -------- -----------
CONNECT                        NO       NONE
RESOURCE                       NO       NONE
DBA                            NO       NONE
SELECT_CATALOG_ROLE            NO       NONE
EXECUTE_CATALOG_ROLE           NO       NONE
DELETE_CATALOG_ROLE            NO       NONE
EXP_FULL_DATABASE              NO       NONE
IMP_FULL_DATABASE              NO       NONE
LOGSTDBY_ADMINISTRATOR         NO       NONE
DBFS_ROLE                      NO       NONE
AQ_ADMINISTRATOR_ROLE          NO       NONE

ROLE                           PASSWORD AUTHENTICAT
------------------------------ -------- -----------
AQ_USER_ROLE                   NO       NONE
DATAPUMP_EXP_FULL_DATABASE     NO       NONE
DATAPUMP_IMP_FULL_DATABASE     NO       NONE
ADM_PARALLEL_EXECUTE_TASK      NO       NONE
GATHER_SYSTEM_STATISTICS       NO       NONE
JAVA_DEPLOY                    NO       NONE
RECOVERY_CATALOG_OWNER         NO       NONE
SCHEDULER_ADMIN                NO       NONE
HS_ADMIN_SELECT_ROLE           NO       NONE
HS_ADMIN_EXECUTE_ROLE          NO       NONE
HS_ADMIN_ROLE                  NO       NONE

ROLE                           PASSWORD AUTHENTICAT
------------------------------ -------- -----------
GLOBAL_AQ_USER_ROLE            GLOBAL   GLOBAL
OEM_ADVISOR                    NO       NONE
OEM_MONITOR                    NO       NONE
WM_ADMIN_ROLE                  NO       NONE
JAVAUSERPRIV                   NO       NONE
JAVAIDPRIV                     NO       NONE
JAVASYSPRIV                    NO       NONE
JAVADEBUGPRIV                  NO       NONE
EJBCLIENT                      NO       NONE
JMXSERVER                      NO       NONE
JAVA_ADMIN                     NO       NONE

ROLE                           PASSWORD AUTHENTICAT
------------------------------ -------- -----------
CTXAPP                         NO       NONE
XDBADMIN                       NO       NONE
XDB_SET_INVOKER                NO       NONE
AUTHENTICATEDUSER              NO       NONE
XDB_WEBSERVICES                NO       NONE
XDB_WEBSERVICES_WITH_PUBLIC    NO       NONE
XDB_WEBSERVICES_OVER_HTTP      NO       NONE
ORDADMIN                       NO       NONE
OLAPI_TRACE_USER               NO       NONE
OLAP_XS_ADMIN                  NO       NONE
OWB_USER                       NO       NONE

ROLE                           PASSWORD AUTHENTICAT
------------------------------ -------- -----------
OLAP_DBA                       NO       NONE
CWM_USER                       NO       NONE
OLAP_USER                      NO       NONE
SPATIAL_WFS_ADMIN              NO       NONE
WFS_USR_ROLE                   YES      PASSWORD
SPATIAL_CSW_ADMIN              YES      PASSWORD
CSW_USR_ROLE                   YES      PASSWORD
MGMT_USER                      NO       NONE
APEX_ADMINISTRATOR_ROLE        NO       NONE
OWB$CLIENT                     YES      PASSWORD
OWB_DESIGNCENTER_VIEW          NO       NONE

ROLE                           PASSWORD AUTHENTICAT
------------------------------ -------- -----------
USERCREATE                     NO       NONE              // 추가로 생성시킨 롤

56 개의 행이 선택되었습니다.

 

 

 

<문14> 만들어진 롤에 권한을 넣어준 뒤 롤을 이용해서 계정에게 권한을 부여

            => 계정 생성, 계정 수정

  • 동일한 권한을 여러개의 롤에게 동시에 부여가 가능하다.

형식) grant 권한종류,,, to 롤명1, 롤명2,,,

SQL> grant create user, alter user to usercreate;

 

SQL> grant create user, alter user to usercreate;

권한이 부여되었습니다.
select * from dba_sys_privs where grantee=upper('&grantee')
grantee의 값을 입력하십시오: usercreate
구   2:      where grantee=upper('&grantee')
신   2:      where grantee=upper('usercreate')

GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
USERCREATE                     CREATE USER                              NO
USERCREATE                     ALTER USER                               NO

 

 

 

<문15> 권한이 부여된 롤을 계정에게 권한을 부여

형식) grant 롤명, 롤명2,,, to 계정명1, 계정명2,,,

SQL> grant usercreate to scott, test2;

SQL>  grant usercreate to scott, test2;

권한이 부여되었습니다.

 

권한을 부여받은 scott계정으로 로그인해서 imsi 계정을 만들고 비번을 t1234로 설정

SQL> create user imsi identified by t1234;

사용자가 생성되었습니다.

 

alter user를 통해서 암호 imtest로 변경

SQL> alter user imsi identified by imtest;

사용자가 변경되었습니다.

 

drop user를 통해서 삭제 가능?

SQL> drop user imsi;
drop user imsi
*
1행에 오류:
ORA-01031: 권한이 불충분합니다

drop 권한은 받지 못했기 때문에 삭제는 불가능하다. (SQL> grant create user, alter user to usercreate;)

 

 

 

 

<문16> usercreate 롤(role)을 삭제하면 scott, test2가 부여받은 권한을 계속 사용하느냐 못하느냐?

형식) drop role 삭제시킬 롤명

SQL> 관리자 로그인

SQL> drop role usercreate;

SQL> conn sys/sys12345 as sysdba
연결되었습니다.

SQL> drop role usercreate;

롤이 삭제되었습니다.

권한 사용여부확인

SQL> scott 로그인

SQL> create user ktest identified by ktest;

SQL> conn scott/tiger
연결되었습니다.

SQL> create user ktest identified by ktest;
create user ktest identified by ktest
                                *
1행에 오류:
ORA-01031: 권한이 불충분합니다

롤을 삭제하면 이 롤을 통해서 권한을 부여받은 모든 계정들의 권한들은 자동으로 해제가 된다.

  • 롤을 이용하는 경우 장점

    • 한꺼번에 많은 권한을 계정들에게 부여할 수 있다.

    • 한꺼번에 부여된 권한도 자동으로 해제가 가능하다.

 

 

 

 

<문17> 관리자가 권한일부를 위임

  • 계정생성,, [with admin option]

예)

  1. 관리자가 계정 aaa, bbb, ccc계정를 생성하고 암호는 계정명과 동일하게 설정

  2. 각자 로그인해서 테이블 작업 -> connect, resource

    -> aaa, bbb 에게 권한주고 ccc에게는 권한을 주지 못함

  3. 관리자가 bbb계정에게 권한을 임시로 위임해서 ccc계정에게 권한을 줄 수 있는 권한을 부여

SQL> conn sys/sys12345 as sysdba              //관리자 로그인
연결되었습니다.

SQL> create user aaa identified by aaa;      // aaa생성
사용자가 생성되었습니다.

SQL> create user bbb identified by bbb;      // bbb생성
사용자가 생성되었습니다.

SQL> create user ccc identified by ccc;      // ccc생성
사용자가 생성되었습니다.

SQL> grant connect, resource to aaa;        // aaa에게 권한부여
권한이 부여되었습니다.

SQL> grant connect, resource to bbb with admin option; //bbb에게 with admin option권한 부여
권한이 부여되었습니다.

SQL> conn bbb/bbb                             // bbb계정 로그인
연결되었습니다.

SQL> grant connect, resource to ccc;          // ccc에게 권한부여
권한이 부여되었습니다.

 

 

 

 

<문18> 관리자가 bbb계정에게 with admin option을 주었다. 그 권한을 이용해서 ccc에게 권한(connect, resource)를 줄 수 있었다. 관리자가 bbb에게 주었던 권한을 회수하면 bbb로부터 받은 ccc의 권한은 유지가 될까 해제가 될까?

 

SQL> 관리자 로그인

SQL> revoke connect, resource from bbb;

 

SQL> conn sys/sys12345 as sysdba;
연결되었습니다.
SQL> revoke connect, resource from bbb;

권한이 취소되었습니다.

SQL> conn ccc/ccc;

SQL> conn ccc/ccc
연결되었습니다.

로그인 가능하다. 테이블 생성도 가능할까?

SQL> create table abc2(id varchar2(10));

테이블이 생성되었습니다.

테이블 생성도 가능하다.

 

  • 시스템 권한에 대한 정리

    • 관리자가 계정을 생성할때 with admin option 을 부여하면 생성된 계정은 자기가 부여받은 권한 범위내에서 권한의 일부를 다른 계정에게 위임할 수 있다.

    • 권한을 회수당해도 위임받은 계정에게는 영향이 없다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'KIC > ORACLE' 카테고리의 다른 글

[Oracle] 추가내용(관리자입장)  (0) 2020.10.12
[Oracle] 객체권한 및 데이터복원  (0) 2020.10.12
[Oracle] 트랜잭션  (0) 2020.10.12
[Oracle] 인덱스, 시퀀스  (0) 2020.10.12
[Oracle] 뷰  (0) 2020.10.12