- Oracle 9i가 ORACLE_HOME에 설치되었다고 가정

 

1. O/S 환경변수 설정 - ORACLE_HOME, ORACLE_SID, PATH, LD_LIBRARY_PATH

2. initsid.ora 파라메터 파일 생성 및 편집

3. SQL*Plus 에서 CREATE DATABASE command 실행

4. catalog.sql and catproc.sql 스크립트 실행

5. pupbld.sql 스크립트 실행

6. 사용자 데이터를 위한 tablespace 생성

 

 

Step 1]

 - ORACLE_SID = machine 에서 운용중인 db instance를 구별하기 위해서 O/S에 의해서 사용된다.

a. Bourne or Korn shell

$ ORACLE_HOME=/u01/oracle9i/product/9.0.1; export ORACLE_HOME

$ ORACLE_SID=db01; export PATH

$ PATH=/usr/bin:/usr/ccs/bin:$ORACLE_HOME/bin; export PATH

$ LD_LIBRARY_PATH=/usr/lib:$ORACLE_HOME/lib; export LD_LIBRARY_PATH

 

b. shell

% setenv ORACLE_HOME /u01/oracle9i/product/9.0.1

% setenv ORACLE_SID db01

% setenv PATH $PATH:$ORACLE_HOME/bin

% setenv LD_LIBRARY_PATH /usr/lib:$ORACLE_HOME/lib

 

Step 2]

 - 초기화 파일은 db의 시작 시점뿐만이 아니라 db의 생성시점에도 사용된다.

    sample init.ora 파일이 $ORACLE_HOME/dbs 에 있으며 이 복사본을 변경하지 않는 상태로

    유지한다. initsid.ora 파일의 복사본이 좋다.

 - 파라메터의 순서는 상관이 없지만 중복된 경우에는 맨 마지막의 것이 사용된다.

 - 다음의 파라메터는 반드시 존재해야 한다.

    ㄱ. db_name : 보통 ORACLE_SID와 동일하다. db 생성시에 필요하며 case sensitive 하다.

    ㄴ. control_files : db를 위한 컨트롤 파일의 full path and file name

    ㄷ. undo_management : auto 로 설정

    ㄹ. core_dump_dest, user_dump_dest, background_dump_dest

$ cd $ORACLE_HOME/dbs

$ cp init.ora initdb01.ora

 

(sample initdb01.ora)

background_dump_dest=$HOME/ADMIN/BDUMP

compatible=9.0.0

control_files=$HOME/ORADATA/u01/ctrl_01_sid.ctl

core_dump_dest=$HOME/ADMIN/CDUMP

db_block_size=4096

db_cache_size=4M

db_domain=world

db_name=db01

global_names=TRUE

instance_name=db01

max_dump_file_size=10240

remote_login_passwordfile=exclusive

service_names=db01

shared_pool_size=8M

undo_management=AUTO

user_dump_dest=$HOME/ADMIN/UDUMP

 

Step 3]

- db 생성 스크립트를 nomount 상태로 접속하여 실행한다.

- SQL*Plus에 연결하는 Unix 사용자가 administrator's group이면

  $ sqlplus '/ as sysdba'

     or

  $ sqlplus /nolog

  SQL>connect / as sysdba

- SQL*Plus에 연결하는 Unix 사용자가 administrator's group이 아니라면 관리자에 의해서

   password 파일이 생성되어야 한다.

  $ sqlplus 'sys/oracle as sysdba'

     or

  $ sqlplus /nolog

SQL>connect sys/oracle as sysdba

SQL>startup nomount

SQL>@crdbdb01.sql

(sample crdbdb01.sql)

CREATE DATABASE db01

   USER SYS IDENTIFIED BY ORACLE

   USER SYSTEM IDENTIFIED BY MANAGER

   CONTROLFILE REUSE

   LOGFILE

      GROUP 1 ('$HOME/ORADATA/u03/log_01_01_db01.rdo') SIZE 100M,

      GROUP 2 ('$HOME/ORADATA/u03/log_02_01_db01.rdo') SIZE 100M,

      GROUP 3 ('$HOME/ORADATA/u03/log_03_01_db01.rdo') SIZE 100M

   MAXLOGFILES 5

   MAXLOGMEMBERS 5

   MAXLOGHISTORY 1

   MAXDATAFILES 100

   MAXINSTANCES 1

   ARCHIVELOG

   FORCE LOGGING  

   DATAFILE '$HOME/ORADATA/u01/system_01_db01.dbf' SIZE 100M

      AUTOEXTEND ON NEXT 5M MAXSIZE 450M

   DEFAULT TEMPORARY TABLESPACE temp

      TEMPFILE '$HOME/ORADATA/u02/temp_01_db01.dbf' SIZE 150M

      AUTOEXTEND ON NEXT 5M MAXSIZE 300M

   UNDO TABLESPACE undotbs

   SET TIME_ZONE='Asia/Seoul'

   CHARACTER SET WE8ISO8859P1

   NATIONAL CHARACTER SET AL16UTF16

 

Step 4]

- data dictionary view를 생성하기 위해서 @$ORACLE_HOME/rdbms/admin/catalog.sql 실행

- PL/SQL 을 사용하기 위해서 필요한 package와 procedure 생성하기 위해서 @$ORACLE_HOME/rdbms/admin/catproc.sql

  $ sqlplus /nolog

  SQL>connect sys/oracle as sysdba

 

- 두개의 스크립트 실행 후에 object가 유효한지를 검사.

SQL> select owner, object_name, object_type
  2  from dba_objects
  3  where status='INVALID'
  4  order by owner, object_type, object_name;

선택된 레코드가 없습니다.

 

Step 5]

 - Product User Profile table과 관련 procedure를 생성하기 위해서

   @$ORACLE_HOME/sqlplus/admin/pupbld.sql 실행

  반드시 SYSTEM 사용자로 접근한다.

 $sqlplus system/manager

 SQL>@$ORACLE_HOME/sqlplus/admin/pupbld.sql

 

Step 6]

 -  기타 테이블 스페이스 생성, USERS(user data), TOOLS(SYSTEM 사용자가 생성하는 object)

SQL> create tablespace USERS
  2  datafile '$HOME/ORADATA/u03/users_01_db01.dbf' SIZE 25M
  3  PERMANENT
  4  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K
  5  SEGMENT SPACE MANAGEMENT auto;