by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

9장. 데이터베이스 구축




9장 데이터베이스 구축

9.1 데이터베이스 구축을 위한 사전 준비

  • 데이터베이스 환경 정의서
  • 용량 산정서
  • 각종 오브젝트 설계서
  • 분산 환경 설계서(설치하고자 하는 데이터베이스가 분산을 고려하지 않으면 제외)

* 산출물

  • ERD
  • 테이블 정의서
  • 인덱스 정의서
  • 뷰 정의서
  • 테이블스페이스 용량 산정서
  • 인덱스스페이스 용량 산정서
  • 데이터파일 용량 산정서
  • 분산 설계서
  • 데이터베이스 환경 설계서
  • 시스템파일 용량 산정서
    • 데이터베이스 환경 설계서와 시스템파일 용량 산정서는 프로젝트를 진행할 경우 공식적인 산출물이라기보다
      대상이 되는 데이터베이스의 특징과 버젼에 따라 구축하면서 정리하는 경우도 많다.

9.2 데이터베이스 생성

  • 스크립트로 생성(Manually Creating).
  • orcl.sh
    #!/bin/sh
    mkdir /backup/archive/ORCL
    mkdir /oracle/admin/ORCL/bdump
    mkdir /oracle/admin/ORCL/cdump
    mkdir /oracle/admin/ORCL/create
    mkdir /oracle/admin/ORCL/pfile
    mkdir /oracle/admin/ORCL/udump
    mkdir /oradata/ORCL
    setenv ORACLE_SID ORCL
    echo Add this entry in the oratab: ORCL:/oracle/product/9.2.0:Y
    /oracle/product/9.2.0/bin/orapwd file=/oracle/product/9.2.0/dbs/orapwORCL password=change_on_install
    /oracle/product/9.2.0/bin/sqlplus /nolog @/oracle/admin/ORCL/scripts/CreateDB.sql
    /oracle/product/9.2.0/bin/sqlplus /nolog @/oracle/admin/ORCL/scripts/CreateDBFiles.sql
    /oracle/product/9.2.0/bin/sqlplus /nolog @/oracle/admin/ORCL/scripts/CreateDBCatalog.sql
    /oracle/product/9.2.0/bin/sqlplus /nolog @/oracle/admin/ORCL/scripts/postDBCreation.sql
  • CreateDB.sql
    connect SYS/change_on_install as SYSDBA
    set echo on
    spool /oracle/product/9.2.0/assistants/dbca/logs/CreateDB.log
    startup nomount pfile="/oracle/admin/ORCL/scripts/init.ora";
    CREATE DATABASE ORCL
    MAXINSTANCES 1
    MAXLOGHISTORY 1
    MAXLOGFILES 5
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    DATAFILE '/oradata/ORCL/system01.dbf' SIZE 500M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
    EXTENT MANAGEMENT LOCAL
    DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/oradata/ORCL/temp01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
    UNDO TABLESPACE "UNDOTBS1" DATAFILE '/oradata/ORCL/undotbs01.dbf' SIZE 500M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
    CHARACTER SET KO16KSC5601
    NATIONAL CHARACTER SET UTF8
    LOGFILE GROUP 1 ('/oradata/ORCL/redo01.log') SIZE 102400K,
    GROUP 2 ('/oradata/ORCL/redo02.log') SIZE 102400K,
    GROUP 3 ('/oradata/ORCL/redo03.log') SIZE 102400K;
    spool off
    exit;
  • CreateDBFiles.sql
    connect SYS/change_on_install as SYSDBA
    set echo on
    spool /oracle/product/9.2.0/assistants/dbca/logs/CreateDBFiles.log
    CREATE TABLESPACE "INDX" LOGGING DATAFILE '/oradata/ORCL/indx01.dbf' SIZE 50M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;
    CREATE TABLESPACE "TOOLS" LOGGING DATAFILE '/oradata/ORCL/tools01.dbf' SIZE 10M REUSE AUTOEXTEND ON NEXT 320K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;
    CREATE TABLESPACE "USERS" LOGGING DATAFILE '/oradata/ORCL/users01.dbf' SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;
    spool off
    exit;
  • CreateDBCatalog.sql
    connect SYS/change_on_install as SYSDBA
    set echo on
    spool /oracle/product/9.2.0/assistants/dbca/logs/CreateDBCatalog.log
    @/oracle/product/9.2.0/rdbms/admin/catalog.sql;
    @/oracle/product/9.2.0/rdbms/admin/catexp7.sql;
    @/oracle/product/9.2.0/rdbms/admin/catblock.sql;
    @/oracle/product/9.2.0/rdbms/admin/catproc.sql;
    @/oracle/product/9.2.0/rdbms/admin/catoctk.sql;
    @/oracle/product/9.2.0/rdbms/admin/owminst.plb;
    connect SYSTEM/manager
    @/oracle/product/9.2.0/sqlplus/admin/pupbld.sql;
    connect SYSTEM/manager
    set echo on
    spool /oracle/product/9.2.0/assistants/dbca/logs/sqlPlusHelp.log
    @/oracle/product/9.2.0/sqlplus/admin/help/hlpbld.sql helpus.sql;
    spool off
    spool off
    exit;
  • postDBCreation.sql
    connect SYS/change_on_install as SYSDBA
    set echo on
    spool /oracle/product/9.2.0/assistants/dbca/logs/postDBCreation.log
    @/oracle/product/9.2.0/rdbms/admin/utlrp.sql;
    shutdown ;
    startup mount pfile="/oracle/admin/ORCL/scripts/init.ora";
    alter database archivelog;
    alter database open;
    alter system archive log start;
    shutdown ;
    startup pfile="/oracle/admin/ORCL/scripts/init.ora";
    exit;
  • DBCA(Database Configuration Assistants) 그래픽 툴 이용.

