티스토리 뷰
1.클러스터(Cluster) 란?
하나 이상의 컬럼을 공통으로 사용해서 동일한 데이터 블록을 공유하는, 즉 함께 저장하는 테이블들의 집합을 말한다.
즉, 여러 테이블에 동일한 컬럼이 존재할 때 데이터의 저장및 디스크 입출력(I/O)의 효율성을 위해 물리적으로 이 값들을 한 곳에
한 번만 저장하여 공유하는 객체라 할수 있다.
-.장점
①클러스터드 테이블의 경우 물리적인 디스크 I/O의 효율성이 좋아진다.
②클러스터드 테이블 간에 조인이 발생한 경우 접근속도가 향상된다.
-.클러스터 사용
①클러스터를 생성한다.
-.클러스터 생성
CREATE CLUSTER 클러스터_이름(DEPT_NO NUMBER(3))
[TABLESPACE 클러스터를_저장할 테이블스페이스_이름]
CREATE CLUSTER EMP_CLUSTER(DEPT_NO NUMBER(3))
TABLESPACE users;
②클러스터 인덱스를 생성한다.
클러스터 인덱스의 생성은 일반 인덱스 생성과 크게 다르지 않으며 CREATE INDEX 뒤에 ON CLUSTER 생성 옵션을 붙여서
클러스터 인덱스임을 명시 한다.
-.클러스터 인덱스 생성
CREATE INDEX 클러스터_인덱스명
ON CLUSTER 클러스터_이름
[TABLESPACE 클러스터를_저장할 테이블스페이스_이름]
CREATE INDEX IDX_DEPT_NO
ON CLUSTER EMP_CLUSTER
[TABLESPACE 클러스터를_저장할 테이블스페이스_이름]
③클러스터 테이블들을 생성한다.
클러스터 테이블의 생성은 일반 테이블 생성방법과 같으며 뒤에 사용할 클러스터 명을 명시해주면 된다.
CREATE TABLE TBL_DEPT
(
DEPT_NO NUMBER(3) PRIMARY KEY,
DNAME VARCHAR2(14),
LOC VARCHAR2(13),
CLUSTER EMP_CLUSTER(DEPT_NO /*클러스터명 지정: 컬럼명, 타입 일치해야 한다.*/
);
참고: http://www.gurubee.net/lecture/1116
2.시노님(Synonym)
원뜻은 "동의어" 이며 오라클에서 말하는 시노님은 스키마 오브젝트(테이블, 뷰, 프로시저, 함수 등..)들의 별칭을 말한다.
시노님이 가명 혹은 별칭을 의미하므로
뷰와 마찬가지로 실제로는 데이터를 저장하고 있지 않으며 시노님의 정의만 데이터 딕셔너리에 저장되어 있다.
시노님에는 두가지 종류가 있으며 하나는 PUBLIC이고 다른 하나는 PRIVATE이다.
PUBLIC 시노님은 공개용 시노님으로 모든 사용자가 이 시노님에게 접근이 가능하며 사용할 수 있다.
PRIVATE 시노님은 시노님을 생성한 스키마에서만 접근하여 사용할 수 있다.
-.시노님을 사용하는데 필요한 몇가지 제약사항
시노님 생성권한 -> 원본 객체의 접근 권한 생성 -> 시노님명 생성
①시노님 생성 권한이 있어야 한다.
-.시노님 생성 권한(PRIVATE/PUBLIC)
GRANT CREATE [PUBLIC] SYNONYM TO 스키마명;
②EMPLOYEES의 시노님을 만들고 싶으면 그 테이블에 대한 SELECT 접근 권한이 있어야 한다.
-.원하는 객체에 대한 접근 권한
GRANT SELECT ON 오브젝트명(테이블명, 뷰명) TO 계정명;
CREATE [OR REPLACE] [PUBLIC] SYNONYM '[스키마명].시노님명'
FOR '스키마명.대상_오브젝트명';
DROP SYNONYM '[스키마명].시노님명'
DROP PUBLIC SYNONYM '[스키마명].시노님명'
SELECT 권한이 없더라도 시노님 생성은 가능하지만 데이터는 조회할 수 없다.
③PUBLIC 시노님의 소유자는 PUBLIC이다.
PUBLIC의 실제 정체는 사용자가 아닌 롤(ROLE)이다.
ROLE에 임의의 시스템 권한이나 오브젝트 권한을 할당하고 사용자들을 다시 이 ROLE에 할당하면 사용자들은 할당된 ROLE의 권한을
부여받게 된다.
PUBLIC 시노님을 생성하기 위해서 |
CREATE OR REPLACE PUBLIC SYNONYM |
|
PRIVATE 시노님을 생성하기 위해서(디폴트 시노님) |
자신의 스키마에서 생성할 경우 | CREATE OR REPLACE SYNONYM |
다른 스키마에서 생성할 경우 | CREATE OR REPLACE ANY SYNONYM |
======================여기서부터
PRIVATE 시노님은 디폴트 시노님이며 PUBLIC 키워드를 생략하면 자동으로 디폴트 시노님인 PRIVATE 시노님이 된다.
PUBLIC 구문을 추가했을 경우에는 스키마명을 반드시 생략해야 한다.
왜냐하면 PUBLIC 시노님은 공개용으로 모든 사용자가 사용할 수 있으므로 특정한 스키마에 종속되지 않기 때문이며
만약 스키마명을 생략하지 않으면 시노님을 생성할 수 없다.
시노님을 제대로 시용하기 위해서는
시노님 생성권한과 시노님의 대상객체에 대한 권한이 있어야 한다.
대상 객체가 테이블이나 뷰일 경우에는 SELECT권한이 필요하고, 프로시저나 함수일 경우 실행 권한(EXECUTE ANY PROCEDURE)이
필요하다.
③PUBLIC 시노님의 소유자
PUBLIC 시노님의 경우 특정 스키마에 종속되지 않으며 모든 사용자가 사용할 수 있으므로 이 시노님의 소유자는 PUBLIC이다.
ROLE에 임의의 시스템 권한이나 오브젝트 권한을 할당하고 사용자들을 다시 이 ROLE에 할당하면 사용자들은 할당된 ROLE의
권한을 부여받게 된다.
'database > db' 카테고리의 다른 글
[oracle] 조인(Join) (0) | 2020.04.05 |
---|---|
[oracle] 시퀀스(Sequence) (0) | 2020.04.04 |
[oracle] 뷰(view) (0) | 2020.03.24 |
[oracle] 인덱스(INDEX) (0) | 2020.03.20 |
[oracle] 오라클 오브젝트 CRUD (0) | 2020.03.20 |