[Oracle] 오라클 database 생성 (수동)

·2025년 8월 26일

오라클 관리

목록 보기
45/163


🔸 이론1. database를 dbca로 만들지 않고 수동으로 만들어야 하는 이유

💡 스토리지를 raw device 를 쓸거면 수동으로 만들 수밖에 없음


🔸 이론2. database를 만드는 순서

💡 인스턴스를 먼저 띄우고 database를 생성


🔸 이론3. 인스턴스를 만드는 방법

💡 파라미터 파일을 만들고 startup nomount 실행


실습1. 이름 영문 이니셜로 db를 생성하기 위해 파라미터 파일을 다음과 같이 생성합니다.

ora12c 쪽으로 와서 기존 db를 shutdown immediate 로 내립니다.

[oracle@ora12c dbs]$ vi initkbm.ora
[oracle@ora12c dbs]$
[oracle@ora12c dbs]$ cat initkbm.ora
db_name=kbm
compatible=12.2.0.0.0

sga_target = 256M

undo_management = AUTO
undo_tablespace = UNDOTBS

processes = 100

remote_login_passwordfile = EXCLUSIVE

control_files = (/u01/app/oracle/oradata/kbm/disk1/ctrl1.ctl ,
                 /u01/app/oracle/oradata/kbm/disk2/ctrl2.ctl ,
                 /u01/app/oracle/oradata/kbm/disk3/ctrl3.ctl)


[oracle@ora12c dbs]$

💡

db_name=kbm     # db 이름  
compatible=12.2.0.0.0  # 오라클 버젼

sga_target = 256M   # 오라클 메모리 사이즈 

undo_management = AUTO   # rollback(취소)를 위한 db관리를 자동화 하겠다.
undo_tablespace = UNDOTBS  # rollback(취소)를 위한 data 를 저장하는 공간 

processes = 100  # 오라클 프로세서의 갯수 

remote_login_passwordfile = EXCLUSIVE  # 리스너 통해서 sys 유져로 접속하려면 반드시 설정

control_files = (/u01/app/oracle/oradata/kbm/disk1/ctrl1.ctl ,  # 다중화할 컨트롤 파일의 위치
                              /u01/app/oracle/oradata/kbm/disk2/ctrl2.ctl ,
                              /u01/app/oracle/oradata/kbm/disk3/ctrl3.ctl)

실습2. 영문 이니셜로 디렉토리를 생성합니다.

[oracle@ora12c ~]$ mkdir -p /u01/app/oracle/oradata/kbm
[oracle@ora12c ~]$
[oracle@ora12c ~]$ cd /u01/app/oracle/oradata/kbm
[oracle@ora12c kbm]$
[oracle@ora12c kbm]$ mkdir disk1 disk2 disk3 disk4 disk5

실습3. 내 영문 이니셜로 만든 오라클 인스턴스를 올립니다.

