I. 개요

1. 사용 Software

제품명버전아키텍쳐배포 사이트
VirtualBox4.3.x호스트 환경에 따름https://www.virtualbox.org
Oracle Enterprise Linux6 (Update 8 이상)x86 64bit

https://edelivery.oracle.com/linux

Clusterware, Database12.1.0.2x86 64bithttps://support.oracle.com (My Oracle Support 권한 필요)
ASMLib2.0x86 64bithttp://www.oracle.com/technetwork/server-storage/linux/asmlib/ol6-1709075.html

Oracle Database 12.1.0.2은 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 에서 받을 수 있습니다.

2. 구성 계획

A) 서버

MemoryDiskNet Adapter
5120MB50GB브리지 어댑터

리눅스 기반의 1 node로 구성합니다.

B) 스토리지

파일 이름용량용도
DATA1.vdi10GBData 저장 영역 
DATA2.vdi10GB
DATA3.vdi10GB
DATA4.vdi10GB
FRA1.vdi10GBFast Recovery Area 
FRA2.vdi10GB

Automatic Storage Management를 이용하여 Data 저장 영역과 Fast Recovery Area를 구성합니다.

디스크 공간을 절약하기 위해 설치 파일은 모두 한 곳에 압축을 풀어 VirtualBox의 Guest Addition 기능으로 VM에서 불러와 사용합니다

3. 호스트 환경

원활한 실습을 위해 64비트 운영체제에 8GB 이상의 메모리가 장착된 환경에서 작업하는 것을 권합니다.

디스크 I/O에 의한 지연을 최소화하기 위해 호스트의 OS가 설치되지 않은 별도의 내장 디스크를 사용하거나 SSD의 사용을 권합니다.

ESATA 또는 USB 3.0 이상의 빠른 속도를 보장하는 외장 디스크를 사용하는 것도 방법일 수 있습니다만 지속적인 연결이 보장되어야 합니다.

II. 리눅스 (OEL 6) 설치

1. 시작

기본값인 'Install or upgrade an existing system'이 선택된 상태에서 "엔터키"를 입력하면 다음 단계로 진행됩니다.

설치 미디어 테스트를 진행하려면 <OK>, 테스트 없이 바로 설치를 진행하려면 <Skip>을 선택하고 "엔터키"를 입력합니다.

GUI 화면의 설치 초기 화면이 출력되면 마우스로 <Next> 버튼을 클릭하여 다음 단계로 넘어갑니다.

2. 언어 설정

기본으로 화면에 표시하는 문자는 'Korean(한국어)'를 선택하고 <Next> 버튼을 클릭합니다.

키보드 입력에 사용되는 언어는 'U.S. 영어' 입니다.

3. 저장 장치 선택

설치와 관련된 장치 종류는 '기본 저장 장치'입니다.

데이터 초기화에 대한 경고가 나올 경우, 설치를 진행하기 위해 <예, 모든 데이터를 삭제합니다>를 선택합니다.

4. 네트워크 설정

적당한 호스트명을 입력합니다. 예제로 Oracle Enterprise Linux 6의 약자인 "oel6"를 입력하였습니다.

네트워크 설정을 위해 화면 좌측 하단에 <네트워크 설정> 버튼을 클릭합니다.

자동으로 인식된 네트워크를 선택하고 <변경하기> 버튼을 클릭합니다.

'자동으로 연결'을 체크합니다.

VM에서 브릿지 어댑터를 선택한 경우, IPv4 설정 탭에서 방식을 '수동'으로 선택하고 <추가> 버튼을 클릭합니다.

그리고 할당된 IP 정보를 주소란에 입력합니다.

IP 설정이 완료되었으면, <적용>을 클릭하여 저장하고 <다음> 버튼을 클릭합니다.

5. 시간대 설정

설치가 되는 장소에 맞게 지정이 되었는지 확인하고 <다음> 버튼을 클릭합니다.

6. 관리자 계정 암호 설정

root 계정의 암호를 입력합니다.

암호 복잡도에 맞지 않게 쉬운 암호를 입력했을 경우, 경고 메시지가 출력됩니다.

초기 설치를 위해 임시로 사용할 암호이므로 우선 <어쨋든 사용> 버튼을 클릭하여 다음 단계로 진행합니다.

7. 디스크 구성

'사용자 레이아웃 만들기'를 선택하고 <다음>을 클릭합니다.

로컬 디스크의 파티션을 구성하기 위해 <만들기> 버튼을 클릭합니다.

기본값 '표준 파티션'이 선택된 상태에서 <생성>을 클릭합니다.

먼저 swap 영역을 오라클의 권고사항에 맞게 생성합니다.

  • 1~2GB : 메모리의 1.5배
  • 2~16GB : 메모리와 동일한 값
  • 16GB 이상 : 16GB 고정

파일시스템 유형을 'swap'로 변경하고 용량에 "5120"을 입력하고 <확인>을 클릭합니다.

참고로 물리 메모리 최소 권장값은 DB만 설치할 경우 1GB, Grid 포함하여 설치할 경우 4GB입니다.

나머지 영역은 OS 파일이나 프로그램 등이 설치되는 영역으로 할당하려 합니다.

마운트 지점을 '/'로 선택하고, '가능한 최대 용량으로 채움'을 선택하면 swap을 제외한 모든 공간이 할당됩니다.

<확인> 버튼을 클릭하여 다음 단계로 진행합니다.

디스크 구성이 완료되었으면 <다음> 버튼을 클릭합니다.

할당된 디스크 용량에 따라 캡쳐한 예제와는 다른 크기로 나올 수 있습니다.

파티션 생성에 앞서 디스크 포맷에 대한 경고 메시지가 출력됩니다.

<포맷> 버튼을 클릭하여 디스크 구성을 진행합니다.

디스크에 저장 장치 설정을 기록하기 위해 '디스크에 변경 사항 기록'을 선택합니다.

8. 부트 영역 선택

부트로더 설정 화면입니다.

리눅스 update 버전에 따라 예제와는 다른 값이 나올 수 있지만, 기본적으로 동일한 내용이므로 <다음>을 클릭합니다.

9. 설치 패키지 선택

OS 패키지 구성을 선택하는 화면입니다.

오라클과 VirtualBox 제공 도구를 설치하기 위해 필요한 패키지를 선택해야 합니다.

수동으로 패키지를 선택할 것이므로 '지금 선택'을 체크하고 <다음> 버튼을 클릭합니다.

A) 기반 시스템

기반 시스템에서는 아래 항목을 선택합니다

  • 기본
  • 레거시 유닉스 호환성
  • 성능 도구

레거시 유닉스 호환성에서 추가로 선택해야 하는 패키지가 있으므로 해당 항목을 선택하고, <선택적 패키지> 버튼을 클릭합니다.

※ 운영 환경에서 패치나 업그레이드를 고려한다면 "Perl 지원" 패키지도 함께 선택하여 설치합니다.

항목에서 ksh 패키지를 추가 선택한 후에 <닫기> 버튼을 클릭합니다.

기반 시스템에 선택 항목에 스크롤을 내려 추가로 패키지를 선택합니다.

  • 호환성 라이브러리

B) 서버

서버에서는 다음의 항목을 선택해줍니다.

  • 시스템 관리 도구

시스템 관리 도구에서도 추가할 패키지가 있으므로, <선택적 패키지> 버튼을 클릭합니다.

오라클 소프트웨어 설치를 위해 아래 2개의 패키지를 선택하고 <닫기>를 클릭합니다.

  • oracle-rdbms-server-12cR1-preinstall-*
  • oracleasm-support-*

C) 데스크탑

데스크탑에서는 아래 패키지를 선택합니다

  • X 윈도우 시스템
  • 그래픽기반 관리 도구
  • 데스크탑
  • 입력 방식
  • 폰트

D) 개발

개발에서는 두 개의 항목을 선택합니다.

  • 개발용 도구
  • 추가 개발

그리고 추가 개발 항목에 <선택적 패키지> 버튼을 클릭합니다.

