Oracle 10g 싱글 silent 설치, 패치 및 DB 생성

기본 10g 설치의 리눅스 세팅에서 추가 해줘야하는 사항


# vi /etc/oraInst.loc

inventory_loc=/home/oracle/oraInventory

inst_group=dba


# chown oracle.dba /etc/oraInst.loc


원격 접속으로 설치 하기 위해서


# vi /home/oracle/.bash_profile


export DISPLAY=:0.0



rsp 파일 설정하기


# vi /home/oracle/database/response/enterprise.rsp


UNIX_GROUP_NAME="dba"

FROM_LOCATION="../stage/products.xml"

ORACLE_HOME="/home/oracle/product/10g"

ORACLE_HOME_NAME="OraHome"

n_configurationOption=3


Silent 설치


$ cd /home/oracle/database/

$ ./runInstaller -silent -force -waitforcompletion  -responseFile /home/oracle/database/response/enterprise.rsp




root 권한으로 아래 명령어를 실행시켜 줍니다.

# /home/oracle/product/10g/root.sh



설치가 완료 되었습니다.



Silent 패치하기


$ unzip p8202632_10205_LINUX.zip

$ cd Disk1


rsp 파일 설정 하기


$ vi /home/oracle/Disk1/response/patchset.rsp


UNIX_GROUP_NAME="dba" 

FROM_LOCATION="../stage/products.xml"

ORACLE_HOME="/home/oracle/product/10g" 

ORACLE_HOME_NAME="OraHome" 

DECLINE_SECURITY_UPDATES=true


$ ./runInstaller -silent -force -waitforcompletion -responseFile /home/oracle/Disk1/response/patchset.rsp




root 권한으로 아래 명령어를 실행시켜 줍니다.

#  /home/oracle/product/10g/root.sh




패치 완료



Silent DB 생성


rsp 설정하기


$ vi /home/oracle/database/response/dbca.rsp


GDBNAME = "testdb"

SID = "testdb" 

CHARACTERSET = "KO16MSWIN949"

NATIONALCHARACTERSET= "UTF8"


$ dbca -silent -templateName General_Purpose.dbc -responseFile /home/oracle/database/response/dbca.rsp


$ sqlplus / as sysdba

SQL > select status from v$instance;



DB가 생성 되었습니다.

Oracle 10g 싱글 OUI 설치, 패치 및 DB 생성

~]$ cd database

$ ./runInstaller










터미널을 띄워서 root 계정으로 로그인한후 1,2번 순서대로 실행시켜 주면 됩니다.

그리고 확인



오라클 설치가 완료 되었습니다.


오라클 패치하기


~]$ unzip p8202632_10205_LINUX.zip

~]$ cd Disk1

$ ./runInstaller








터미널을 띄워 root 계정을 로그인 한 후 실행. 그 후 확인.




DB생성


$ dbca












샘플 스키마는 딱히 설치 하지 않아도 되지만, 저는 sql 연습용으로 설치한거라 스키마를 설치 했습니다.



문자 집합 선택







$ sqlplus /nolog

SQL>

SQL> conn /as sysdba

SQL> select status from v$instance;


접속해서 설치가 잘되었는 여러 명령어를 이용해서 확인해줍니다.

Oracle 10g 싱글 설치 - (공통) RHEL4 리눅스 세팅

기본적으로 리눅스 설치는 RHEL4의 오라클 설치와 같습니다.


환경 변수 설정


# vi /etc/sysctl.conf


kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 262144


# /sbin/sysctl -p


# vi /etc/security/limits.conf


oracle soft    nproc 2047

oracle hard   nproc 16384

oracle soft    nofile        1024

oracle hard   nofile  65536


# vi /etc/pam.d/login


session required pam_limits.so


# groupadd - g dba

# useradd -g dba oracle

# passwd oracle


#vi /home/oracle/.bash_profile


export EDITOR=vi

export LD_ASSUME_KERNEL=2.4.19

export ORACLE_BASE=/home/oracle

export ORACLE_HOME=$ORACLE_BASE/product/10g

export ORACLE_SID=testdb

export LANG=ko_KR.eucKR

export ORACLE_TERM=xterm

export NLS_LANG=AMERICAN_AMERICA.KO16MSWIN949

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

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

export PATH=$PATH:$ORACLE_HOME/bin:/$ORA_CRS_HOME/bin

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib



