01.오라클/005.DB 설치

[오라클]스키마 및 오브젝트 생성 순서(스크립트 베이스)

redkite 2012. 12. 19. 17:11

오라클 엔진을 설치하고나면 무엇부터 해야 할지 막막한 초보 DBA에게 도움이 되지 않을까 해서

적어 본다.

 

오라클10g(RAC아닌 Single), datafile이 UNIX file system의 경우를 예로 설명한다.
Windows버전도 순서는 다르지 않다.

데이터베이스를 설치한 후 보통의 경우 다음의 순서로 작업이 진행된다.

좀 더 세부적인 작업이나 옵션이 필요하겠지만 단순화한 순서이므로 감안하길 바란다.


1. 오라클 엔진 설치(INSTALL)
   1] 오라클 엔진 설치
   2] 오라클 데이터베이스 생성
   3] listener.ora 및 tnsname.ora 설정

   4] initTESTDB.ora(spfileTESTDB.ora) 설정 변경

 

2. 스키마 및 오브젝트 생성 순서
DB 생성이 되어 있다는 가정으로 다음과 같은 순서로

스키마(SCHEMA) 및 OBJECT를 생성한다면 무난할 것이다.

   1] 데이터파일을 저장할 Directory를 생성 
      % su - oracle
      % mkdir -p /data01/TESTDB
      % mkdir -p /data02/TESTDB

 

 

   2] 테이블스페이스(TABLESPACE) 생성
      SQL> CONNECT / as sysdba
      -- 데이터용 테이블스페이스 생성
      SQL> CREATE TABLESPACE       TS_GDXX01
                  datafile       '/data01/TESTDB/TS_GDXX01_01.dbf' size 50M REUSE
                  extent management local  autoallocate
                  segment space management auto;

      -- 인덱스용 테이블스페이스 생성
      SQL> CREATE TABLESPACE       TS_GIXX01
                  datafile       '/data02/TESTDB/TS_GIXX01_01.dbf' size 50M REUSE
                  extent management local  autoallocate
                  segment space management auto;

 

   3] 사용자(USER) 생성 
      SQL> CONNECT / as sysdba
      -- 응용프로그램 접속 계정(최소권한) : US_APPL
      SQL> CREATE USER                 US_APPL
                  IDENTIFIED BY        password
                  DEFAULT TABLESPACE   TS_GDXX01
                  TEMPORARY TABLESPACE TEMP;
      SQL> GRANT ALTER SESSION, CREATE SESSION         TO US_APPL;
      SQL> GRANT CREATE SYNONYM, UNLIMITED TABLESPACE  TO US_APPL;

      -- 오브젝트 소유 계정 : US_OWNER
      SQL> CREATE USER                 US_OWNER
                  IDENTIFIED BY        password
                  DEFAULT TABLESPACE   TS_GDXX01
                  TEMPORARY TABLESPACE TEMP;

      SQL> GRANT CONNECT, RESOURCE                            TO US_OWNER;
      SQL> GRANT CREATE PUBLIC SYNONYM, UNLIMITED TABLESPACE  TO US_OWNER;
   
   4] 테이블(TABLE) 생성 
      SQL> CONNECT US_OWNER/password
      SQL> CREATE TABLE TB_GXX001  (
                  PgmID     VARCHAR2(30) NOT NULL,
                  PgmNm     VARCHAR2(50) NULL,
                  BatchType CHAR(1) NULL
                  ChngDtime VARCHAR2(14) NOT NULL,
                  CONSTRAINT IX_GXX001_PK  PRIMARY KEY (PgmID)
                             USING INDEX TABLESPACE TS_GIXX01
                 ) TABLESPACE TS_GDXX01;
   
   5] 인덱스(INDEX) 생성 
      SQL> CONNECT US_OWNER/password
      SQL> CREATE INDEX IX_GXX001 ON TB_GXX001
                  ( BatchType ASC, PrgNm ASC )
                  TABLESPACE TS_GIXX01;
   
   6] 테이블(TABLE) 권한부여(GRANT) 
      SQL> CONNECT US_OWNER/password
      SQL> GRANT INSERT, SELECT, UPDATE, DELETE ON TB_GXX001  TO US_APPL;
   
   7] 테이블(TABLE) 동의어(SYNONYM) 
      SQL> CONNECT US_OWNER/password
      SQL> CREATE PUBLIC SYNONYM TB_GXX001  FOR US_OWNER.TB_GXX001;
   
   8] 시퀀스(SEQUENCE) 생성 
      SQL> CONNECT US_OWNER/password
      SQL> CREATE SEQUENCE SQ_GXX001  START WITH 1 INCREMENT BY 1 MAXVALUE 999999 CYCLE ORDER CACHE 10;
      SQL> GRANT SELECT ON SQ_GXX001  TO US_OWNER;
      SQL> CREATE PUBLIC SYNONYM SQ_GXX001  FOR US_OWNER.SQ_GXX001 ;
   
   9] 뷰(VIEW) 생성 
      SQL> CONNECT US_OWNER/password
      SQL> CREATE VIEW VW_GXX001_LIST .... ;
      SQL> GRANT SELECT ON VW_GXX001_LIST     TO US_APPL;
      SQL> CREATE PUBLIC SYNONYM VW_GXX001_LIST FOR US_OWNER.VW_GXX001_LIST;
   
   10] 저장 프로시져(STORED PROCEDURE/FUNCTION 등) 생성 
      SQL> CONNECT US_OWNER/password
      SQL> CREATE OR REPLACE PROCEDURE SP_GXX001_LIST ....;
      SQL> CREATE OR REPLACE FUNCTION  SF_GXX001_LIST ....;
      SQL> GRANT EXCUTE ON SP_GXX001_LIST     TO US_APPL;
      SQL> GRANT EXCUTE ON SF_GXX001_LIST     TO US_APPL;
      SQL> CREATE PUBLIC SYNONYM SP_GXX001_LIST FOR US_OWNER.SP_GXX001_LIST;
      SQL> CREATE PUBLIC SYNONYM SF_GXX001_LIST FOR US_OWNER.SF_GXX001_LIST;
   
   11] 외래키(FK CONSTRAINT) 생성 
      SQL> CONNECT US_OWNER/password
      SQL> ALTER TABLE TB_GXX001  ADD ( CONSTRAINT FK__GXX001
                 FOREIGN KEY ( SubPgmID ) REFERENCES TB_GXX999 ( PgmID ) );
   
   12] 트리거(TRIGGER) 생성 
      SQL> CONNECT US_OWNER/password
      SQL> CREATE OR REPLACE TRIGGER TR_GXX001_LIST .... ;


   13] 기타 필요한 것들 생성 및 등록

         - DB LINK, M-VIEW, DBMS JOB 등록 등