추가 개발 패키지 중에 libaio-devel 패키지를 선택하고 <닫기> 버튼을 클릭합니다.

필요한 패키지 선택이 완료되었으므로 <다음>을 클릭하여 설치를 진행합니다.

10. 설치 진행

본격적인 설치를 진행하기 위해 설치 프로세스가 시작됩니다.

리눅스 패키지가 로컬 디스크에 설치됩니다.

최종적으로 부트로더가 설치됩니다.

11. 재부팅

설치가 모두 완료되면 <재부팅> 버튼을 클릭합니다.

리눅스 6버전의 초기 부팅 화면입니다.

12. 설치 후 추가 작업

맨처음 재기동시 환영 메시지가 나옵니다.

<앞으로> 버튼을 클릭하여 다음 단계로 진행합니다.

라이센스 정보에 '예, 라이센스 조항에 동의합니다'를 선택하고 <앞으로> 버튼을 클릭합니다.

운영 환경에서는 주기적으로 OS의 문제점을 패치하여야겠지만, 테스트를 위해 가상으로 구축하는 경우이므로 이 부분은 생략하고자 합니다.

소프트웨어 업데이트 설정은 '아니오, 나중에 등록합니다'를 선택하고 <앞으로>를 클릭합니다.

리눅스 패치와 관련한 확인 메시지가 출력되면 <나중에 연결합니다> 버튼을 클릭합니다.

업데이트 설정 완료 화면에서 <앞으로> 버튼을 클릭합니다.

추가적인 OS 유저는 생성하지 않을 것이므로, <앞으로>를 클릭합니다.

테스트 환경에서는 별동의 시간동기화를 설정하지 않을 것이므로 <앞으로>를 클릭합니다.

운영 환경이 아닌 테스트를 위한 환경이므로 충돌 덤프 없이 구성을 마무리합니다.

'kdump를 활성화하겠습니까?'를 해제하고 <완료>를 클릭합니다.

메모리 재할당을 위한 재부팅 안내 메시지가 나옵니다.

<예>를 클릭합니다.

시스템 재부팅 안내 메시지가 나오면 <확인>을 클릭합니다.

III. OS 환경 설정

1. VirtualBox Guest Addition 설치

실습을 위해 VirtualBox에서 구축된 환경에서는 편의를 위해 VBOXADDITIONS (이하 Guest Addition)를 설치해야 합니다.

root 유저에서 진행을 해야 하므로 기타... 버튼을 클릭합니다.

사용자 이름에 "root"를 입력하고 <로그인>을 클릭합니다.

암호에 root 사용자의 암호를 입력하고 <로그인>을 클릭합니다.

경고 메시지가 나오면 '이 메시지를 다시 보지 않습니다'를 체크하고 <닫기> 버튼을 클릭합니다.

root 계정으로 접속한 GUI 모드의 리눅스 바탕화면입니다.

호스트 머신의 VirtualBox 메뉴에서 '장치' > '게스트 확장 CD 이미지 삽입'을 클릭하여, Guest Addition CD를 mount 시켜줍니다.

VirtualBox에서 Guest Addition CD를 mount 시키면 화면과 같은 자동시작 확인 메시지가 나옵니다.

설치가 필요하므로 <확인> 버튼을 클릭합니다.

자동으로 설치가 진행되며, 최종 설치 완료 후에는 엔터키를 입력합니다.

터미널 창을 열려면 화면 상단의 메뉴바에서 프로그램 > 시스템 도구의 드롭다운 메뉴에서 '터미널'을 선택하면 됩니다.

 

설치가 완료된 뒤에는 터미널 창을 열어 eject 명령어로 mount된 CD를 제거해주면 됩니다.

2. 설치 내역 확인

cat /etc/oracle-release
cat /etc/redhat-release
lsb_release -id
uname -r
[root@oel6 ~]# cat /etc/oracle-release
Oracle Linux Server release 6.9