9.3 테이블스페이스 생성

  • 테이블 스페이스는 설계 단계에서 정의한 각종 오브젝트(테이블, 인덱스, 뷰등)가 실제 데이터파일에
    저장되기 위한 공간을 정의하는 데이터베이스 오브젝트.
  • DDL 문장
    CREATE TABLESAPCE TS001
    DATAFILE 'D:\TEST\DB1\DF001.DBF' SIZE 55M
    DEFAULT STORAGE ( INITIAL 1024K NEXT 512K MAXEXTENTS 128 PCTINCREASE 0);
    
CREATE TABLESAPCE IS001
DATAFILE 'D:\TEST\DB1\IF001.DBF' SIZE 30M
DEFAULT STORAGE ( INITIAL 512K NEXT 256K MAXEXTENTS 128 PCTINCREASE 0);
  • 테이블 스페이스 생성 확인
    SELECT TABLESPACE_NAME, FILE_NAME AS DATAFILE, (BYTES/1024) AS SZ_KB
    FROM DBA_DATA_FILES;
    

9.4 사용자 및 역할과 권한 지정

  • 데이터베이스를 사용할 수 있도록 사용자 계정을 생성하고 역할과 권한을 지정.
  • DDL 문장
    CREATE USER BONSA01 IDENTIFIED BY BONSA01
    DEFAULT TABLESPACE USERS
    TEMPORARY TABLESPACE TEMP;
    
  • 사용자 생성 확인
    SELECT USERNAME, DEFAULT_TABLESPACED, TEMPORARY_TABLESPACE, PROFILE
    FROM DBA_USERS;
    
  • 역할 생성 DDL 문장
    CREATE ROLE BONSA_ROLE NOT IDENTIFIED;
    GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, ALTER ROLLBACK SEGMENT TO BONSA_ROLE;
    
  • 역할 생성 확인
    SELECT ROLE FROM DBA_ROLES;
    
  • 권한 부여 DDL 문장
    GRANT BONSA_ROLE TO BONSA01;
    
  • 권한 부여 확인
    SELECT GRANTEE, GRANTED_ROLE
    FROM DBA_ROLE_PRIVS;
    

