행위

오라클 수동설치

DB CAFE

thumb_up 추천메뉴 바로가기


1 오라클 수동설치[편집]

 attach_file

  • 테스트 완료 버전 (11g,12c,..)
  • CREATE DATABASE 명령어를 사용해서 DB 생성(dbca 사용하지 않고)
  • 신규 SID 생성 하여 개별 업무 관리


1.1 OS 환경변수 설정[편집]

  1. ORACLE_SID, ORACLE_HOME 환경변수 설정(Oracle Instance를 기동시 연결할 데이터베이스 정보)
  2. oraenv를 사용하여 다중 DB 접속 환경변수 변경작업
  • 오라클 설치 위치 : /u01/app (사용자별로 다름)
$ . oraenv
ORACLE_SID = [orcl] ? prod
ORACLE_HOME = [/u01/app/oracle] ? /u01/app/oracle/product/11.2.0/dbhome_1

The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 is /u01/app/oracle

[oracle@6host ~]$ echo $ORACLE_SID
prod

$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0/dbhome_1

1. oratab 파일 수정 oraenv를 사용해서 환경변수 변경작업이 가능하지만, ORACLE_HOME 경로같은 경우는 오타 문제 때문에 /etc/oratab 파일을 열어 변수를 정의하듯 미리 변경할 정보를 저장해두면 더 간편하게 환경변수 수정 가능.

$ vi /etc/oratab
# This file is used by ORACLE utilities.  It is created by root.sh
# and updated by the Database Configuration Assistant when creating
# a database.
# A colon, ':', is used as the field terminator.  A new line terminates
# the entry.  Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
#   $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively.  The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N
  • orcl는 기존 생성한 SID
  • ORACLE_SID=prod (추가 생성할 데이터베이스)
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N
prod:/u01/app/oracle/product/11.2.0/dbhome_1:N

oratab 파일 수정 후 oraenv 명령으로 prod로 변경.

$ . oraenv 
ORACLE_SID = [prod] ? prod
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 is /u01/app/oracle

ORACLE_SID 값만 입력하면 ORACLE_HOME에 대한 정보를 자동 인식하여 변경 완료.
 

=== 오라클 PFILE/SPFILE 생성 ===

1. pfile 생성
* 파라미터 파일에 DB명,컨트롤파일,SGA_TARGET,... 추가

<source lang=shell>
$ cd $ORACLE_HOME/dbs

[oracle@host dbs]$ ls
hc_DBUA0.dat  hc_orcl.dat  init.ora  initorcl.ora  lkORCL  orapworcl  spfileorcl.ora
[oracle@host dbs]$ vi initprod.ora

db_name=prod
control_files='/u01/app/oracle/oradata/prod/control01.ctl'
sga_target=400M
remote_login_passwordfile='EXCLUSIVE'
  • Database Create는 nomount 상태에서 가능.
  • 파라미터 파일을 읽을 수 있는 상태까지 Database를 올리는 작업이 필요하여 pfile을 직접 생성하여 최소로 필요한 내용 작성.
  • pfile은 $ORACLE_HOME/dbs 경로에 init<ORACLE_SID>.ora 형태로 파일이 존재해야함.
  • 기본적으로 Parameter file을 열기 위해서는 db_name, control_files, shared_pool_size 그리고 db_cache_size 이 4개지 파라미터가 정의되어 있어야함.
    (하지만 sga_target 파라미터를 정의한다면 sga 메모리를 자동으로 할당하기 때문에 shared_pool_size와 db_cache_size의 정보를 제외.
  • remote_login_passwordfile은 Password fie이 하나의 데이터베이스에서 사용할 수 있도록 설정.(필수요소는 아님)


2. spfile 생성

$ sqlplus / as sysdba

SQL> create spfile from pfile;

File created.

SQL> !ls $ORACLE_HOME/dbs
hc_DBUA0.dat  hc_orcl.dat  init.ora  initorcl.ora  initprod.ora  lkORCL  orapworcl  spfileorcl.ora  spfileprod.ora

pfile을 사용해서 실행할 수 있지만, 편의상 작성한 pfile로 spfile을 생성하고 Database를 실행.

spfile 생성 작업은 DB가 내려가있는 상태에서 만들 수 있고 생성 이후 spfile<ORACLE_SID>.ora 형태의 파일이 생성된것 확인 필요.


1.2 DB nomount 실행[편집]

SQL> startup nomount
ORACLE instance started.

Total System Global Area  417546240 bytes
Fixed Size		    2213936 bytes
Variable Size		  134219728 bytes
Database Buffers	  272629760 bytes
Redo Buffers		    8482816 bytes
  • Database 생성을 위해 nomount 상태로 DB 실행.
 (정상적으로 올라왔다면 생성한 pfile에 문제 없다는 뜻)


1.3 DB 생성[편집]

1. 오라클 데이터 저장 경로 생성 (T/S,REDO로그,등.. )

$ mkdir  /u01/app/oracle/oradata/prod

DB 생성하면서 만들어질 datafile, redologfile들의 경로 생성

$ sqlplus / as sysdba

CREATE DATABASE prod
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
CONTROLFILE REUSE
LOGFILE GROUP 1 ( '/u01/app/oracle/oradata/prod/redo01a.log'
                , '/u01/app/oracle/oradata/prod/redo01b.log' ) SIZE 100M REUSE,
        GROUP 2 ( '/u01/app/oracle/oradata/prod/redo02a.log'
                , '/u01/app/oracle/oradata/prod/redo02b.log' ) SIZE 100M REUSE
       DATAFILE '/u01/app/oracle/oradata/prod/system01.dbf' SIZE 400M REUSE AUTOEXTEND EXTENT MANAGEMENT LOCAL
             ON SYSAUX DATAFILE '/u01/app/oracle/oradata/prod/sysaux01.dbf' SIZE 200M REUSE AUTOEXTEND 
             ON DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/app/oracle/oradata/prod/temp01.dbf' SIZE 100M REUSE AUTOEXTEND 
             ON UNDO TABLESPACE UNDOTBS1 DATAFILE '/u01/app/oracle/oradata/prod/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND \
             ON CHARACTER SET KO16MSWIN949;

-- CHARACTER SET AL32UTF8
-- NATIONAL CHARACTER SET AL16UTF16;

Database created.
  • USER SYS IDENTIFIED ... : SYS 유저 비밀번호 지정
  • USER SYSTEM IDENTIFIED ... : SYSTEM 유저 비밀번호 지정
  • CONTROLFILE :REUSE 명령을 사용하기 위해 명시. LOGFILE GROUP 이나 DATAFILE들에서도 REUSE(파일이 이미 존재한다면 해당 파일 이름 그대로 사용하여 덮어써서 DB를 생성) 옵션
  • LOGFILE GROUP : 로그 파일은 최소 2개의 그룹으로 지정 해야함 .
  • EXTENET MANAGEMENT LOCAL : LOCAL 방식은 Tablespace에 대한 free space 공간을 datafile 자체에서 bitmap을 이용해서 관리하는 방법.
  • 다른방법으로 Tablespace의 free space 공간에 대한 정보를 data dictionary에서 관리하는 DICTIONARY 방식이 있지만
  • data dictionary에 대한 경합이 발생하고 성능저하의 원인으로 Oracle 8i부터 LOCAL 방식이 처음 소개되면서 이 방식으로 관리하도록 권장.


리두로그 3개 그룹으로 추가 예)