오라클 설치 전 설치 파일 목록


binutils-2.15.92.0.2-13.EL4

compat-db-4.1.25-9

compat-libstdc++-296-2.96-132.7.2

control-center-2.8.0-12

gcc-3.4.3-22.1.EL4 gcc-c++-3.4.3-22.1.EL44

glibc-2.3.4-2.9 glibc-common-2.3.4-2.9

gnome-libs-1.4.1.2.90-44.1

libstdc++-3.4.3-22.1

libstdc++-devel-3.4.3-22.1

make-3.80-5

pdksh-5.2.14-30

sysstat-5.0.5-1

xscreensaver-4.18-5.rhel4.2

setarch-1.6-1



Patch


libaio-devel-0.3.105-2.i386.rpm

compat-libcwait-2.1-1.i386.rpm

compat-oracle-rhel4-1.0-5.i386.rpm



RAC 설치시 클러스터웨어 설치 실패시 조치 방법

1. 삭제 스크립트 실행

# $ORA_CRS_HOME/install/rootdelete.sh

# $ORA_CRS_HOME/install/rootdeinstall.sh


2. 노드 application 프로세스 중단

# srvctl stop nodeapps -n <node name>


3. 부팅 시 노드 application 자동 실행 방지(root 권한으로 실행)

Sun:


# rm /etc/init.d/init.cssd

# rm /etc/init.d/init.crs

# rm /etc/init.d/init.crsd

# rm /etc/init.d/init.evmd

# rm /etc/rc3.d/K96init.crs

# rm /etc/rc3.d/S96init.crs

# rm -Rf /var/opt/oracle/scls_scr

# rm -Rf /var/opt/oracle/oprocd

# rm /etc/inittab.crs

# cp /etc/inittab.orig /etc/inittab


Linux:


# rm -f /etc/init.d/init.cssd

# rm -f /etc/init.d/init.crs

# rm -f /etc/init.d/init.crsd

# rm -f /etc/init.d/init.evmd

# rm -f /etc/rc2.d/K96init.crs

# rm -f /etc/rc2.d/S96init.crs

# rm -f /etc/rc3.d/K96init.crs

# rm -f /etc/rc3.d/S96init.crs

# rm -f /etc/rc5.d/K96init.crs

# rm -f /etc/rc5.d/S96init.crs

# rm -Rf /etc/oracle/scls_scr

# rm -f /etc/inittab.crs

# cp /etc/inittab.orig /etc/inittab


HP-UX:

# rm /sbin/init.d/init.cssd

# rm /sbin/init.d/init.crs

# rm /sbin/init.d/init.crsd

# rm /sbin/init.d/init.evmd

# rm /sbin/rc3.d/K960init.crs

# rm /sbin/rc3.d/S960init.crs

# rm -Rf /var/opt/oracle/scls_scr

# rm -Rf /var/opt/oracle/oprocd

# rm /etc/inittab.crs

# cp /etc/inittab.orig /etc/inittab


HP Tru64:


# rm /sbin/init.d/init.cssd

# rm /sbin/init.d/init.crs

# rm /sbin/init.d/init.crsd

# rm /sbin/init.d/init.evmd

# rm /sbin/rc3.d/K96init.crs

# rm /sbin/rc3.d/S96init.crs

# rm -Rf /var/opt/oracle/scls_scr

# rm -Rf /var/opt/oracle/oprocd

# rm /etc/inittab.crs

# cp /etc/inittab.orig /etc/inittab


IBM AIX:


# rm /etc/init.cssd

# rm /etc/init.crs

# rm /etc/init.crsd

# rm /etc/init.evmd

# rm /etc/rc.d/rc2.d/K96init.crs

# rm /etc/rc.d/rc2.d/S96init.crs

# rm -Rf /etc/oracle/scls_scr

# rm -Rf /etc/oracle/oprocd

# rm /etc/inittab.crs

# cp /etc/inittab.orig /etc/inittab


5. Oracle Universal Installer에서 CRS home을 선택 후 "설치해제" 


6. dd 명령으로 OCR 및 Voting File을 제거


ex)

# dd if=/dev/zero of=/dev/raw/raw1 bs=8192

# dd if=/dev/zero of=/dev/raw/raw2 bs=8192

# dd if=/dev/zero of=/dev/rdsk/V1064_vote_01_20m.dbf bs=8192 count=2560

