카테고리 없음

mysql 및 mongo DB 데이터 베이스 구축

미니대왕님 2020. 5. 7. 22:29

 

1. 데이터베이스 구축 설명을 위한 간단한 업무 시나리오

우리 특정이미지 파일을 파일 리사이징 처리를 하기 위한 데이터베이스 mysql의 스키마를 생성해줘야 한다.
데이터 사이언스들이 작업한 특정파일을 보관 처리 하기 위해 데이터베이스(mysql)의 테이블을 생성해줘야 하고 , 날짜 관리도 필요하다. 그룹별로 관리가 필요하다. 그룹핑된 사용자 데이터 사이언티스트들은 각각의 맡는 테이블을 생성해줘야 한다.


예) 시나리오에서 고려해야 할 사항 및 전제 사항

  • 그룹별로 관리가 되어야 한다.
  • 스키마를 그룹별로 생성한다.
  • 데이터 사이언스의 테이블이 필요하며 생성날짜가 필요하다.

 

 

2. 논리 ERD

속성 이름이 보이는 ERD

3.  컬럼 이름과 데이터타입이 보이는 ERD

4. 테이블 정의서

  • ERD를 이용하여 각각의 테이블에 대한 구체적인 내용은 다음과 같이 테이블 정의서로 나타낸다.

 

 

 

5. 인덱스 정의서

  • ERD에 설계된 각각의 인덱스에 대한 구체적인 내용은 다음과 같다.
    설계 단계에서 인덱스를 정의하였으므로 PK와 FK는 기본적으로 인덱스를 지정하고 조회 조건에 많이 포함되는 컬럼에 대해 인덱스를 정의하였다.

6. 뷰 정의서

  • 설계 단계에서 크러드 메트릭스를 분석한 결과 주문과 주문목록은 항상 같이 프로세싱이 발생하여 테이블이 조인되었다(가정).
    그래서 주문과 주문목록 테이블에 대해 개발의 편의성과 단순성을 위해 뷰를 설계하였다.
    또한 ERD에는 표현되지 않았지만 외부 시스템인 회계 시스템에서 주문관리 시스템의 사원을 참조하려 하여 사원의 개인적인 정보를 제외한 일반적인 사항에 대해 보안 뷰를 설계하였다.

7. 테이블 스페이스 용량 산정서

  • 각 테이블에 대한 트랜잭션양, 데이터 보관 주기 등을 고려하여 용량을 산정하였고 테이블 용량에 따라 테이블 스페이스 용량을 산정하였다.

8. 인덱스 스페이스 용량 산정서

  • 각 테이블에 대한 트랜잭션양, 데이터보관 주기와 인덱스 수를 고려하여 DBMS에서 제공하는 계산방식에 따라 용량을 산정하였다.

9. 데이터파일 용량 산정서

  • 테이블 스페이스 용량이 산정됨에 따라 각각의 테이블 스페이스에서 이용하는 데이터파일을 조사하여 다음과 같이 용량을 산정하였다.

10. 데이터베이스 분산 환경 설계서

  • 테이블이 본사와 지사로 분산되어 생성되어야 하므로 본사와 지사의 분산 환경을 다음과 같이 설계하였다.

11. 데이터베이스 환경 설게서

 

  • 오라클 데이터베이스에서 데이터베이스 생성 시 반영해야 할 각종 환경에 대한 값을 설게하였다.


12. 데이터베이스 시스템파일 용량 산정서

 

  • 환경설정에 대한 값을 이용하여 데이터베이스 시스템파일들이 설치되어야 할 디렉토리를 지정하고 용량을 산정하였다.