9.5 오브젝트 생성

  • 테이블 생성 DDL 문장
    CREATE TABLE DEPT (
    	DEPTNO			NUMBER(2) NOT NULL,
    	DEPTNM			VARCHAR2(14) NOT NULL,
    	LOC				VARCHAR2(14) NULL,
    	CHARGE			VARCHAR2(20) NULL
    ) TABLESPACE TS001
    STORAGE ( INITIAL 1M NEXT 1M PCTINCREASE 0 );
    ALTER TABLE DEPT ADD CONSTRAINT DEPT_PK PRIMARY KEY ( DEPTNO );
    
  • 테이블 생성 확인
    SELECT SEGMENT_NAME, ROUNT(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';
    
  • PK 확인
    SELECT TABLE_NAME, CONSTRAINT_NAME
    FROM USER_CONSTRAINTS
    WHERE CONSTRAINT_TYPE = 'P';
    
  • FK 확인
    SELECT CONSTRAINT_NAME, R_CONSTRAINT_NAME, STATUS
    FROM USER_CONSTRAINTS
    WHERE CONSTRAINT_TYPE = 'R';
    
  • 인덱스 생성 DDL 문장
    CREATE INDEX I_EMP01 ON EMP ( DEPTNO ASC ) TABLESPACE IS001;
    
  • 인덱스 생성 확인
    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 SGEMENT_TYPE = 'INDEX';
    
    SELECT TABLE_NAME, INDEX_NAME
    FROM USER_INDEXES;
    
  • 뷰 생성 DDL 문장
    CREATE VIEW V_EMP AS
    	SELECT EMPNO, EMPNM, DEPTNO
    	FROM EMP;
    
  • 뷰 생성 확인
    SELECT OBJECT_NAME, OBJECT_TYPE, STATUS
    FROM USER_OBJECTS
    WHERE OBJECT_TYPE = 'VIEW';
    

9.6 분산 환경 생성

  • 연결 대상인 데이터베이스 쪽(Remote) 서버에 리스너가 기동되어야 한다.
  • 연결하고자 하는 쪽에서는 Net8 클라이언트가 설치되어 있으면서 Tnsnames.ora 파일이 구성되어야 한다.
  • 로컬 데이터베이스와 연결 데이터베이스간 데이터베이스 링크를 설정하면 분산 환경 구성이 완료된다.
  • 원격 데이터베이스 리스너 기동
    lsnrctl start
  • 로컬 서버 Tnsnames.ora 파일 구성
  • $ORACLE_HOME/NETWORK/ADMIN/tnsnames.ora
    BONSA =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
    (SERVICE_NAME = BONSA))
  • 데이터베이스 링크 생성(DATABASE LINK)
  • 데이터베이스 링크는 참조를 하려는 쪽인 로컬에서 데이터베이스 링크 생성 권한을 가진 사용자가 생성.
    CREATE PUBLIC DATABASE LINK H2U1
    CONNECT TO BONSA01 INDENTIFIED BY BONSA01
    USING 'BONSA';
    

※ 데이블 생성 DDL 문장

  • 본사 테이블 생성 DDL 문장
  • 분산 환경 설계서에서 각 테이블의 어느 위치에 생성되는지 확인
  • 테이블 설계서와 테이블 스페이스 용량 산정서를 참조하여 DDL 문장을 생성
  • 스냅샷 테이블 생성
  • 본사 환경 설정 (스냅샷 로그 테이블 생성)
    CREATE SNAPSHOT LOG ON EMP
    	TABLESPACE TS001
    	STORAGE(INITIAL 1M NEXT 1M PCTINCREASE 0);
    
  • 지사 환경 설정 ( 스냅샷 생성 )
    CREATE SNAPSHOT EMP
    	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 EMP@BONSA; <-- 데이터베이스 링크명
    

문서에 대하여

  • 최초작성자 : [VLDB:김종원]
  • 최초작성일 : 2008년 06월 20일
  • 이 문서는 오라클클럽 [대용량 데이터베이스 스터디] 모임에서 작성하였습니다.
  • 이 문서의 내용은 데이터베이스 설계와 구축(개정판) 이춘식 저 서적을 스터디 하면서 정리한 내용 입니다.
  • 이 문서를 다른 블로그나 홈페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.