# dd if=/dev/zero of=/dev/rdsk/ocrV1064_100m.ora bs=8192 count=12800


만약 RDBMS 설치를 제거한다면, 사용중이던 ASM 디스크도 정리합니다.

CRS를 재 설치하고자 하면, RAC 설치 매뉴얼에 기술된 순서대로 설치를 다시 진행.

참고 : 프로세스가 살아 있다면 EVM, CRS 및 CRS 프로세스를 kill 시키거나 노드를 재부팅.


ps -ef | grep crs 

ps -ef | grep evm

ps -ef | grep css

Oracle 10g RAC (rawdevice) 설치 - 5 TEST

Oracle Database 상태 확인


$ crs_stop -f ora.rac.db

$ crs_start -f ora.rac.db


$ crs_stat -t


Name           Type           Target    State     Host

------------------------------------------------------------

ora.rac.db     application    ONLINE    ONLINE    rac1

ora....vice.cs application    OFFLINE   OFFLINE

ora....ac1.srv application    OFFLINE   OFFLINE

ora....c1.inst application    ONLINE    ONLINE    rac1

ora....c2.inst application    ONLINE    ONLINE    rac2

ora....C1.lsnr application    ONLINE    ONLINE    rac1

ora.rac1.gsd   application    ONLINE    ONLINE    rac1

ora.rac1.ons   application    ONLINE    ONLINE    rac1

ora.rac1.vip   application    ONLINE    ONLINE    rac1

ora....C2.lsnr application    ONLINE    ONLINE    rac2

ora.rac2.gsd   application    ONLINE    ONLINE    rac2

ora.rac2.ons   application    ONLINE    ONLINE    rac2

ora.rac2.vip   application    ONLINE    ONLINE    rac2


$ lsnrctl status


LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 10-MAR-2012 19:01:59


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


Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

STATUS of the LISTENER

------------------------

Alias                     LISTENER_RAC1

Version                   TNSLSNR for Linux: Version 10.2.0.5.0 - Production

Start Date                10-MAR-2012 17:38:19

Uptime                    0 days 1 hr. 23 min. 40 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /home/oracle/product/10g/db/network/admin/listener.ora

Listener Log File         /home/oracle/product/10g/db/network/log/listener_rac1.log

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.126.32)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.126.132)(PORT=1521)))

Services Summary...

Service "PLSExtProc" has 1 instance(s).

  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...

Service "rac" has 2 instance(s).

  Instance "rac1", status READY, has 2 handler(s) for this service...

  Instance "rac2", status READY, has 1 handler(s) for this service...

Service "rac_XPT" has 2 instance(s).

  Instance "rac1", status READY, has 2 handler(s) for this service...

  Instance "rac2", status READY, has 1 handler(s) for this service...

The command completed successfully


$ sqlplus / as sysdba


SQL> select status from v$instance;

 

STATUS

------------

OPEN

 

SQL> select name from v$controlfile;

 

NAME

--------------------------------------------

/dev/raw/raw12

/dev/raw/raw13

/dev/raw/raw14

 

 SQL> select a.tablespace_name, b.file_id, b.file_name, b.bytes/1024/1024 mb

  2  from dba_tablespaces a, dba_data_files b

  3  where a.tablespace_name=b.tablespace_name;

 

TABLESPACE_NAME    FILE_ID FILE_NAME                        MB

--------------- ---------- ------------------------------ ----

SYSTEM                   1 /dev/raw/raw6                              599

UNDOTBS1                2 /dev/raw/raw8                             199

SYSAUX                   3 /dev/raw/raw7                              299

UNDOTBS2                4 /dev/raw/raw9                             199

USERS                     5 /dev/raw/raw10                             99

 

SQL> select group#, member from v$logfile;

 

    GROUP# MEMBER

---------- --------------------

         1 /dev/raw/raw15

         1 /dev/raw/raw16

         2 /dev/raw/raw17

         2 /dev/raw/raw18

         3 /dev/raw/raw19

         3 /dev/raw/raw20

         4 /dev/raw/raw21

         4 /dev/raw/raw22

 

8 rows selected.



RAC Fail-Over 테스트


OLTP 서비스 시작


$ srvctl start service -d RAC -s oltp_service


$ srvctl status service -d RAC -s oltp_service

