본문 바로가기
ORACLE/DB

[Oracle] Sample Schema HR, OE, PM, IX, SH, BI 생성

by 마이자몽 🌻♚ 2020. 7. 15.

Oracle Sample Schema

오라클 데이터베이스를 수동생성하거나 Sample Schema를 추가하지 않는 경우 테스트할 수 있는 데이터가 없습니다. 오라클에서 제공해주는 샘플 스키마로 6가지가 있습니다.

HR : Human Resource
OE : Order Entry
PM : Product Media
IX : Information Exchange
SH : Sales History
BI : Business Intelligence

 

해당 글에서는 위 6개의 샘플 스키마를 수동으로 생성하는 방법을 알려드리겠습니다.

 

 

Sample Schema 생성

실습환경

OS : Red Hat Enterprise Linux Server release 6.10
DB : Oracle 12.1.0.2
SID : testdb

 

 

아래 링크는 Oracle이 운영하는 github입니다. 샘플 스키마를 만들어주는 파일을 제공하니 버전에 맞게 설치 후 작업 진행합니다.

 

Releases · oracle/db-sample-schemas

Oracle Database Sample Schemas. Contribute to oracle/db-sample-schemas development by creating an account on GitHub.

github.com

 

 

 

Oracle 12.1.0.2 버전을 사용하여 실습 진행하니 tar.gz 파일로 받아줍니다. 해당 파일은 서버에 적당한 위치에 넣어주는 것으로 실습 준비를 끝냅니다.

 

 

생성 스크립트 설정

[testdb@host01 ~]$ tar xvfz db-sample-schemas-12.1.0.2.tar.gz
[testdb@host01 ~]$ cd db-sample-schemas-12.1.0.2
[testdb@host01 db-sample-schemas-12.1.0.2]$ cp -R ./* $ORACLE_HOME/demo/schema
[testdb@host01 db-sample-schemas-12.1.0.2]$ cd $ORACLE_HOME/demo/schema/

압축파일을 풀어주고 $ORACLE_HOME/demo/schema 경로 아래 파일들을 이동시켜 줍니다.

 

 

[testdb@host01 schema]$ vi mksample.sql

샘플 스키마를 생성하기 위해 mksample.sql이라는 파일을 실행할겁니다. 파일을 열어보면 경로로 표시되어야하는 부분이 '__SUB__CWD__'로 되어있습니다. 해당 부분을 변경해주기 위해 명령어를 사용하겠습니다.

 

[testdb@host01 schema]$ cd $ORACLE_HOME/demo/schema
[testdb@host01 schema]$ perl -p -i.bak -e 's#__SUB__CWD__#'$(pwd)'#g' *.sql */*.sql */*.dat

perl 명령어를 사용해서 작업에 필요한 파일들 안에 '__SUB__CWD__'를 현재 위치해 있는 경로로 변경합니다. 해당 명령어를 사용할때는 꼭 $ORACLE_HOME/demo/schema아래서 실행합니다.

 

 

생성 스크립트 실행

생성 스크립트를 실행할때 몇가지 데이터베이스의 정보를 알고 있어야합니다. 실행시 system과 sys의 비밀번호를 물을것이고 생성할 스키마의 비밀번호들을 지정합니다. 이후 사용할 Tablespace 명, Temporary Tablespace 명, 로그 위치 그리고 connection URL을 입력해줘야합니다. multinenant 환경에서는 PDB로 연결이 필요합니다.

 

테이블스페이스 생성
SYS@testdb> create tablespace examples
datafile '/u01/app/oracle/oradata/testdb/examples01.dbf' size 200m;

사용할 테이블스페이스를 생성해줍니다.

 

SYS@testdb> select tablespace_name, contents from dba_tablespaces;

 

리스너 실행
[testdb@host01 ~]$ lsnrctl start
[testdb@host01 testdb]$ lsnrctl ser  

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 15-JUL-2020 16:16:55

Copyright (c) 1991, 2014, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host01)(PORT=1521)))
Services Summary...
Service "testdb" has 1 instance(s).
  Instance "testdb", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:48 refused:0 state:ready
         LOCAL SERVER
The command completed successfully

 

이지 커넥션을 통해서하는 작업들이 있어 리스너를 실행시켜줍니다.

 

필요한 정보들을 확인했으니 이제 생성 스크립트를 실행해보겠습니다.

 

 

SYS@testdb> @?/demo/schema/mksample.sql

specify password for SYSTEM as parameter 1:
Enter value for 1: oracle

specify password for SYS as parameter 2:
Enter value for 2: oracle

specify password for HR as parameter 3:
Enter value for 3: hr      

specify password for OE as parameter 4:
Enter value for 4: oe

specify password for PM as parameter 5:
Enter value for 5: pm

specify password for IX as parameter 6:
Enter value for 6: ix

specify password for  SH as parameter 7:
Enter value for 7: sh

specify password for  BI as parameter 8:
Enter value for 8: bi

specify default tablespace as parameter 9:
Enter value for 9: examples

specify temporary tablespace as parameter 10:
Enter value for 10: temp

specify log file directory (including trailing delimiter) as parameter 11:
Enter value for 11: $ORACLE_HOME/demo/schema/log/

specify connect string as parameter 12:
Enter value for 12: localhost:1521/testdb                       

Sample Schemas are being created ...

스키마 생성이 완료되었습니다. 생성과정에서 각각 데이터베이스 환경에따라 생성이 안되거나 누락되는 데이터가 생길 수 있습니다. 테스트상 가장 많이 사용하는 HR 스키마를 제외하고는 조금씩 문제가 생기는 스키마가 있습니다. 간단한 실습을 위해서 HR 스키마만 있어도 문제가 안된다면 그대로 사용하거나 아래 명령을 통해서 HR스키마만 생성하여 사용해도됩니다.

SYS@testdb> @?/demo/schema/human_resources/hr_main.sql
specify password for HR as parameter 1:
Enter value for 1: hr

specify default tablespeace for HR as parameter 2:
Enter value for 2: examples

specify temporary tablespace for HR as parameter 3:
Enter value for 3: temp

specify password for SYS as parameter 4:
Enter value for 4: oracle

specify log path as parameter 5:
Enter value for 5: $ORACLE_HOME/demo/schema/log/

specify connect string as parameter 6:
Enter value for 6: localhost:1521/testdb

 

 

에러발생에대한 부분은 설정한 로그파일에서 확인할 수 있습니다.

 

댓글3

  • 와 수동으로 생성하는 방법도 어렵지 않네요!
    답글

  • 알려주세요제발 2021.11.25 20:49

    안녕하세요! sql 공부하려고 오라클을 이용하는 이번 21c 버전부터는 hr 계정이 셋팅이 안되어 있어서 새로 만들려고 하는데 비전공자이다 보니 설명이 너무 어렵고 이해하기가 힘드네요 ㅠㅠ 어떻게 하면 hr schema를 설치할 수 있을까요?
    답글

    • 샘플 스키마를 쿼리형태로 제공하는 자료를 찾으시는게 가장 쉽게 세팅할 수 있는 방법입니다. ㅎㅎ 아마 검색하시면 금방 나올 것 같습니다.