2. 데이터베이스 생성

  • 오라클에서 데이터베이스를 생성하기 위해서는 두 가지 방법이 있다.
    데이터베이스를 생성하기 위해 환경 파일 등을 스크립트에 일일이 지정하여 수작으로 생성(Manually Creating)하는 방법이 있고,
    ODCA(The Oracle Database Configuration Assistants)라는 그래픽 툴을 사용하여 손쉽게 생성하는 방법이 있다.
    데이터베이스는 데이터를 저장하기 위한 공간도 되지만 데이터베이스 성능도 무척 중요한 사항이다.
    자동화된 툴에서는 운영체제 환경이나 디스크 수, 분산 환경 등 복잡한 시스템과 업무 환경 모두를 해당 사용 환경에 맞게 적용하여 초기에 데이터베이스를 생성하기는 불가능하다.
    하지만 초기에 데이터베이스를 구축한 이후에 오라클 파라미터값에 대한 수정이 가능하고 데이터파일을 추가하는 것이 가능하므로 ODCA를 통해서도 충분히 전문적인 데이터베이스 생성이 가능하다.

3. 테이블 스페이스 생성

  • 테이블 스페이스는 각종 오브젝트(테이블, 인덱스, 뷰 등)가 실제 데이터 파일에 저장되기 위한 공간을 정의하는 데이터베이스 오브젝트
  • 테이블 스페이스 용량 산정서, 인덱스 스페이스 용량 신청서, 데이터파일 용량 산정서를 이용하여 테이블 스페이스 생성

     

4. DDL 문장 작성본사 DDL 문장의 작성

SPOOL ts_cre_bonsa.log
-- 테이블 스페이스(TS001)
CREATE TABLESPACE TS001
	DATAFILE '/data/test/db1/DF001.DBF01' SIZE 55M
    DEFAULT STORAGE ( 
    		INITIAL 1024K
            NEXT 512K
            MAXEXTENTS 128
            PCTINCREASE 0
    );

-- 인덱스 스페이스(IS001)
CREATE TABLESPACE IS001
	DATAFILE '/data/test/db1/DF001.DBF02' SIZE 30M
    DEFAULT STORAGE (
    		INITIAL 512K
            NEXT 256K
            MAXEXTENTS 128
            PCTINCREASE 0
    );
SPOOL OFF
지사 DDL 문장의 작성
지사의 테이블 스페이스 스토리지 옵션은 일괄적으로, INITIAL 1024K, NEXT 64K, MAXEXTENTS 64, PCTINCREASE 0으로 적용한다.
또한 인덱스 스페이스 스토리지 옵션은, INITIAL 512K, NEXT 64K, MAXEXTENTS 64, PCTINCREASE 0을 적용한다.
SPOOL ts_cre_jisa.log
-- 테이블 스페이스(TS002)
CREATE TABLESPACE TS002
	DATAFILE '/data1/test/db2/DF002.DBF01' SIZE 45M
    DEFAULT STORAGE ( 
    		INITIAL 1024K
            NEXT 64K
            MAXEXTENTS 64
            PCTINCREASE 0
    );

-- 인덱스 스페이스(IS001)
CREATE TABLESPACE IS002
	DATAFILE '/data1/test/db2/DF002.DBF02' SIZE 25M
    DEFAULT STORAGE (
    		INITIAL 512K
            NEXT 64K
            MAXEXTENTS 64
            PCTINCREASE 0
    );
DDL 문장의 실행
DDL 문장의 실행
SQL>@ts_cre_bonsa.sql

SQL>@ts_cre_jisa.sql
테이블 스페이스 생성 확인 및 실행 결과
테이블 스페이스 생성 확인
PROMPT =====================================
PROMPT     테이블 스페이스 확인 스크립트
PROMPT ====================================


COL TABLESPACE_NAME FORMAT A10
COL DATAFILE FORMAT A50
COL SZ_KB FORMAT 9,999,999

SELECT TABLESPACE_NAME,
			FILE_NAME AS DATAFILE,
			(BYTES/1024) AS SZ_KB
		FROM DBA_DATA_FILES ;

