9. Data Dictionary, DCL, ROLE

Data Dictionary란?

모든 스키마 객체 정보, 스키마 객체의 공간 정보, 컬럼의 기본값, 제약조건 정보, 오라클 사용자 정보, 권한 및 롤 정보, 기타 데이터베이스 정보 …

SELECT * FROM DICTIONARY;
–데이터 딕셔너리 조회

SELECT * FROM USER_OBJECTS;

SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE = ‘TABLE’;

SELECT * FROM DICTIONARY;
–데이터 딕셔너리 조회

SELECT * FROM USER_OBJECTS;

SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE = ‘TABLE’;

SELECT * FROM USER_USERS;
–로그인한 유저만 보여줌

SELECT * FROM ALL_USERS;
–전체 유저 보여줌

SELECT * FROM DBA_USERS;
–CONN /AS SYSDBA로 로그인 후 가능

SELECT *
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = ‘BOOK’;
–제약조건 조회

SELECT * FROM USER_USERS;

DCL

–사용자 생성
CREATE USER SHKIM IDENTIFIED BY “SHKIM”;

–접속권한
GRANT CREATE SESSION TO SHKIM;

–SELECT 권한 부여 (DEV에 있는 BOOK테이블에 SELECT 할수있는..)
GRANT SELECT ON DEV.BOOK TO SHKIM;

–접속권한 없애기
REVOKE CREATE SESSION FROM SHKIM;

–롤 단위
이렇게만 해도 접속 가능
GRANT CONNECT, RESOURCE TO SHKIM;

REVOKE CONNECT RESOURCE FROM SHKIM;

ROLE 생성

여러개의 권한을 묶어놓은것!
CONN /AS SYSDBA
CREATE ROLE VIEWER;
GRANT CREATE SESSION TO VIEWER;
GRANT SELECT ON DEV.BOOK TO VIEWER;
GRANT VIEWER TO SHKIM;
CONN SHKIN/SHKIM;
SELECT * FROM DEV.BOOK;

CONN /AS SYSDBA;
REVOKE VIWER FROM SHKIM;

transaction

트랜잭션은 DML의 집합으로 이루어진다.
논리적 작업단위, 일련의 연산 집합을 의미한다.

–DML
–암시적(컬럼 지정X) 인 경우에는 순서와 , 개수 정확해야 함
INSERT INTO AUTHOR VALUES(SEQ_AUTHOR.NEXTVAL, ‘둘리’,NULL);

–명시적(컬럼 지정O)인 경우 지정한 순서와 개수 대로 입력해야 한다.
INSERT INTO AUTHOR(NAME, NO) VALUES(‘둘리’,SEQ_AUTHOR.NEXTVAL);

트랜잭션은 다음과 같은 특징을 가져야 한다.
Atomicity: all or nothing. 하나의 단위로 처리되어야 함. (중간까지만 처리됨은 불가)
Consistency: 데이터베이스의 일관성(무결성)을 깨지 않아야 함
Isolation: 다른 transaction과 동시에 수행되더라도 독립적으로 영향을 받지 않아야 함
Durability: 한번 수행 완료(commit)되면 영원히 반영되어 있어야 함 (시스템 crash에서라도)

DDL이나 DCL은 한 문장이 트랜잭션으로 처리됨

DeadLock

둘 이상의 트랜잭션이 서로 상대방의 Lock을 순환 대기하여 어떤 트랜잭션도 더 이상 진행할 수 없는 상태

Share