권한부여 & 회수
- 생성된 계정이 할 수 있는 일을 부여하는 것
> 생성된 계정은 아무런 권한을 가지고 있지 않음
- 관리자 계정만 권한 부여, 권한 회수가 가능함
- grant로 주는 권한은 oracle에 재접속해야 반영됨
| 권한명 | 하는일 |
| connect | Oracle DBMS에 접속할 수 있는 권한 |
| resource | Oracle DBM 자원 사용 권한 - table space를 사용할 수 있음 (table 생성 등) |
| dba | 일반계정을 DBA계정으로 권한 부여 - 일반 계정이 관리자의 역할을 수행할 수 있음 |
| create view | view 생성 권한 |
| create synonym | 시노님 생성 권한 |
* synonym
- 테이블에 별명을 부여하여 사용하는 객체
- create synonum 권한이 부여된 계정만 사용할 수 있음
- alias와는 다르게, synonym명과 원래 테이블명 둘다 사용 가능
- user_synonyms data dictionary에서 확인 가능
- synonym과 public synonym지원 (public synonym은 다른 계정에서도 사용 가능함)
- 권한 부여) grant [public] create synonym to 계정명;
- 권한 회수) revoke [public] create synonym from 계정명;
- 시노님 생성) create synonym 시노님명 for 테이블명;
- 시노님 삭제) drop synonym 시노님명;
* grant,revoke 사용 (DCL)
- 권한 부여) grant 권한,,, to 계정명;
- 권한 회수) revoke 권한,,, from 계정명;
- Oracle 12c 부터는 resource 권한만 부여되어서는 테이블을 생성할 수 없음
>> resource 권한 이후 table space에 대한 사용권한을 부여해야 함
> 문법) alter user 계정명 default tablespace 테이블 스페이스명 quota unlimited on users
- 계정 사용하는 기본 tablespace는 users01.dbf파일이고 users라는 이름으로 사용됨
* 권한 관련 data dictionary
- DBMS 자체의 사용권한 조회 : dba_role_privs
- SQL문의 사용권한 조회(synonym, view도 확인가능) : dba_sys_privs
- synonym 조회 : user_synonyms
view
- 실제 테이블로부터 도출된 가상테이블
- 권한이 부여된 계정만 view를 생성할 수 있음
- user_views data dictionary에서 확인 가능
- 장점) 실제 테이블을 숨겨놓고 가상 테이블을 사용하므로 보안성이 향상됨
- DML 작업이 가능
> view에 작업한 내용이 실제 테이블에 반영되고 테이블에서 작업한 내용이 view에 반영됨
- view에 DML작업을 막고 싶다면 veiw를 생성할 때 가장 마지막에 with read only를 사용
- 단순 뷰(하나의 테이블로 도출된 view), 복합 뷰(여러 개의 테이블에서 도출된 view)로 생성할 수 있음
① 단순 뷰
- 하나의 테이블에서 도출된 뷰
- 함수나 연산자를 사용하지 않고 만들어진 뷰
- DML 수행(insert, updtae, select, delete)이 가능함
② 복합 뷰
- 여러 개의 테이블에서 도출된 뷰
- join, 함수, 연산식을 사용한 뷰
> 함수/연산식 :
(insert,update) 연산, 함수가 사용된 열은 추가 작업이 되지 않음 / 해당 컬럼을 제외한 일반 컬럼은 사용 가능
(delete) 집계함수를 사용하여 view를 생성하면 delete 불가 /
단일함수, 연산자를 사용한 컬럼에 대해서는 view에 생성된 값과 같다면 삭제 가능
> join : DML 중 select만 가능 (insert, update, delete 불가)
: view를 생성하면 select이 단순해짐
=> 복잡한 join을 만들어두고, 필요한 것만 그때그때 select하자!
* view 권한부여/회수 : 관리자 계정만 가능
- 권한 부여) grant creat view to 계정명;
- 권한 회수) revoke create view from 계정명;
- view 생성) create view 뷰명 (컬럼명,,,) as (select ,,,); -- create subquery와 문법 동일
-- (컬럼명,,)은 생략 가능
- view 삭제) drop veiw 뷰명; -- 테이블이 삭제되면 view도 삭제됨
'Development > Oracle' 카테고리의 다른 글
| [Oracle] 백업/복구/exists 함수 (0) | 2021.10.06 |
|---|---|
| [Oracle] index (0) | 2021.10.04 |
| [Oracle] sequence (0) | 2021.09.30 |
| [Oracle] alter (0) | 2021.09.29 |
| [Oracle] 제약사항 (Constraint) (0) | 2021.09.28 |