- 실행결과
TABLESPACE DATAFILE                                                SZ_KB
---------- -------------------------------------------------- ----------
TS001      /data/test/db1/DF001.DBF01                             56,320
IS001      /data/test/db1/DF001.DBF02                             30,720
TS002      /data1/test/db2/DF002.DBF01                            46,080
IS002      /data1/test/db2/DF002.DBF02                            25,600

4. 사용자 및 역할과 권한 지정

  • 데이터베이스를 사용할 수 있도록 사용자 계정을 생성하고 역할과 권한을 지정
  • 본사의 사용자 이름은 BONSA01이고, 패스워드도 BONSA01 테이블 스페이스는 USERS고, 임시 테이블 스페이스는 TEMP
  • 지사의 사용자 이름은 JISA01이고, 패스워드도 JISA01 테이블 스페이스는 USERS고, 임시 테이블 스페이스는 TEMP

 

본사 사용자 생성 DDL 문장 작성
SPOOL user_cre_bonsa.sql

CREATE USER BONSA01 IDENTIFIED BY BONSA01
DEFAULT TABLESPACE TS001
TEMPORARY TABLESPACE TEMP;

SPOOL OFF
지사 사용자 생성 DDL 문장 작성
SPOOL user_cre_jisa.sql

CREATE USER JISA01 IDENTIFIED BY JISA01
DEFAULT TABLESPACE TS002
TEMPORARY TABLESPACE TEMP;

SPOOL OFF

SQL>@user_cre_bonsa.sql
User created.
SQL>@user_cre_jisa.sql
User created.

# 사용자 생성 확인 및 실행 결과
PROMPT ====================================================
PROMPT     사용자 생성 확인 스크립트
PROMPT ====================================================

COL USERNAME FORMAT A15
COL DEF_TBS FORMAT A15
COL TMP_TBS FORMAT A15

- 실행 결과
USERNAME        DEF_TBS         TMP_TBS         PROFILE
--------------- --------------- --------------- ------------------------------
BONSA01         TS001           TEMP            DEFAULT
JISA01          TS002           TEMP            DEFAULT
역할 생성 DDL 문장의 작성
본사 역할 이름을 BONSA_ROLE로 생성
SPOOL role_cre_bonsa.sql

CREATE ROLE BONSA_ROLE NOT IDENTIFIED;

GRANT CREATE SESSION, CREATE TABLE,
			CREATE VIEW, 
			ALTER ROLLBACK SEGMENT
TO BONSA_ROLE;

SPOOL OFF
지사 역할 이름을 JISA_ROLE로 생성
SPOOL role_cre_jisa.log

CREATE ROLE JISA_ROLE NOT IDENTIFIED;

GRANT CREATE SESSION, CREATE TABLE, 
      CREATE VIEW, 
      ALTER ROLLBACK SEGMENT 
TO JISA_ROLE;

SPOOL OFF
SQL>@role_cre_bonsa.sql
Role created.

Grant succeeded.

SQL>@role_cre_jisa.sql
Role created.

Grant succeeded.

PROMPT ====================================================
PROMPT     역할 생성 확인 스크립트
PROMPT ====================================================

COL ROLE FORMAT A35

SELECT ROLE FROM DBA_ROLES;


SQL>COL ROLE FORMAT A35

SQL>SELECT ROLE FROM DBA_ROLES;


ROLE
-----------------------------------
......
BONSA_ROLE
JISA_ROLE
사용자에게 권한을 부여
본사 데이터베이스 사용자 이름이 BONSA01이고 본사 역할 이름을 BONSA_ROLE
지사 데이터베이스 사용자 이름이 JISA01이고 지사 역할 이름을 JISA_ROLE
SQL>GRANT BONSA_ROLE TO BONSA01 ;
Grant succeeded.

SQL>GRANT JISA_ROLE TO JISA01;
Grant succeeded.

PROMPT ====================================================
PROMPT     권한 부여 확인 스크립트
PROMPT ====================================================