[oracle@ora12c ~]$ echo $ORACLE_SID
ORA12
[oracle@ora12c ~]$
[oracle@ora12c ~]$ export ORACLE_SID=kbm
[oracle@ora12c ~]$
[oracle@ora12c ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on826 14:48:21 2025

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

휴지 인스턴스에 접속되었습니다.


SQL> startup nomount pfile=$ORACLE_HOME/dbs/initkbm.ora
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  268435456 bytes
Fixed Size                  8619696 bytes
Variable Size             159385936 bytes
Database Buffers           92274688 bytes
Redo Buffers                8155136 bytes
SQL>
SQL> select instance_name, status from v$instance;

INSTANCE_NAME
------------------------------------------------
STATUS
------------------------------------
kbm
STARTED

실습4. create database 스크립트를 수행해서 db를 생성합니다.

SQL> create database kbm
user sys identified by oracle
user system identified by oracle
datafile '/u01/app/oracle/oradata/kbm/disk1/system01.dbf' 
size 100M autoextend on maxsize unlimited extent management local
sysaux 
datafile '/u01/app/oracle/oradata/kbm/disk2/sysaux01.dbf' 
size 50M autoextend on maxsize unlimited
default temporary tablespace temp
tempfile '/u01/app/oracle/oradata/kbm/disk3/temp01.dbf' 
size 50M autoextend on maxsize unlimited
undo tablespace undotbs
datafile '/u01/app/oracle/oradata/kbm/disk4/undotbs01.dbf' 
size 50M autoextend on maxsize unlimited
logfile 
group 1 ('/u01/app/oracle/oradata/kbm/disk4/redoG1M1.rdo',
        '/u01/app/oracle/oradata/kbm/disk5/redoG1M2.rdo') size 100M,
group 2 ('/u01/app/oracle/oradata/kbm/disk4/redoG2M1.rdo',
        '/u01/app/oracle/oradata/kbm/disk5/redoG2M2.rdo') size 100M,
group 3 ('/u01/app/oracle/oradata/kbm/disk4/redoG3M1.rdo',
        '/u01/app/oracle/oradata/kbm/disk5/redoG3M2.rdo') size 100M,
group 4 ('/u01/app/oracle/oradata/kbm/disk4/redoG4M1.rdo',
        '/u01/app/oracle/oradata/kbm/disk5/redoG4M2.rdo') size 100M,
group 5 ('/u01/app/oracle/oradata/kbm/disk4/redoG5M1.rdo',
         '/u01/app/oracle/oradata/kbm/disk5/redoG5M2.rdo') size 100M;

실습5. data dictionary 를 생성하는 스크립트를 수행합니다.

SQL> select instance_name, status from v$instance;

INSTANCE_NAME
------------------------------------------------
STATUS
------------------------------------
yys
OPEN

SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql

SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql

SQL>  connect  system/oracle

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

실습6. 위의 스크립트가 돌고 있는 동안에 putty 창을 하나 더 열고 kbm의 alert logfile을 모니터링하시오

[oracle@ora12c trace]$ cd /u01/app/oracle/diag/rdbms/kbm/kbm/trace
[oracle@ora12c trace]$
[oracle@ora12c trace]$ tail -f al*

문제1. kbm 데이터 베이스에 scott 유저를 생성하고 scott 유저로 접속해서 emp 테이블을 생성하시오

SQL> show user
USER"SYSTEM"입니다
SQL>
SQL> create user scott
  2   identified by tiger;

사용자가 생성되었습니다.

SQL> grant dba to scott;

권한이 부여되었습니다.

SQL> connect scott/tiger
연결되었습니다.
SQL> @demo

문제2. 설치했던 ORA12 데이터 베이스를 올리시오

[oracle@ora12c ~]$ export ORACLE_SID=ORA12
[oracle@ora12c ~]$
[oracle@ora12c ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on826 15:20:59 2025

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

휴지 인스턴스에 접속되었습니다.

SQL>
SQL> startup
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area 2415919104 bytes
Fixed Size                  8623544 bytes
Variable Size             671091272 bytes
Database Buffers         1728053248 bytes
Redo Buffers                8151040 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
SQL> exit;

[oracle@ora12c ~]$ ps -ef |grep pmon |grep -v grep
oracle    7132     1  0 14:49 ?        00:00:00 ora_pmon_kbm
oracle    9662     1  0 15:21 ?        00:00:00 ora_pmon_ORA12
[oracle@ora12c ~]$

문제3. ORA12 에 접속하는 sys 와 kbm 에 접속하는 sys 를 쉽게 접속할 수 있게 alias 를 생성하시오

alias sys='export ORACLE_SID=ORA12; sqlplus / as sysdba'
alias sysdw='export ORACLE_SID=kbm; sqlplus / as sysdba'

[oracle@ora12c ~]$ vi .bash_profile
[oracle@ora12c ~]$
[oracle@ora12c ~]$ source .bash_profile
[oracle@ora12c ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export ORA_INVENTORY=/u01/app/oraInventory
export ORACLE_SID=ORA12
export TNS_ADMIN=/u01/app/oracle/product/12.2.0/dbhome_1/network/admin
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG=KOREAN_KOREA.AL32UTF8
export PATH

export JAVA_HOME=/u01/app/java/jdk1.7.0_60
export PATH=JAVA_HOME/bin:$PATH
export CLASSPATH=.:/usr/java/jdk1.7.0_60/lib:$CLASSPATH
export HADOOP_HOME=/home/oracle/hadoop/hadoop-1.2.1
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HIVE_HOME=/home/oracle/apache-hive-1.2.2-bin
export  PATH=$HIVE_HOME/bin:$PATH

alias sys='export ORACLE_SID=ORA12; sqlplus / as sysdba'
alias sysdw='export ORACLE_SID=kbm; sqlplus / as sysdba'
alias scott='sqlplus scott/tiger'
alias net='cd /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/'
[oracle@ora12c ~]$ sys

SQL*Plus: Release 12.2.0.1.0 Production on826 15:24:53 2025

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

다음에 접속됨:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> exit;
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production에서 분리되었습니다.


[oracle@ora12c ~]$ sysdw

SQL*Plus: Release 12.2.0.1.0 Production on826 15:25:13 2025

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


다음에 접속됨:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

0개의 댓글