- 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;