COL GRANTEE FROMAT A10
COL GRANTED_ROLE FORMAT A30

SELECT GRANTEE, 
       GRANTED_ROLE 
	FROM DBA_ROLE_PRIVS ;

-- 실행 결과
GRANTEE                        GRANTED_ROLE
------------------------------ ------------------------------
......
BONSA01                        BONSA_ROLE
JISA01                         JISA_ROLE

오브젝트 생성

  • 테이블, 인덱스, 뷰를 설계된 산출물을 참조하여 생성

     

테이블 생성 DDL 문장의 작성
분산 환경 설계서, 테이블 설계서와 테이블 스페이스 용량 산정서를 참조하여 생성
테이블 스토리지 옵션은 INITIAL 1M, NEXT 1M, PCTINCREASE 0으로 지정
SPOOL tab_cre_bonsa.sql

CREATE TABLE DEPT (
    DEPTNO    NUMBER(2) NOT NULL, 
    DEPTNM    VARCHAR2(14) NOT NULL,
    LOC          VARCHAR2(14),
    CHARGE   VARCHAR2(20)
) TABLESPACE TS001
  STORAGE ( INITIAL 1M
               NEXT 1M
               PCTINCREASE 0);
ALTER TABLE DEPT ADD CONSTRAINT DEPT_PK PRIMARY KEY(DEPTNO);

CREATE TABLE EMP (
	EMPNO	NUMBER(4) NOT NULL,
    EMPNM	VARCHAR2(14) NOT NULL,
    JOB		VARCHAR2(9) NULL,
    HIREDATE	DATE NULL,
    SAL		NUMBER(10,2) NULL,
    DEPTNO	NUMBER(2) NOT NULL
) TABLESPACE TS001
  STORAGE ( INITIAL 1M
               NEXT 1M
               PCTINCREASE 0);
ALTER TABLE EMP ADD CONSTRAINT EMP_PK PRIMARY KEY(EMPNO) ;               
      
CREATE TABLE SUPPLIER (
	SUPNO	NUMBER(4) NOT NULL,
	SUPNM	VARCHAR2(14) NOT NULL,
    SUPADDR	VARCHAR2(60) NOT NULL,
    SUPPOST	VARCHAR2(30) NULL,
    SUPTEL  VARCHAR2(20) NULL
) TABLESPACE TS001
  STORAGE ( INITIAL 1M
               NEXT 1M
               PCTINCREASE 0);
ALTER TABLE SUPPLIER ADD CONSTRAINT SUP_PK PRIMARY KEY(SUPNO) ;  

CREATE TABLE ITEM (
	ITEMCD	VARCHAR2(10) NOT NULL,
	ITEMNM	VARCHAR2(20) NOT NULL,
    ITEMQTY	NUMBER(10) NOT NULL,
    IPRICE	NUMBER(10) DEFAULT 0 NULL,
    COLOR	VARCHAR2(10) NULL,
    MADEDATE DATE NULL,
    SUPNM   NUMBER(4) NOT NULL
) TABLESPACE TS001
  STORAGE ( INITIAL 1M
               NEXT 1M
               PCTINCREASE 0);
ALTER TABLE ITEM ADD CONSTRAINT ITEM_PK PRIMARY KEY(ITEMCD) ;
         
-- FOREIGN KEY 지정
ALTER TABLE EMP ADD CONSTRAINT EMP_DEPT_FK01 
				FOREIGN KEY (DEPTNO) REFERENCES DEPT;
ALTER TABLE ITEM ADD CONSTRAINT DEPT_SUPPLIER_FK01
				FOREIGN KEY (SUPNM) REFERENCES SUPLIER;
SPOOL OFF
지사 사용자 생성 DDL 문장의 작성
SPOOL tab_cre_jisa.log

