동의어
<문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
=> 새로운 암호로 변경처리
-
생성 SQL> create user hongtest identified by h1234;
-
수정 SQL> alter user hongtest password expire;
-
권한 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 //관리자 로그인
형식)
-
이전에 계정을 이미 사용한 적이 있는 경우
alter user 계정명 account unlock (락을 걸때는 lock)
-
계정은 존재하는데 한번도 사용한 적이 없는 경우 => 새암호와 락해제를 동시작업
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> 계정삭제
형식)
-
아무런 작업을 하지 않은 계정의 경우
-
drop user 삭제시킬 계정명
-
-
작업을 진행한 계정의 경우 (작업한 내용까지 함께 삭제)
-
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]
예)
-
관리자가 계정 aaa, bbb, ccc계정를 생성하고 암호는 계정명과 동일하게 설정
-
각자 로그인해서 테이블 작업 -> connect, resource
-> aaa, bbb 에게 권한주고 ccc에게는 권한을 주지 못함
-
관리자가 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 |