[root@oel6 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.9 (Santiago)

[root@oel6 ~]# lsb_release -id
Distributor ID:	OracleServer
Description:	Oracle Linux Server release 6.9

[root@oel6 ~]# uname -r
4.1.12-61.1.28.el6uek.x86_64

설치된 리눅스의 버전 정보를 확인합니다.

설치된 버전에 따라 출력되는 메시지는 다를 수 있습니다.

root 유저로 수행
rpm -q binutils-*
rpm -q compat-libcap1-*
rpm -q compat-libstdc++-33-*
rpm -q gcc-*
rpm -q gcc-c++-*
rpm -q glibc-*
rpm -q glibc-devel-*
rpm -q ksh
rpm -q libgcc-*
rpm -q libstdc++-*
rpm -q libstdc++-devel-*
rpm -q libaio-*
rpm -q libaio-devel-*
rpm -q libXext-*
rpm -q libXtst-*
rpm -q libX11-*
rpm -q libXau-*
rpm -q libxcb-*
rpm -q libXi-*
rpm -q make-*
rpm -q sysstat-*
[root@oel6 ~]# rpm -q binutils-*
binutils-2.20.51.0.2-5.46.el6.x86_64
 
[root@oel6 ~]# rpm -q compat-libcap1-*
compat-libcap1-1.10-1.x86_64
 
[root@oel6 ~]# rpm -q compat-libstdc++-33-*
compat-libstdc++-33-3.2.3-69.el6.x86_64
 
[root@oel6 ~]# rpm -q gcc-*
gcc-4.4.7-18.el6.x86_64
 
[root@oel6 ~]# rpm -q gcc-c++-*
gcc-c++-4.4.7-18.el6.x86_64
 
[root@oel6 ~]# rpm -q glibc-*
glibc-2.12-1.209.0.1.el6.x86_64
glibc-2.12-1.209.0.1.el6.i686
 
[root@oel6 ~]# rpm -q glibc-devel-*
glibc-devel-2.12-1.209.0.1.el6.x86_64
 
[root@oel6 ~]# rpm -q ksh
ksh-20120801-33.el6.x86_64
 
[root@oel6 ~]# rpm -q libgcc-*
libgcc-4.4.7-18.el6.x86_64
libgcc-4.4.7-18.el6.i686
 
[root@oel6 ~]# rpm -q libstdc++-*
libstdc++-4.4.7-18.el6.x86_64
 
[root@oel6 ~]# rpm -q libstdc++-devel-*
libstdc++-devel-4.4.7-18.el6.x86_64
 
[root@oel6 ~]# rpm -q libaio-*
libaio-0.3.107-10.el6.x86_64
 
[root@oel6 ~]# rpm -q libaio-devel-*
libaio-devel-0.3.107-10.el6.x86_64
 
[root@oel6 ~]# rpm -q libXext-*
libXext-1.3.3-1.el6.x86_64
 
[root@oel6 ~]# rpm -q libXtst-*
libXtst-1.2.3-1.el6.x86_64
 
[root@oel6 ~]# rpm -q libX11-*
libX11-1.6.4-3.el6.x86_64
 
[root@oel6 ~]# rpm -q libXau-*
libXau-1.0.6-4.el6.x86_64
 
[root@oel6 ~]# rpm -q libxcb-*
libxcb-1.12-4.el6.x86_64
 
[root@oel6 ~]# rpm -q libXi-*
libXi-1.7.8-1.el6.x86_64
 
[root@oel6 ~]# rpm -q make-*
make-3.81-23.el6.x86_64
 
[root@oel6 ~]# rpm -q sysstat-*
sysstat-9.0.4-33.el6.x86_64

오라클 소프트웨어 설치를 위해 필요한 OS 패키지가 모두 설치되었는지 확인합니다.

3. 리눅스 설정 변경

vi /etc/hosts
<IP> <호스트명>
10.0.1.101  oel6

/etc/hosts 파일에 서버 정보를 추가합니다.

오라클 소프트웨어 설치를 정상적으로 진행하기 위해 정확한 정보를 입력해야 합니다.

vi /etc/fstab
tmpfs                   /dev/shm                tmpfs   size=4g        0 0
root 유저로 수행
mount -o remount /dev/shm

기존 값을 #로 주석 처리

#tmpfs                   /dev/shm                tmpfs   defaults        0 0
tmpfs                   /dev/shm                tmpfs   size=4g        0 0
[root@oel6 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        45G  8.1G   34G  20% /
tmpfs           2.5G   76K  2.5G   1% /dev/shm
 
[root@oel6 ~]# mount -o remount /dev/shm
 
[root@oel6 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        45G  8.1G   34G  20% /
tmpfs           4.0G   72K  4.0G   1% /dev/shm

 

오라클의 MEMORY_TARGET 파라미터를 사용하기 위해서 tmpfs를 변경해야 합니다.

기존에 설정된 tmpfs 값은 #로 주석 처리하거나 삭제합니다.

remount하여 바로 적용시킵니다.

vi /etc/sysctl.conf
kernel.panic_on_oops = 1
kernel.sem    = 250   32000   100   128
kernel.shmmni = 4096
fs.file-max   = 6815744
net.ipv4.ip_local_port_range = 9000   65535
net.core.rmem_default = 262144
net.core.rmem_max     = 4194304
net.core.wmem_default = 262144
net.core.wmem_max     = 1048576
fs.aio-max-nr         = 1048576 

커널 변수를 수정하는 작업입니다.

oracle-rdbms-server-12cR1-preinstall 패키지가 설치되었다면 이미 반영된 내용이므로 넘어가도 됩니다.

하지만 해당 패키지를 따로 설치하지 않은 상태에서 오라클 소프트웨어를 설치하려면 왼쪽의 내용을 /etc/sysctl.conf에 추가해야 합니다.

root 유저로 수행
chkconfig --level 123456 xinetd off
#chkconfig --level 123456 cups off
chkconfig --level 123456 smartd off
chkconfig --level 123456 iptables off
chkconfig --level 123456 ip6tables off
#chkconfig --level 123456 bluetooth off
[root@oel6 ~]# chkconfig --level 123456 xinetd off
[root@oel6 ~]# chkconfig --level 123456 cups off
[root@oel6 ~]# chkconfig --level 123456 smartd off
[root@oel6 ~]# chkconfig --level 123456 iptables off
[root@oel6 ~]# chkconfig --level 123456 ip6tables off
[root@oel6 ~]# chkconfig --level 123456 bluetooth off

추가적인 리소스 확보를 위해 기본적으로 실행중인 불필요한 OS 프로그램을 off 시킵니다.

4. 그룹 및 사용자 설정 변경

root 유저로 수행
# groupadd oinstall
# groupadd dba
groupadd oper
groupadd backupdba
groupadd dgdba
groupadd kmdba
groupadd asmdba
groupadd asmoper
groupadd asmadmin
 
usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmadmin,asmdba,vboxsf oracle
useradd -g oinstall -G dba,asmdba,asmoper,asmadmin,vboxsf grid
 
id oracle
id grid
 
passwd oracle
passwd grid
[root@oel6 ~]# groupadd oper
[root@oel6 ~]# groupadd backupdba
[root@oel6 ~]# groupadd dgdba
[root@oel6 ~]# groupadd kmdba
[root@oel6 ~]# groupadd asmdba
[root@oel6 ~]# groupadd asmoper
[root@oel6 ~]# groupadd asmadmin

[root@oel6 ~]# usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmadmin,asmdba,vboxsf oracle

[root@oel6 ~]# useradd -g oinstall -G dba,asmdba,asmoper,asmadmin,vboxsf grid
 
[root@oel6 ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),493(vboxsf),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54327(asmdba),54329(asmadmin)

[root@oel6 ~]# id grid
uid=54322(grid) gid=54321(oinstall) groups=54321(oinstall),54322(dba),493(vboxsf),54327(asmdba),54328(asmoper),54329(asmadmin)

[root@oel6 ~]# passwd oracle
oracle 사용자의 비밀 번호 변경 중
새  암호:
잘못된 암호: 사전에 있는 단어를 기반으로 합니다  
잘못된 암호: 너무 간단함
새  암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.

[root@oel6 ~]# passwd grid
grid 사용자의 비밀 번호 변경 중
새  암호:
잘못된 암호: 사전에 있는 단어를 기반으로 합니다  
잘못된 암호: 너무 간단함
새  암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.

설치를 진행할 사용자 계정과 그룹을 생성 또는 추가합니다.

oracle-rdbms-server-12cR1-preinstall 패키지가 설치되었다면 oracle 유저와 oinstall, dba 그룹은 이미 생성되어 있습니다.

vboxsf 그룹은 VirtualBox의 Guest Addition을 사용하기 위한 그룹으로, 실제 운영 환경에서 Guest Addition을 사용하지 않는다면 추가하지 않습니다.

passwd 명령어로 각 계정의 암호를 지정해주면 됩니다.

 

vi /etc/security/limits.conf
oracle  hard  nofile   65536
oracle  hard  nproc    16384
oracle  soft  nproc    2047
oracle  hard  memlock  4572857
grid    hard  nofile   65536
grid    soft  nproc    2047

리소스 제한을 위한 사용자별 설정값을 입력합니다.

오라클을 설치하는 OS 계정에 맞게 oracle 또는 grid 유저별로 제한값을 입력합니다.

root 유저로 수행
mkdir -p /u01/app/oracle/product
chown -R grid:oinstall /u01
chmod -R 770 /u01
[root@oel6 ~]# mkdir -p /u01/app/oracle/product
[root@oel6 ~]# chown -R grid:oinstall /u01
[root@oel6 ~]# chmod -R 770 /u01

오라클 소프트웨어 설치를 위한 경로를 생성하고, 해당 경로에 대한 권한과 소유권을 수정합니다.

grid 유저 : vi .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export EDITOR=vi
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=$ORACLE_BASE/12.1.0/grid
export DB_HOME=$ORACLE_BASE/product/12.1.0/db_1
export ORACLE_HOME=$GRID_HOME
export ORACLE_SID=+ASM
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$BASE_PATH
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=AMERICAN_KOREA.AL32UTF8
export PS1='[\u@$ORACLE_SID \W]$ '

grid 계정으로 접속한 후에 .bash_profile을 수정합니다.

root계정에서 grid 유저로 접속하려면 아래와 같이 su 명령을 입력하면 됩니다

su - grid

수정이 완료되고 root 유저로 돌아오려면 exit 명령을 grid 유저에서 실행하면 됩니다.

exit
oracle 유저 : vi .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export EDITOR=vi
export ORACLE_UNQNAME=racdb
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=$ORACLE_BASE/12.1.0/grid
export DB_HOME=$ORACLE_BASE/product/12.1.0/db_1
export ORACLE_HOME=$DB_HOME
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
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=AMERICAN_KOREA.AL32UTF8
export PS1='[\u@$ORACLE_SID \W]$ '

마찬가지로 oracle 계정으로 접속하여 .bash_profile을 수정합니다.

oracle 유저로 변경하려면 아래와 같이 su 명령을 입력하면 됩니다

su - oracle

IV. ASM 스토리지 설정

1. 디스크 생성 (호스트에서 수행)

호스트 컴퓨터에서 실행
vboxmanage createmedium disk --filename DATA1.vdi --size 10240 --format VDI
vboxmanage createmedium disk --filename DATA2.vdi --size 10240 --format VDI
vboxmanage createmedium disk --filename DATA3.vdi --size 10240 --format VDI
vboxmanage createmedium disk --filename DATA4.vdi --size 10240 --format VDI
vboxmanage createmedium disk --filename FRA1.vdi --size 10240 --format VDI
vboxmanage createmedium disk --filename FRA2.vdi --size 10240 --format VDI

Host 컴퓨터에서 VM에 연결시킬 DATA와 Fast Recovery Area 디스크를 각각 10GB 사이즈로 생성합니다.

VirtualBox의 GUI 툴을 사용하여 생성해도 됩니다.

2. 디스크 설정 (게스트에서 수행)

게스트 컴퓨터(VM)에서 실행
fdisk -c /dev/sdb  ### "n", "p", "1", "엔터", "엔터", "w" 입력
fdisk -c /dev/sdc  ### "n", "p", "1", "엔터", "엔터", "w" 입력
fdisk -c /dev/sdd  ### "n", "p", "1", "엔터", "엔터", "w" 입력
fdisk -c /dev/sde  ### "n", "p", "1", "엔터", "엔터", "w" 입력
fdisk -c /dev/sdf  ### "n", "p", "1", "엔터", "엔터", "w" 입력
fdisk -c /dev/sdg  ### "n", "p", "1", "엔터", "엔터", "w" 입력
ls -ls /dev/sd*
[root@oel6 ~]# ls -ls /dev/sd*
0 brw-rw----. 1 root disk 8,  0 2017-05-02 21:07 /dev/sda
0 brw-rw----. 1 root disk 8,  1 2017-05-02 21:07 /dev/sda1
0 brw-rw----. 1 root disk 8,  2 2017-05-02 21:07 /dev/sda2
0 brw-rw----. 1 root disk 8, 16 2017-05-02 21:18 /dev/sdb
0 brw-rw----. 1 root disk 8, 32 2017-05-02 21:18 /dev/sdc
0 brw-rw----. 1 root disk 8, 48 2017-05-02 21:18 /dev/sdd
0 brw-rw----. 1 root disk 8, 64 2017-05-02 21:18 /dev/sde
0 brw-rw----. 1 root disk 8, 80 2017-05-02 21:18 /dev/sdf
0 brw-rw----. 1 root disk 8, 96 2017-05-02 21:18 /dev/sdg

[root@oel6 ~]# fdisk -c /dev/sdb

WARNING: cylinders as display units are deprecated. Use command 'u' to
         change units to sectors.

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
Using default value 1305

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

[root@oel6 ~]# fdisk -c /dev/sdc

WARNING: cylinders as display units are deprecated. Use command 'u' to
         change units to sectors.

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
Using default value 1305

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

[root@oel6 ~]# fdisk -c /dev/sdd

WARNING: cylinders as display units are deprecated. Use command 'u' to
         change units to sectors.

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
Using default value 1305

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

[root@oel6 ~]# fdisk -c /dev/sde

WARNING: cylinders as display units are deprecated. Use command 'u' to
         change units to sectors.

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
Using default value 1305

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

[root@oel6 ~]# fdisk -c /dev/sdf

WARNING: cylinders as display units are deprecated. Use command 'u' to
         change units to sectors.

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
Using default value 1305

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

[root@oel6 ~]# fdisk -c /dev/sdg

WARNING: cylinders as display units are deprecated. Use command 'u' to
         change units to sectors.

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
Using default value 1305

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

[root@oel6 ~]# ls -ls /dev/sd*
0 brw-rw----. 1 root disk 8,  0 2017-05-02 21:07 /dev/sda
0 brw-rw----. 1 root disk 8,  1 2017-05-02 21:07 /dev/sda1
0 brw-rw----. 1 root disk 8,  2 2017-05-02 21:07 /dev/sda2
0 brw-rw----. 1 root disk 8, 16 2017-05-02 21:19 /dev/sdb
0 brw-rw----. 1 root disk 8, 17 2017-05-02 21:19 /dev/sdb1
0 brw-rw----. 1 root disk 8, 32 2017-05-02 21:19 /dev/sdc
0 brw-rw----. 1 root disk 8, 33 2017-05-02 21:19 /dev/sdc1
0 brw-rw----. 1 root disk 8, 48 2017-05-02 21:20 /dev/sdd
0 brw-rw----. 1 root disk 8, 49 2017-05-02 21:20 /dev/sdd1
0 brw-rw----. 1 root disk 8, 64 2017-05-02 21:20 /dev/sde
0 brw-rw----. 1 root disk 8, 65 2017-05-02 21:20 /dev/sde1
0 brw-rw----. 1 root disk 8, 80 2017-05-02 21:20 /dev/sdf
0 brw-rw----. 1 root disk 8, 81 2017-05-02 21:20 /dev/sdf1
0 brw-rw----. 1 root disk 8, 96 2017-05-02 21:20 /dev/sdg
0 brw-rw----. 1 root disk 8, 97 2017-05-02 21:20 /dev/sdg1

VM에 디스크를 모두 연결시키고, 디스크를 모두 포맷합니다.

디스크 전체를 마운트 시킬 것 이므로 모두 단일 파티션으로 포맷합니다.

root 유저로 수행
cd <Grid 설치 파일 압축 해제 경로>/grid/rpm
rpm -ivh cvuqdisk-*
cd <패키지 다운로드 경로>
rpm -ivh oracleasmlib-*
[root@oel6 ~]# cd /media/sf_oracle/grid/rpm

[root@oel6 rpm]# rpm -ivh cvuqdisk-*
준비 중...               ########################################### [100%]
Using default group oinstall to install package
   1:cvuqdisk               ########################################### [100%]

[root@oel6 rpm]# cd /media/sf_oracle

[root@oel6 sf_oracle]# rpm -ivh oracleasmlib-*
경고: oracleasmlib-2.0.12-1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
준비 중...               ########################################### [100%]
   1:oracleasmlib           ########################################### [100%]

Grid Infrastructure (이하 GI)를 설치하기 위해 패키지를 추가로 설치해야 합니다.

cvuqdisk 패키지는 GI 설치 파일에서 구할 있으며, ASM library 패키지는 아래 경로에서 다운 받을 수 있습니다.

http://www.oracle.com/technetwork/server-storage/linux/asmlib/ol6-1709075.html#oracleasm_ol6_amd64

root 유저로 수행
oracleasm configure
oracleasm configure -i
oracleasm configure
[root@oel6 ~]# oracleasm configure
ORACLEASM_ENABLED=false
ORACLEASM_UID=
ORACLEASM_GID=
ORACLEASM_SCANBOOT=true
ORACLEASM_SCANORDER=""
ORACLEASM_SCANEXCLUDE=""
ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"

[root@oel6 ~]# oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done

[root@oel6 ~]# oracleasm configure
ORACLEASM_ENABLED=true
ORACLEASM_UID=grid
ORACLEASM_GID=asmadmin
ORACLEASM_SCANBOOT=true
ORACLEASM_SCANORDER=""
ORACLEASM_SCANEXCLUDE=""
ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"

ASM library에 대한 추가적인 환경 설정(사용자, 그룹, 부팅시 활성화, 부팅시 스캔 여부)을 해줍니다.

root 유저로 수행
reboot

설정된 내용을 적용하기 위해 재부팅을 합니다.

root 유저로 수행
oracleasm createdisk DATA1 /dev/sdb1
oracleasm createdisk DATA2 /dev/sdc1
oracleasm createdisk DATA3 /dev/sdd1
oracleasm createdisk DATA4 /dev/sde1
oracleasm createdisk FRA1 /dev/sdf1
oracleasm createdisk FRA2 /dev/sdg1
oracleasm scandisks
oracleasm listdisks
[root@oel6 ~]# oracleasm createdisk DATA1 /dev/sdb1
Writing disk header: done
Instantiating disk: done

[root@oel6 ~]# oracleasm createdisk DATA2 /dev/sdc1
Writing disk header: done
Instantiating disk: done

[root@oel6 ~]# oracleasm createdisk DATA3 /dev/sdd1
Writing disk header: done
Instantiating disk: done

[root@oel6 ~]# oracleasm createdisk DATA4 /dev/sde1
Writing disk header: done
Instantiating disk: done

[root@oel6 ~]# oracleasm createdisk FRA1 /dev/sdf1
Writing disk header: done
Instantiating disk: done

[root@oel6 ~]# oracleasm createdisk FRA2 /dev/sdg1
Writing disk header: done
Instantiating disk: done
 
[root@oel6 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...

[root@oel6 ~]# oracleasm listdisks
DATA1
DATA2
DATA3
DATA4
FRA1
FRA2

VM에 마운트된 디스크를 각각 ASM Disk로 할당해줍니다.

순서대로 마운트가 되었다면, 왼쪽의 명령으로 디스크를 생성하면 됩니다.

V. Grid 설치

grid 유저로 실행
cd <설치 파일 압축 해제 경로>/grid
./runInstaller

설치 파일의 압축이 해제된 디렉토리에서 runInstaller를 실행합니다.

'독립형 서버에 대한 Oracle Grid Infrastructure 설치 및 구성'을 선택하고 <다음>을 클릭합니다.

제품에 사용할 언어를 확인하고 <다음>을 클릭합니다.

DATA 디스크 그룹을 생성하는 단계입니다.

테스트 및 실습을 위한 구축이므로 중복성은 '외부'를 선택합니다.

ASM 디스크에서 DATA로 등록된 4개의 디스크를 선택하고 <다음>을 클릭합니다.

'이러한 계정에 동일한 비밀번호 사용'을 선택하고 적당한 비밀번호를 입력합니다.

오라클 교육자료에서는 oracle_4U를 사용하고 있습니다.

암호를 두번 입력하고 <다음>을 클릭합니다.

EM에 등록하지 않을 것이므로 체크가 해제된 상태에서 <다음>을 클릭합니다.

운영체제 그룹을 확인하고 <다음>을 클릭합니다.

운영 시스템이라도 관리의 간소화를 위해 하나의 그룹으로 통일하여 관리하는 것이 보편적입니다.

실습에서는 오라클의 권장 사항대로 그룹을 분리하여 설치하도록 합니다.

ORACLE_BASE와 설치 경로가 제대로 인식되었는지 확인하고 <다음>을 클릭합니다.

인벤토리 디렉토리 설정을 확인하고 <다음>을 클릭합니다.

일반적으로 오라클 설치 유저의 기본 그룹으로 인벤토리 그룹이 지정되며, grid와 oracle 유저를 분리하여 설치할 때에도 인벤토리 그룹은 공유하도록 합니다.

설치 과정 중에 root 유저 권한으로 실행할 스크립트를 자동으로 실행할 것인지를 뭍는 부분입니다.

자동으로 진행하고자 한다면 '자동으로 구성 스크립트 실행'을 체크하고, '"루트" 사용자 인증서 사용'을 선택한 후 root 유저의 암호를 입력합니다.

선택과 입력이 완료되었으면 <다음>을 클릭합니다.

설치를 위한 요구 사항을 모두 충족했는지 검사하는 과정입니다.

문제가 없을 경우, 다음 단계로 이동합니다.

지금까지 선택한 내용을 토대로 어떻게 설치가 될 것인지에 대한 요약 페이지입니다.

내용을 검토하고 이상이 없으면 <설치>를 클릭합니다.

바이너리 파일의 복제가 진행되며, GI 설치가 진행됩니다.

root 유저로 실행하는 구성 스크립트를 실행할 것인지를 뭍는 화면입니다.

자동 구성이나 수동 구성 선택 여부에 따라 다른 화면이 출력됩니다.

[root@oel6 ~]# /u01/app/oraInventory/orainstRoot.sh 
다음 권한 변경 중/u01/app/oraInventory.
그룹에 대한 읽기, 쓰기 권한을 추가하는 중입니다.
월드에 대한 읽기, 쓰기, 실행 권한을 제거하는 중입니다.

그룹 이름 변경 중 /u01/app/oraInventory 대상 oinstall.
스크립트 실행이 완료되었습니다.
[root@oel6 ~]# /u01/app/oracle/12.1.0/grid/root.sh 
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /u01/app/oracle/12.1.0/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]: 
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /u01/app/oracle/12.1.0/grid/crs/install/crsconfig_params
LOCAL ADD MODE 
Creating OCR keys for user 'grid', privgrp 'oinstall'..
Operation successful.
LOCAL ONLY MODE 
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
CRS-4664: Node oel6 successfully pinned.
2017/05/02 23:50:25 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.conf'


oel6     2017/05/02 23:50:42     /u01/app/oracle/12.1.0/grid/cdata/oel6/backup_20170502_235042.olr     0     
CRS-2791: 'oel6'에서 Oracle 고가용성 서비스가 관리하는 리소스의 종료 시작 중
CRS-2673: 'ora.evmd'을(를) 'oel6'에서 정지하려고 시도하는 중입니다.
CRS-2677: 'ora.evmd' 정지('oel6')가 성공했습니다.
CRS-2793: 'oel6'에서 Oracle 고가용성 서비스가 관리하는 리소스 종료가 완료되었습니다.
CRS-4133: Oracle 고가용성 서비스가 정지되었습니다.
CRS-4123: Oracle 고가용성 서비스가 시작되었습니다.
2017/05/02 23:50:59 CLSRSC-327: Successfully configured Oracle Restart for a standalone server

루트 스크립트가 실행되는 과정입니다.

수동으로 진행하는 과정에서는 2개의 스크립트를 root 계정으로 접속해서 직접 실행해야 합니다.

GI 설치 후반부 작업니다.

ASM 구성이 진행됩니다.

모든 설치가 완료되었으면, <닫기>를 클릭하여 설치 프로그램을 종료합니다.

[grid@+ASM ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       oel6                     STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       oel6                     STABLE
ora.asm
               ONLINE  ONLINE       oel6                     Started,STABLE
ora.ons
               OFFLINE OFFLINE      oel6                     STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
      1        ONLINE  ONLINE       oel6                     STABLE
ora.diskmon
      1        OFFLINE OFFLINE                               STABLE
ora.evmd
      1        ONLINE  ONLINE       oel6                     STABLE
--------------------------------------------------------------------------------

정상적으로 설치가 되었다면 왼쪽과 같이 리소스가 정상적으로 가동된 것을 확인할 수 있습니다.

VI. Disk Group 생성

1. 작업 전 현황

[grid@+ASM ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       oel6                     STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       oel6                     STABLE
ora.asm
               ONLINE  ONLINE       oel6                     Started,STABLE
ora.ons
               OFFLINE OFFLINE      oel6                     STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
      1        ONLINE  ONLINE       oel6                     STABLE
ora.diskmon
      1        OFFLINE OFFLINE                               STABLE
ora.evmd
      1        ONLINE  ONLINE       oel6                     STABLE
--------------------------------------------------------------------------------

기본적으로 GI 설치가 완료된 상태에서는 DATA 디스크 그룹만 생성되어 있습니다.

Fast Recovery Area 구성을 위해 추가 디스크 그룹이 필요합니다.

2. ASMCA 실행

grid 유저로 실행
asmca 

디스크 그룹을 추가 생성하기 위해 grid 유저에서 asmca를 실행합니다.

3. FRA 디스크 그룹 생성

디스크 그룹 생성을 위해 <생성> 버튼을 클릭합니다.

디스크 그룹 이름에 "FRA"를 입력합니다.

중복성은 "외부"를 선택하고, 맴버 디스크에는 나머지 2개의 FRA 디스크를 선택한 후 <확인>을 클릭합니다.

FRA 디스크 그룹이 생성됩니다.

정상적으로 FRA 디스크 그룹이 생성되었다는 메시지가 나오면 <확인>을 클릭합니다.

구성된 내용을 모두 확인하였으면 <종료>를 클릭합니다.

asmca 종료를 확인하는 메시지가 출력되면 <예>를 클릭합니다.

4. 작업 후 현황

[grid@+ASM ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       oel6                     STABLE
ora.FRA.dg
               ONLINE  ONLINE       oel6                     STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       oel6                     STABLE
ora.asm
               ONLINE  ONLINE       oel6                     Started,STABLE
ora.ons
               OFFLINE OFFLINE      oel6                     STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
      1        ONLINE  ONLINE       oel6                     STABLE
ora.diskmon
      1        OFFLINE OFFLINE                               STABLE
ora.evmd
      1        ONLINE  ONLINE       oel6                     STABLE
--------------------------------------------------------------------------------

FRA 디스크 그룹이 정상적으로 리소스에 등록된 것을 확인할 수 있습니다.

VII. DBMS 설치

oracle 유저로 수행
cd <설치 파일 압축 해제 경로>/database
./runInstaller

설치 파일의 압축이 해제된 디렉토리에서 runInstaller를 실행합니다.

실습 환경이나 인터넷이 연결되지 않는 상황을 고려하여 "My Oracle Support를 통해 보안 갱신 수신"의 체크를 해제하고 <다음>을 클릭합니다.

전자 메일 주소 제공에 관한 메시지가 나오면 <예>를 클릭합니다.

우선은 DB엔진만 설치할 것이므로 "데이터베이스 소프트웨어만 설치"를 선택하고 <다음>을 클릭합니다.

'단일 인스턴스 데이터베이스 설치'를 선택하고 <다음>을 클릭합니다.

제품이 실행될 언어를 선택하는 단계입니다.

'영어'와 '한국어'가 선택되었는지 확인하고, <다음>을 클릭합니다.

오라클의 라이센스 정책 변경으로 12.1.0.2 설치 파일은 Enterprise Edition과 Standard Edition의 데이터베이스 설치 파일이 분리되어 나와있습니다. (이후의 버전은 다시 통합되서 나옴)

설치 파일에 따라 버전이 선택되어 있으므로, <다음>을 클릭합니다.

소프트웨어가 설치될 경로가 .bash_profile에 입력한 경로와 맞는지 확인하고 <다음>을 클릭합니다.

OS 인증을 위한 OS 그룹을 설정하는 단계입니다.

오라클의 권고사항에 따라 그룹을 세분화하였지만, 실제 운영 환경에서는 관리 편의상 1개의 그룹(대부분 dba)으로 운영하는 경우가 많습니다.

적절한 OS 그룹과 맵핑이 된다면 <다음>을 클릭합니다.

사전 설치 환경이 오라클의 요구사항에 맞게 구성되어 있는지 검사하는 과정입니다.

문제가 없다면, 자동적으로 다음 단계로 넘어갑니다.

설치에 앞서 지금까지 선택한 설치 옵션을 요약한 페이지입니다.

계획한 것과 다른 부분이 있을 때는 해당 항목을 수정하고, 모두 정상적일 때에는 <설치>를 클릭합니다.

로컬 디스크의 지정된 경로에 database 소프트웨어가 설치됩니다.

설치 과정의 마지막 단계로 루트 사용자로 스크립트를 실행하는 안내가 나옵니다.

[root@oel6 ~]# /u01/app/oracle/product/12.1.0/db_1/root.sh 
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/12.1.0/db_1

Enter the full pathname of the local bin directory: [/usr/local/bin]: 
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.

Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.

해당 root.sh 스크립트를 root 계정에서 실행하고 <확인> 버튼을 클릭합니다.

Database 소프트웨어 설치가 모두 완료되었으므로 <닫기>를 클릭합니다.

VIII. Database 생성

root 유저로 수행
chmod 770 /u01/app/oracle/admin
chmod 775 /u01/app/oracle/cfgtoollogs
[root@oel6 ~]# chmod 770 /u01/app/oracle/admin
[root@oel6 ~]# chmod 775 /u01/app/oracle/cfgtoollogs

데이터베이스를 생성하기 전에 일부 디렉토리에 쓰기 권한을 같은 그룹의 유저에게 허용해야 정상적으로 생성이 가능합니다.

grid와 oracle 유저를 분리 설치하여 발생하는 것이니 참고 바랍니다.

oracle 유저로 실행
dbca 

데이터베이스 생성을 위해 oracle 유저로 "dbca"를 실행합니다.

'데이터베이스 생성'을 선택하고 <다음>을 클릭합니다.

'고급 모드'를 선택하고 <다음>을 클릭합니다.

설치하려는 데이터베이스의 용도에 따라 다른 템플릿을 선택할 수 있습니다.

일반적인 사용이나 OLTP 업무 처리를 위해서 '범용 또는 트랜잭션 처리'를 선택하고 <다음>을 클릭합니다.

사용자 정의 데이터베이스를 선택할 경우, 원하는 옵션으로 좀 더 자세하게 설정할 수 있습니다.

<세부 정보 표시> 버튼을 클릭할 경우, 각 템플리트에 대한 세부적인 설정값을 확인할 수 있습니다.

데이터베이스 이름과 컨테이너 데이터베이스(이하 CDB) 생성 여부를 선택할 수 있습니다.

12c에서 제공하는 CDB 기능을 사용하려면 '컨테이너 데이터베이스 생성'을 체크해야 합니다.

원하는 값을 입력한 후, <다음>을 클릭합니다.

Enterprise Manager를 구성하거나 기존에 Enterprise Manager Cloud Control에 등록할 것인지를 선택합니다.

별도로 사용하지 않는다면 체크를 모두 해제하고 <다음>을 클릭합니다.

관리 계정의 비밀번호를 설정하는 메뉴입니다.

실습을 위한 구축이므로 '모든 계정에 동일한 관리 비밀번호 사용'을 체크하고 적당한 암호를 입력하고 <다음>을 클릭합니다.

GI 구성시에 리스너가 이미 등록되어 있으므로 기존의 리스너를 선택하고 <다음>을 클릭합니다.

데이터베이스를 저장할 위치를 선택하는 단계입니다.

모두 ASM에 저장할 것이므로 저장 영역 유형을 'ASM(Automatic Storage Management)'로 선택합니다.

데이터의 경우 '+DATA', 빠른 복구 영역은 '+FRA'를 선택하고, '아카이브를 사용으로 설정'을 체크합니다.

아카이브 파일에 대한 설정을 변경하고 싶다면 <아카이브 모드 매개변수 편집>을 클릭합니다.

저장 공간 선택이 완료되면 <다음>을 클릭합니다.

샘플 스키마 설치 여부와 데이터베이스 생성 완료 후에 추가로 실행할 스크립트를 선택하는 단계입니다.

다른 탭에서는 Database Vault 및 Label Security 설치 여부를 선택할 수 있습니다.

특이 사항이 없으면 <다음>을 클릭합니다.

인스턴스 메모리 사이즈와 관리 방법을 선택하는 화면입니다.

MEMORY_TARGET을 사용하려면 '일반 설정'을 선택하고, SGA와 PGA 영역을 구분하여 설정하려면 '사용자 정의 설정'을 선택하면 됩니다.

가용한 프로세스 양을 설정하는 탭입니다.

시스템 규모와 사용량에 맞게 지정하면 됩니다.

데이터베이스에서 사용할 문자를 선택하는 탭입니다.

다국어 데이터를 저장하려면 '유니코드(AL32UTF8)'을 선택하는 것을 권장합니다.

접속 모드를 선택하는 탭입니다.

그 밖에 파라미터를 확인하고자 한다면 <모든 초기화 매개변수> 버튼을 클릭하면 됩니다.

<고급 매개변수 표시>를 선택할 경우, 더 상세한 파라미터를 확인할 수 있습니다.

데이터베이스 생성 옵션을 선택하는 단계입니다.

복구를 위한 백업 차원으로 '데이터베이스 생성 스크립트 생성'은 체크하는 것이 좋습니다.

<저장 영역 위치 사용자 정의> 버튼을 클릭할 경우, 데이터 파일과 컨트롤 파일, 리두 로그에 대한 설정값을 확인할 수 있습니다.

본격적인 설치에 앞서 시스템의 필요 조건을 검사하는 단계입니다.

이상이 없을 경우 자동으로 다음 단계로 넘어갑니다.

데이터베이스 생성에 앞서, 지금까지 선택한 옵션에 대한 요약 정보를 보여주는 단계입니다.

요구사항대로 선택이 되었는지 확인하고, 이상이 없으면 <완료>를 클릭합니다.

데이터베이스 생성 스크립트가 먼저 생성됩니다.

스크립트 생성 후 자동으로 데이터베이스 생성이 진행됩니다.

데이터베이스 생성이 완료되면, 데이터베이스 정보와 함께 작업 로그 위치를 표시하는 화면이 나옵니다.

<비밀번호 관리>를 클릭해서 생성된 계정의 비밀번호를 변경할 수 있습니다.

작업이 완료되었으면 <닫기> 버튼을 클릭합니다.

[oracle@orcl ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       oel6                     STABLE
ora.FRA.dg
               ONLINE  ONLINE       oel6                     STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       oel6                     STABLE
ora.asm
               ONLINE  ONLINE       oel6                     Started,STABLE
ora.ons
               OFFLINE OFFLINE      oel6                     STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
      1        ONLINE  ONLINE       oel6                     STABLE
ora.diskmon
      1        OFFLINE OFFLINE                               STABLE
ora.evmd
      1        ONLINE  ONLINE       oel6                     STABLE
ora.orcl.db
      1        ONLINE  ONLINE       oel6                     Open,STABLE
--------------------------------------------------------------------------------

데이터베이스가 정상적으로 서비스로 등록된 것을 확인할 수 있습니다.

IX. Patch 적용

1. 패치 환경 설정

root 유저로 수행
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=$ORACLE_BASE/12.1.0/grid
export DB_HOME=$ORACLE_BASE/product/12.1.0/db_1
[root@oel6 ~]# export ORACLE_BASE=/u01/app/oracle
[root@oel6 ~]# export GRID_HOME=$ORACLE_BASE/12.1.0/grid
[root@oel6 ~]# export DB_HOME=$ORACLE_BASE/product/12.1.0/db_1

패치 작업은 root 유저로 진행됩니다.

수월한 작업을 위해 환경 변수를 먼저 설정합니다.

2. OPatch 업데이트

root 유저로 수행
cd $GRID_HOME
OPatch/opatch version
mv OPatch OPatch.old
cp -r <압축 해제 경로>/OPatch .
chown -R grid:oinstall OPatch
ll | grep OPatch
OPatch/opatch version
[root@oel6 ~]# cd $GRID_HOME

[root@oel6 grid]# OPatch/opatch version
OPatch Version: 12.1.0.1.3

OPatch succeeded.

[root@oel6 grid]# mv OPatch OPatch.old
 
[root@oel6 grid]# cp -r /media/sf_oracle/OPatch .

[root@oel6 grid]# chown -R grid:oinstall OPatch

[root@oel6 grid]# ll | grep OPatch
drwxr-x---. 10 grid oinstall  4096 2017-05-04 08:24 OPatch
drwxr-xr-x.  7 grid oinstall  4096 2017-05-03 22:01 OPatch.old

[root@oel6 grid]# OPatch/opatch version
OPatch Version: 12.1.0.1.10

OPatch succeeded.

먼저 OPatch 파일을 최신 버전으로 업데이트 합니다.

GI가 설치된 경로에 있는 파일을 먼저 업데이트 합니다.

root 유저로 수행
cd $DB_HOME
mv OPatch OPatch.old
cp -r <압축 해제 경로>/OPatch .
chown -R oracle:oinstall OPatch
OPatch/opatch version
[oracle@orcl ~]$ cd $DB_HOME

[oracle@orcl db_1]$ mv OPatch OPatch.old


[oracle@orcl db_1]$ cp -r /media/sf_oracle/OPatch .


[oracle@orcl db_1]$ chown -R oracle:oinstall OPatch


[oracle@orcl db_1]$ OPatch/opatch version
OPatch Version: 12.1.0.1.10

OPatch succeeded.

그리고 Database가 설치된 경로에 OPatch 파일도 최신 버전으로 업데이트 합니다.

반드시 GI와 Database 경로의 OPatch를 모두 업데이트 해줘야 합니다.

3. 패치 현황 조사

grid와 oracle 유저로 수행
opatch lsinventory
[grid@+ASM ~]$ opatch lsinventory

Oracle Interim 패치 설치 프로그램 버전 12.1.0.1.10
Copyright (c) 2017, Oracle Corporation.  All rights reserved.


Oracle Home       : /u01/app/oracle/12.1.0/grid
Central Inventory : /u01/app/oraInventory
   from           : /u01/app/oracle/12.1.0/grid/oraInst.loc
OPatch version    : 12.1.0.1.10
OUI version       : 12.1.0.2.0
Log file location : /u01/app/oracle/12.1.0/grid/cfgtoollogs/opatch/opatch2017-05-04_08-30-24오전_1.log

Lsinventory Output file location : /u01/app/oracle/12.1.0/grid/cfgtoollogs/opatch/lsinv/lsinventory2017-05-04_08-30-24오전.txt

--------------------------------------------------------------------------------
Local Machine Information::
Hostname: oel6
ARU platform id: 226
ARU platform description:: Linux x86-64

설치된 최상위 레벨 제품(1): 

Oracle Grid Infrastructure 12c                                       12.1.0.2.0
이 Oracle 홈에 1개의 제품이 설치되어 있습니다.


이 Oracle 홈에 설치된 Interim 패치가 없습니다.


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

OPatch succeeded.
[oracle@orcl ~]$ opatch lsinventory

Oracle Interim 패치 설치 프로그램 버전 12.1.0.1.10
Copyright (c) 2017, Oracle Corporation.  All rights reserved.


Oracle Home       : /u01/app/oracle/product/12.1.0/db_1
Central Inventory : /u01/app/oraInventory
   from           : /u01/app/oracle/product/12.1.0/db_1/oraInst.loc
OPatch version    : 12.1.0.1.10
OUI version       : 12.1.0.2.0
Log file location : /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatch/opatch2017-05-04_08-31-16오전_1.log

Lsinventory Output file location : /u01/app/oracle/product/12.1.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2017-05-04_08-31-16오전.txt

--------------------------------------------------------------------------------
Local Machine Information::
Hostname: oel6
ARU platform id: 226
ARU platform description:: Linux x86-64

설치된 최상위 레벨 제품(1): 

Oracle Database 12c                                                  12.1.0.2.0
이 Oracle 홈에 1개의 제품이 설치되어 있습니다.


이 Oracle 홈에 설치된 Interim 패치가 없습니다.


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

OPatch succeeded.

패치 현황을 조사합니다.

기본적인 소프트웨어 설치만 진행한 상태라면 아무것도 패치되지 않은 것으로 나옵니다.

4. Response File 생성

grid 유저로 수행
cd $GRID_HOME/OPatch/ocm/bin
./emocmrsp
[grid@+ASM ~]$ cd $GRID_HOME/OPatch/ocm/bin

[grid@+ASM bin]$ ./emocmrsp
OCM Installation Response Generator 10.3.7.0.0 - Production
Copyright (c) 2005, 2012, Oracle and/or its affiliates.  All rights reserved.

Provide your email address to be informed of security issues, install and
initiate Oracle Configuration Manager. Easier for you if you use your My
Oracle Support Email address/User Name.
Visit http://www.oracle.com/support/policies.html for details.
Email address/User Name: 

You have not provided an email address for notification of security issues.
Do you wish to remain uninformed of security issues ([Y]es, [N]o) [N]:  y
The OCM configuration response file (ocm.rsp) was successfully created.

[grid@+ASM bin]$ ls
emocmrsp  ocm.rsp

패치 작업에 필요한 response file을 생성합니다.

5. 패치 분석

root 유저로 수행
$GRID_HOME/OPatch/opatchauto apply <압축 해제 경로>/25434003 -analyze
[root@oel6 ~]# $GRID_HOME/OPatch/opatchauto apply /media/sf_oracle/25434003 -analyze
OPatch Automation Tool
Copyright (c)2014, Oracle Corporation. All rights reserved.

OPatchauto Version : 12.1.0.1.10
OUI Version        : 12.1.0.2.0
Running from       : /u01/app/oracle/12.1.0/grid

opatchauto log file: /u01/app/oracle/12.1.0/grid/cfgtoollogs/opatchauto/25434003/opatch_gi_2017-05-04_09-53-57_analyze.log

NOTE: opatchauto is running in ANALYZE mode. There will be no change to your system.


OCM RSP file has been ignored in analyze mode. 

Parameter Validation: Successful

Configuration Validation: Successful

Patch Location: /media/sf_oracle/25434003
Grid Infrastructure Patch(es): 21436941 25171037 25363740 25363750 
DB Patch(es): 25171037 25363740 

Patch Validation: Successful
Grid Infrastructure home:
/u01/app/oracle/12.1.0/grid
DB home(s):
/u01/app/oracle/product/12.1.0/db_1


Analyzing patch(es) on "/u01/app/oracle/product/12.1.0/db_1" ...
Patch "/media/sf_oracle/25434003/25171037" successfully analyzed on "/u01/app/oracle/product/12.1.0/db_1" for apply.
Patch "/media/sf_oracle/25434003/25363740" successfully analyzed on "/u01/app/oracle/product/12.1.0/db_1" for apply.

Analyzing patch(es) on "/u01/app/oracle/12.1.0/grid" ...
Patch "/media/sf_oracle/25434003/21436941" successfully analyzed on "/u01/app/oracle/12.1.0/grid" for apply.
Patch "/media/sf_oracle/25434003/25171037" successfully analyzed on "/u01/app/oracle/12.1.0/grid" for apply.
Patch "/media/sf_oracle/25434003/25363740" successfully analyzed on "/u01/app/oracle/12.1.0/grid" for apply.
Patch "/media/sf_oracle/25434003/25363750" successfully analyzed on "/u01/app/oracle/12.1.0/grid" for apply.

[WARNING] The local database instance 'orcl' from '/u01/app/oracle/product/12.1.0/db_1' is not running. SQL changes, if any,  will not be analyzed. Please refer to the log file for more details.

Apply Summary:
Following patch(es) are successfully analyzed:
GI Home: /u01/app/oracle/12.1.0/grid: 21436941,25171037,25363740,25363750
DB Home: /u01/app/oracle/product/12.1.0/db_1: 25171037,25363740

opatchauto succeeded.

패치를 진행하기 전에 호환성이나 기존에 설치된 버전과 충돌되는 부분이 없는지 analyze해야 합니다.

검증이 모두 완료된 상태에서 실체 패치를 적용해야 합니다.

6. 패치 적용

root 유저로 수행
$GRID_HOME/OPatch/opatchauto apply <압축 해제 경로>/25434003 -ocmrf $GRID_HOME/OPatch/ocm/bin/ocm.rsp
[root@oel6 ~]# $GRID_HOME/OPatch/opatchauto apply /media/sf_oracle/25434003 -ocmrf $GRID_HOME/OPatch/ocm/bin/ocm.rsp
OPatch Automation Tool
Copyright (c)2014, Oracle Corporation. All rights reserved.

OPatchauto Version : 12.1.0.1.10
OUI Version        : 12.1.0.2.0
Running from       : /u01/app/oracle/12.1.0/grid

opatchauto log file: /u01/app/oracle/12.1.0/grid/cfgtoollogs/opatchauto/25434003/opatch_gi_2017-05-04_09-59-21_deploy.log

Parameter Validation: Successful

Configuration Validation: Successful

Patch Location: /media/sf_oracle/25434003
Grid Infrastructure Patch(es): 21436941 25171037 25363740 25363750 
DB Patch(es): 25171037 25363740 

Patch Validation: Successful
Grid Infrastructure home:
/u01/app/oracle/12.1.0/grid
DB home(s):
/u01/app/oracle/product/12.1.0/db_1


Performing prepatch operations on SIDB Home (/u01/app/oracle/product/12.1.0/db_1) ... Successful
Following database(s) and/or service(s)  were stopped and will be restarted later during the session: orcl

Applying patch(es) to "/u01/app/oracle/product/12.1.0/db_1" ...
Patch "/media/sf_oracle/25434003/25171037" successfully applied to "/u01/app/oracle/product/12.1.0/db_1".
Patch "/media/sf_oracle/25434003/25363740" successfully applied to "/u01/app/oracle/product/12.1.0/db_1".

Performing prepatch operations on SIHA Home... Successful

Applying patch(es) to "/u01/app/oracle/12.1.0/grid" ...
Patch "/media/sf_oracle/25434003/21436941" successfully applied to "/u01/app/oracle/12.1.0/grid".
Patch "/media/sf_oracle/25434003/25171037" successfully applied to "/u01/app/oracle/12.1.0/grid".
Patch "/media/sf_oracle/25434003/25363740" successfully applied to "/u01/app/oracle/12.1.0/grid".
Patch "/media/sf_oracle/25434003/25363750" successfully applied to "/u01/app/oracle/12.1.0/grid".

Performing postpatch operations on SIHA Home... Successful

Performing postpatch operations on SIDB Home (/u01/app/oracle/product/12.1.0/db_1) ... Successful

[WARNING] The local database instance 'orcl' from '/u01/app/oracle/product/12.1.0/db_1' is not running. SQL changes, if any,  will not be applied. Please refer to the log file for more details.

Apply Summary:
Following patch(es) are successfully installed:
GI Home: /u01/app/oracle/12.1.0/grid: 21436941,25171037,25363740,25363750
DB Home: /u01/app/oracle/product/12.1.0/db_1: 25171037,25363740

opatchauto succeeded.

패치를 진행합니다.

기존에 생성한 response file을 사용하여 진행하며, 최신 OPatch를 사용하거나 일부 다른 OS에서는 response file 옵션이 생략되기도 합니다.

7. Pluggable DB 기동

oracle 유저로 수행
sqlplus / as sysdba
select name, open_mode from v$pdbs;
alter pluggable database all open;
select name, open_mode from v$pdbs; 
[oracle@orcl ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Thu May 4 10:16:24 2017

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


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options

SQL> select name, open_mode from v$pdbs;

NAME			               OPEN_MODE
------------------------------ ----------
PDB$SEED		               READ ONLY
PDB          			       MOUNTED

SQL> alter pluggable database all open;

Pluggable database altered.

SQL> select name, open_mode from v$pdbs;

NAME			               OPEN_MODE
------------------------------ ----------
PDB$SEED		               READ ONLY
PDB			                   READ WRITE

PDB가 모두 online으로 되어있지 않는 경우 datapatch 관련 WARNING이 패치 마지막 단계에 출력됩니다.

이 경우에는 수동으로 PDB를 모두 open 시켜주고, datapatch를 수동으로 적용하면 됩니다.

8. Datapatch 적용

oracle 유저로 수행
datapatch -verbose
[oracle@orcl ~]$ datapatch -verbose
SQL Patching tool version 12.1.0.2.0 Production on Thu May  4 10:21:32 2017
Copyright (c) 2012, 2016, Oracle.  All rights reserved.

Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_21583_2017_05_04_10_21_32/sqlpatch_invocation.log

Connecting to database...OK
Note:  Datapatch will only apply or rollback SQL fixes for PDBs
       that are in an open state, no patches will be applied to closed PDBs.
       Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation
       (Doc ID 1585822.1)
Bootstrapping registry and package to current versions...done
Determining current state...done

Current state of SQL patches:
Bundle series PSU:
  ID 170418 in the binary registry and not installed in any PDB

Adding patches to installation queue and performing prereq checks...
Installation queue:
  For the following PDBs: CDB$ROOT PDB$SEED PDB
    Nothing to roll back
    The following patches will be applied:
      25171037 (DATABASE PATCH SET UPDATE 12.1.0.2.170418)

Installing patches...
Patch installation complete.  Total patches installed: 3

Validating logfiles...
Patch 25171037 apply (pdb CDB$ROOT): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/25171037/21099266/25171037_apply_ORCL_CDBROOT_2017May04_10_22_18.log (no errors)
Patch 25171037 apply (pdb PDB$SEED): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/25171037/21099266/25171037_apply_ORCL_PDBSEED_2017May04_10_22_47.log (no errors)
Patch 25171037 apply (pdb PDB): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/25171037/21099266/25171037_apply_ORCL_PDB_2017May04_10_22_46.log (no errors)
SQL Patching tool complete on Thu May  4 10:23:42 2017

datapatch 적용시 디버깅 목적으로 verbose 옵션을 적용하여 패치를 진행합니다.

  • 레이블 없음