CREATE TABLE CUST (
    CUSTNO	NUMBER(4) NOT NULL,
    CUSTNM	VARCHAR2(14) NOT NULL,
    CADDR	VARCHAR2(60) NOT NULL,
    CPOST	VARCHAR2(30) NULL,
    CTEL	VARCHAR2(20) NULL,
    CEMAIL	VARCHAR2(40) NULL
) TABLESPACE TS002
  STORAGE (INITIAL 1M
               NEXT 1M
               PCTINCREASE 0);
ALTER TABLE CUST ADD CONSTRAINT CUST_PK PRIMARY KEY(CUSTNO);

CREATE TABLE ORDER01 (
    ORDERNO	NUMBER(6) NOT NULL,
    ORDERTYPE	VARCHAR2(6) NOT NULL,
    ORDERDATE	DATE NOT NULL,
    CUSTNO	NUMBER(4) NOT NULL,
    EMPNO	NUMBER(4) NOT NULL,
    DELIVNO	NUMBER(4) NOT NULL
) TABLESPACE TS002
  STORAGE (INITIAL 1M
               NEXT 1M
               PCTINCREASE 0);
ALTER TABLE ORDER01 ADD CONSTRAINT ORDER01_PK PRIMARY KEY(ORDERNO);

CREATE TABLE ORDERITEM (
    ORDERNO	NUMBER(6) NOT NULL,
    ITEMCD	VARCHAR2(10) NOT NULL,
    ORDERQTY	NUMBER(10) NOT NULL
) TABLESPACE TS002
  STORAGE (INITIAL 1M
               NEXT 1M
               PCTINCREASE 0);
ALTER TABLE ORDERITEM ADD CONSTRAINT ORDERITEM_PK PRIMARY KEY(ORDERNO, ITEMCD);

CREATE TABLE DELIVERY (
    DELIVNO	NUMBER(4) NOT NULL,
    DDATE	DATE NOT NULL,
    COMPNO	NUMBER(4) NOT NULL
) TABLESPACE TS002
  STORAGE (INITIAL 1M
               NEXT 1M
               PCTINCREASE 0);
ALTER TABLE DELIVERY ADD CONSTRAINT DELIVERY_PK PRIMARY KEY(DELIVNO);

-- FOREIGN KEY 지정
ALTER TABLE ORDER01 ADD CONSTRAINT ORDER_DELIVERY_FK01
				FOREIGN KEY (DELIVNO) REFERENCES DELIVERY;
ALTER TABLE ORDER01 ADD CONSTRAINT ORDER_CUST_FK01
				FOREIGN KEY (CUSTNO) REFERENCES CUST;
ALTER TABLE ORDER01 ADD CONSTRAINT ORDERITEM_ORDER_FK01
				FOREIGN KEY (DELIVNO) REFERENCES ORDER01 ;

SPOOL OFF
테이블 생성 DDL 문장의 실행
SQL>@tab_cre_bonsa.sql

SQL>@tab_cre_jisa.sql
테이블 생성 확인 및 실행 결과
PROMPT ================================
PROMPT          테이블 생성 확인 스크립트
PROMPT ================================

SQL>COL SEGMENT_NAME FORMAT A15
SQL>COL TABLESPACE_NAME FORMAT A10

SQL>SELECT SEGMENT_NAME, ROUND(INITIAL_EXTENT/1024,0) INI_KB,
			ROUND(NEXT_EXTENT/1024,0) NXT_KB, ROUND(BYTES/1024,0) TOT_KB,
			PCT_INCREASE PCT, EXTENTS, TABLESPACE_NAME
		FROM USER_SEGMENTS
		WHERE SEGMENT_TYPE = 'TABLE'
		AND TABLESPACE_NAME IN('TS001', 'TS002') ;


SEGMENT_NAME        INI_KB     NXT_KB     TOT_KB        PCT    EXTENTS TABLESPACE
--------------- ---------- ---------- ---------- ---------- ---------- ----------
ITEM                  1024                  1024                    16 TS001
SUPPLIER              1024                  1024                    16 TS001
EMP                   1024                  1024                    16 TS001
DEPT                  1024                  1024                    16 TS001
ORDERITEM             1024                  1024                    16 TS002
CUST                  1024                  1024                    16 TS002