oltp_service 서비스가 rac1 인스턴스에서 실행 중임


참고 : 

OLTP 서비스는 DBCA로 DB를 생성 시 같이 생성하였습니다.


수동으로 생성 시 아래와 같이 실행합니다.


$ srvctl add service -d RAC -s oltp_service -r RAC1 -a RAC2

$ srvctl start service -d RAC -s oltp_service



CTF 작동여부 확인


- Node1에서 확인


SQL> show parameter service

 

NAME                                 TYPE                   VALUE

------------------------------------ ---------------------- ------------------------------

service_names                        string                 oltp_service


- Node2에서 확인


SQL> show parameter service

 

NAME                                 TYPE                   VALUE

------------------------------------ ---------------------- ------------------------------

service_names                        string                 rac


- Node1에서 작업


SQL> shutdown abort

ORACLE instance shut down.


- Node2에서 확인


SQL> show parameter service

 

NAME                                 TYPE                   VALUE

------------------------------------ ---------------------- ------------------------------

service_names                        string                 oltp_service



Oracle 10g RAC (rawdevice) 설치 - 4 DB 생성

OUI에서 DB 생성


$ dbca










원시 장치가 raw device 입니다.






위 화면에서 좌측 하단의 추가 버튼을 눌러줍니다.



oltp_service 입력



rac1 "선호", rac2 "사용가능"에 체크후 

하단에 "기본"에 체크



문자 집합은 KO16MSWIN949 에 맞춰 줍니다.



매개 변수 탭으로 가서, SPFILE에 체크하고, Raw deivce 테이블을 참고하여 맞는 rawdevice 번호를 넣어 줍니다.



제어파일은 control01, 02, 03 번 입니다. 역시 rawdevice 설정 했던 표를 참고 하여 맞는 번호와 경로를 지정해줍니다.



파란 부분을 더블 클릭 하면, 아래와 같은 창이 나옵니다.



역시 sysaux를 지정한 rawdevice 번호를 지정해줍니다.

용량은 lvcreate로 지정했던 요량 보다 1mb 작게 설정을 해주셔야 합니다. rawdevice는 1mb의 공간을 이용해 HDD의 정보를 담고 있기 때문입니다. 










redo01_a, b를 지정해줍니다.

두부분을 모두 사용하기 때문에 두개의 세팅한 디바이스를 설정해 줍니다.

1,2,3,4 모두 똑같이 설정해줍니다. 파일크기는 50mb로 세팅을 했었으니 49mb로 잡아 줍니다.







DB가 생성 되었습니다


$ crs_stat -t 


DB와 oltp를 확인합니다. 



Oracle 10g RAC (rawdevice) 설치 - 3 데이터베이스 엔진 설치

DB 엔진 설치


$ ~/pkg/database

$ ./runInstaller





경로는 $ORACLE_HOME의 경로를 지정해 줍니다.



rac2 체크




엔진만 설치 합니다.




각 노드에서 Node1, 2 순으로 실행해 줍니다.




오라클 엔진 패치


$ ~/pkg/Disk1

$ ./runInstaller




경로는 $ORACLE_HOME





Node1, 2 순서대로 실행, 엔터 → y → y → y 입력



엔진 설치 및 패치가 끝났습니다.



리스너 구성


$ netca












완료 버튼을 누르면 리스너 구성이 완료 됩니다.



설정 확인


$ crs_stat -t



Oracle 10g RAC (rawdevice) 설치 - 2 클러스터웨어 설치

Node1에 오라클 계정으로 로그인 한후 


$ mkdir pkg


pkg 폴더를 만들고, WinSCP혹은 VMware 파일 공유를 통해 설치 소프트웨어를 복사합니다. 

그리고 압축을 해제


$ unzip 10201_clusterware_linux32.zip

  클러스터웨어 압축풀기


$ unzip 10201_database_linux32.zip

  오라클 엔진 압축풀기


$ unzip p8202632_10205_LINUX.zip

  패치셋 압축풀기


압축을 다 풀고 나면 간혹, 설치 후 패치 중에 사용 공간이 부족하다고 나오기도 하니 zip 파일들은 삭제 해줘도 괜찮습니다.



관련 Library 설치


Node1에서 작업


$ scp ~/pkg/clusterware/rpm/cvuqdisk-1.0.1-1.rpm rac2:~/

관련 RPM rac2로 복사