CREATE DATABASE "prod"
        LOGFILE
	    GROUP 1 ('/u01/app/oracle/oradata/prod/redo01.log') SIZE 20M,
	    GROUP 2 ('/u01/app/oracle/oradata/prod/redo02.log') SIZE 20M,
	    GROUP 3 ('/u01/app/oracle/oradata/prod/redo03.log') SIZE 20M
	   DATAFILE '/u01/app/oracle/oradata/prod/system01.dbf' SIZE 700M  EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/u01/app/oracle/oradata/prod/sysaux01.dbf' SIZE 500M
	    DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/app/oracle/oradata/prod/temp01.dbf' SIZE 2000M
           UNDO TABLESPACE "UNDOTBS1" DATAFILE '/u01/app/oracle/oradata/prod/undotbs01.dbf' SIZE 300M AUTOEXTEND ON NEXT  100M MAXSIZE 1000M
	  CHARACTER SET KO16MSWIN949;


1.4 DB Open 확인[편집]

1. DB 오픈 상태 확인

SQL> select instance_name, status from v$instance; 


INSTANCE_NAME    STATUS                                                                                                                                     
---------------- ------------                                                                                                                               
prod             OPEN

Instance가 Open 상태인지 확인


1.5 오라클 설치 후 후속작업[편집]

  • 하지만 수동 생성했을 때 Data Dictionary 조회작업이나, Oracle에서 제공하는 패키지들이 실행되지 않음.
  • 이런 문제들을 해결하기 위해 몇 가지 후속작업 진행 해야함.


1. 딕셔너리,패키지(catalog.sql, catproc.sql) 실행

cd $ORACLE_HOME/rdbms/admin/

sqlplus "/as sysdba"

SQL> @catalog.sql
=>데이터 딕셔너리 뷰와 다이나믹 퍼포먼스 뷰를 생성

SQL> @catproc.sql

=>PL/SQL을 사용하는데 필요한 패키지 및 프로시져를 생성


2. invalid 상태인 오브젝트가 있는지 확인

sql>  select object_name  from dba_objects where status='INVALID' and owner='SYS';

3. password 파일 생성

cd $ORACLE_HOME/dbs

orapwd file=orapwnewdb password=oracle

4. tnsnames.ora, listener.ora 파일 수정

cd $ORACLE_HOME/network/admin

vi tnsnames.ora

vi listener.ora


※ PUPBLD.SQL

유저 생성후 로그인 할때 아래 메세지 발생시.


PRODUCT_USER_PROFILE를 액세스하는데 오류입니다 경고: 사용자 프로파일 정보가 적재되지 않았습니다. SYSTEM으로 PUPBLD.SQL 실행이 필요합니다


cd $ORACLE_HOME/sqlplus/admin

sqlplus system/******

SQL> @pupbld
  • pupbld.sql 스크립트는 Product User Profile 테이블 및 관련 프로시져를 생성.

1.6 멀티 SID 사용 확인[편집]

1.환경변수 변경

$ . oraenv 
ORACLE_SID = [prod] ? orcl

The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 is /u01/app/oracle
$ sqlplus / as sysdba

2.prod에 붙어서 작업하다가 orcl로 변경해서 작업하기 위해서 oraenv로 환경변수의 정보 변경 후 로그인.

1) orcl instance startup

SQL> startup

2) orcl instance 기동

SQL> select instance_name, status from v$instance;

orcl에서도 마찬가지로 instance의 open 상태를 확인.

$ ps -ef | grep smon
  • 주요 프로세스중 하나인 smon의 프로세스가 기동중인지 확인.
  • prod와 orcl모두 올라와 있다면 각각 데이터베이스에 연결된 인스턴스 확인.