PROMPT ================================
PROMPT        PRIMARY KEY 생성 확인 스크립트
PROMPT ================================

COL TABLE_NAME FORMAT A20
COL CONSTRAINT_NAME FORMAT A20

SQL>SELECT A.TABLE_NAME, B.CONSTRAINT_NAME
						FROM   USER_TABLES A, USER_CONSTRAINTS B
						WHERE A.TABLE_NAME=B.TABLE_NAME(+)
						AND B.CONSTRAINT_TYPE(+) = 'P'
						AND TABLESPACE_NAME IN('TS001', 'TS002') ;


TABLE_NAME           CONSTRAINT_NAME
-------------------- --------------------
ORDERITEM            ORDERITEM_PK
CUST                 CUST_PK
ITEM                 ITEM_PK
SUPPLIER             SUP_PK
EMP                  EMP_PK
DEPT                 DEPT_PK


PROMPT ================================
PROMPT        PRIMARY KEY 생성 확인 스크립트
PROMPT ================================

SQL>COL CONSTRAINT_NAME FORMAT A20
SQL>COL R_CONSTRAINT_NAME FORMAT A20

SQL>SELECT CONSTRAINT_NAME, R_CONSTRAINT_NAME, STATUS
	FROM USER_CONSTRAINTS
	WHERE OWNER IN('BONSA01', 'JISA01');

CONSTRAINT_NAME      R_CONSTRAINT_NAME    STATUS
-------------------- -------------------- --------
DEPT_SUPPLIER_FK01   SUP_PK               ENABLED
EMP_DEPT_FK01        DEPT_PK              ENABLED
DEPT_PK                                   ENABLED
EMP_PK                                    ENABLED
SUP_PK                                    ENABLED
ITEM_PK                                   ENABLED
인덱스 생성 DDL 문장 작성

-- 본사 인덱스 생성
SPOOL index_cre_bonsa.log
CREATE INDEX I_EMP01 ON EMP (DEPTNO ASC) TABLESPACE IS001;
SPOOL OFF

-- 지사 인덱스 생성
SPOOL index_cre_jisa.log
CREATE INDEX I_ORDER01 ON ORDER01 (DATE ASC) TABLESPACE IS002;
CREATE INDEX I_ORDER02 ON ORDER01 (CUSTNO ASC) TABLESPACE IS002;
CREATE INDEX I_ORDER03 ON ORDER01 (EMPNO ASC) TABLESPACE IS002;
CREATE INDEX I_ITEM01 ON ITEM (SUPNO ASC) TABLESPACE IS002;
CREATE INDEX I_ITEM02 ON ITEM (MADEDATE ASC) TABLESPACE IS 002;
SPOOL OFF
 분산 환경 생성
모든 오브젝트가 생성되었으므로 분산 환경 설계서와 데이터베이스 환경 설계서를 이용하여 분산된 데이터베이스 사이의 환경을 설정하고 오브젝트를 생성한다.
오라클의 데이터베이스간 통신을 위한 분산 환경에는 세 가지 사항이 적용되어 있어야 한다.
연결 대상인 데이터베이스 쪽(Remote) 서버에 리스너가 기동되어야 한다.
연결하고자 하는 쪽에서 Net8 클라이언트가 설치되어 있으면서 Tnsnames.ora 파일이 구성되어야 한다.
로컬 데이터베이스와 원격 데이터베이스간 데이터베이스 링크를 설정하면 분산 환경 구성이 완료 된다.
원격 데이터베이스 리스너 기동
먼저 Net8 Configuration Assistant에서 리스너 환경을 설정한다.
리스너의 기동은 명령으로 처리해도 되고 [시작 프로그램] -> [제어판] -> [관리 도구] -> [시스템]에서 오라클 리스너를 구동할 수 있다.
lsnrctl start
로컬 서버 Tnsnames.ora 파일 구성
로컬의 Net8 환경 구성 '$ORACLE_HOME/network/admin/' 에서 Tnsnames.ora 파일을 직접 수정해도 되고 Net8 Configuration Assistant 에서 지정해도 된다.
BONSA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521) ) )
    (CONNECT_DATA =
      (SERVICE_NAME = BONSA) ) )