$ su -

루트권한으로 변경


# export CVUQDISK_GRP=dba

# rpm -Uvh /home/oracle/pkg/clusterware/rpm/cvuqdisk-1.0.1-1.rpm



Node2에서 작업

루트권한으로 로그인


# export CVUQDISK_GRP=dba

# rpm -Uvh /home/oracle/cvuqdisk-1.0.1-1.rpm



설치전 환경 테스트


Node1에서 작업

오라클 계정으로 로그인


$ cd /home/oracle/pkg/clusterware/cluvfy

$ ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose

$ ./runcluvfy.sh stage -post hwos -n rac1,rac2 -verbose


참고 : 위 환경 테스트에서 오류가 발생하므로, equivalence 정도만 성공하는지 확인하도록 합니다. 반드시 실행 시킬 필요는 없습니다.



클러스터웨어 설치


$ cd ~/pkg/clusterware

$ ./runInstaller





경로는 $ORA_CRS_HOME 경로로 지정 해줍니다.




추가 버튼을 누르고



rac2 를 추가 해줍니다.



eth0을 편집하여



공용으로 바꿔줍니다.



ocr1, ocr2 를 지정해주고



vote1,2,3 번을 지정해줍니다.




Putty같은 터미널을 띄워서, 각각의 노드에 root 계정으로 로그인해서 위 명령을 순서대로 실행 시켜줍니다.


1. rac1 - /home/oracle/oracInventory/orainstRoot.sh

2. rac2 - /home/oracle/oracInventory/orainstRoot.sh

3. rac1 - /home/oracle/product/10g/crs/root.sh

4. rac2 - /home/oracle/product/10g/crs/root.sh


순으로 실행. 그리고 확인 버튼을 누릅니다.


※ vipca 설정을 해줘야 하는데 아래와 그림과 같이 rac1에서 클러스터웨어 설치 중에 터미널을 열고 vipca를 설정할 경우, 

vipca 설정 종료 후 클러스터웨어가 설치 도중 강제 종료 되는 경우가 발생합니다. 그럼 클러스터 웨어를 지우고 다시 깔아야 하는데 매우 복잡해집니다.



그래서 root.sh 설치를 하고 바로 확인을 누르면 다음과 같은 화면으로 넘어갑니다.



체크 항목중 세번째 항목이 실패 했다고 나오는데,

이때 rac2에서 root 권한으로 vipca를 설정해 주면됩니다.


터미널을 열고 


# vipca


만약 rac2에서 vipca 가 실행이 되지 않으면,


rac2의 터미널을 열고 vi 에디터로 /home/oracle/product/10g/crs/bin/vipca 파일을 수정합니다.


# vi /home/oracle/product/10g/crs/bin/vipca


124 unset LD_ASSUME_KERNEL

125 #End workaround

※ 124번 라인에 unset LD_ASSUME_KERNEL 추가 (Linux OS관련 파라미터 설정 부분에서 #End workaround 바로 전) 


저장 후 터미널에서


# cd /home/oracle/product/10g/crs/bin

# ./oifcfg iflist                                                                                        ← 자신의 Public IP와 Private IP 확인

# ./oifcfg setif -global eth0/192.168.229.0:public                                         ← 자신의 Public IP 대역을 넣어 주셔야 합니다.

# ./oifcfg setif -global bond0/192.168.30.0:cluster_interconnect                    ← 자신의 Private IP 대역을 넣어 주셔야 합니다.

# ./oifcfg getif

# ./vipca


이렇게 하면 vipca 가 실행이 됩니다.







그리고 rac1으로 돌아와서, 확인을 누른 후, 재시도 버튼을 눌러주면, 설치가 완료 됩니다.




클러스터웨어 패치하기


$ cd ~/pkg/Disk1/

$ ./runInstaller




경로는 역시 $ORA_CRS_HOME 입니다.






터미널을 띄워서, root 권한으로


Node1]# /home/oracle/product/10g/crs/bin/crsctl stop crs

Node1]# /home/oracle/product/10g/crs/install/root102.sh

Node2]# /home/oracle/product/10g/crs/bin/crsctl stop crs

Node2]# /home/oracle/product/10g/crs/install/root102.sh


순서 대로 실행 해주면 됩니다. 그리고 나서 종료를 누르면 패치 끝



설치 확인


$ crs_stat -t