데이터베이스 링크 생성(Database Link)
데이터베이스 링크는 참조를 하려는 쪽인 로컬에서 데이터베이스 링크 생성 권한을 가진 사용자가 생성한다.
SQL> CREATE PUBLIC DATABASE LINK H2U1
       CONNECT TO BONSA01 IDENTIFIED BY BONSA01
       USING 'BONSA';  <-- tnsnames.ora 에서 지정한 원격 데이터 베이스명
테이블 생성 DDL 문장의 작성
본사 테이블 생성 DDL 문장의 작성
분산 환경 설계서에서 각 테이블의 어느 위치에 생성되는지를 확인한다.
테이블 설계서와 테이블 스페이스 용량 산정서를 참조하여 DDL 문장을 생성한다.(단 테이블의 스토리지 옵션은 INITIAL 1M, NEXT 1M, PCTINCREASE 0 으로 지정)
스냅샷 테이블 생성
분산 환경에 따른 테이블 운영 방식은 여러 가지 방법이 있을 수 있다.
기존에는 분산된 데이터베이스에 모두 테이블을 생성하여 애플리케이션에서 제어하는 형태로 처리하였지만, 요즘에는 DBMS에서 분산 데이터베이스를 처리하기 위한 기능을 제공한다.
스냅샷 기능은 바로 이 데이터베이스 분산 환경을 처리하기 위한 기능이다.
(1) 본사 환경 설정

설계된 사원 테이블과 제품 테이블에 스냅샷 로고 테이블을 생성한다.
CREATE SNAPSHOT LOG ON EMP
      TABLESPACE TS001
      STORAGE(INITIAL 1M NEXT 1M PCTINCREASE 0) ;
CREATE SNAPSHOT LOG ON ITEM
      TABLESPACE TS001
      STORAGE(INITIAL 1M NEXT 1M PCTINCREASE 0) ;
(2) 지사 환경 설정

지사 데이터베이스에서 스냅샷을 생성한다.
CREATE SNAPSHOT LOG ON EMP
      TABLESPACE TS002 STORAGE(INITIAL 1M NEXT 1M PCTINCREASE 0)
      USING INDEX TABLESPACE IS002 STORAGE (MINEXTENTS 1 PCTINCREASE 0)
REFRESH FAST
 START WITH SYSDATE NEXT TRUNC(SYSDATE) + 1 + (20/24) <-- REFRESH 주기
AS SELECT * FROM EMP@BONSA ;   <-- 데이터베이스 링크명

CREATE SNAPSHOT ITEM
     TABLESPACE TS002 STORAGE (MINEXTENTS 1 PCTINCREASE 0)
     USING INDEX TABLESPACE IS002 STORAGE (MINEXTENTS 1 PCTINCREASE 0)
REFRESH FAST
 START WITH SYSDATE NEXT TRUNC(SYSDATE) + 1 + (20/24)  <-- REFRESH 주기
 AS SELECT * FROM ITEM@GONSA ;  <-- 데이터베이스 링크명
위는 하루 중 오후 8시(1+(20/24))에 스냅샷 문장이 기동된다.
그러면 본사에 있는 테이블의 내용이 지사에 테이블로 전송되어 지사에서도 동일한 내용을 볼 수 있다.
문서정보
이 문서는 구루비에서 작성하였습니다.
이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=14024898&
구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.

출처 : 구루비http://wiki.gurubee.net/pages/viewpage.action?pageId=14024898