I. 개요
1. 사용 Software
제품명 | 버전 | 아키텍쳐 | 용도 | 패치번호 | 배포 사이트 |
---|---|---|---|---|---|
VirtualBox | 3.x 이상 | 호스트 환경에 따름 | VM 생성 | 해당 없음 | https://www.virtualbox.org |
Oracle Enterprise Linux | 4.x | Linux x86 32bit | OS 구성 | 해당 없음 | |
Clusterware, Database | 10.2.0.1 | Linux x86 32bit | 기본 소프트웨어 | 해당 없음 | https://support.oracle.com (My Oracle Support 권한 필요) |
Patch Set | 10.2.0.5 | Linux x86 32bit | Cluster와 DBMS 패치 | 8202632 | |
OPatch | 10.2.0.5.1 | Linux x86 32bit | Opatch 업데이트 | 6880880 | |
Patch Set Update | 10.2.0.5.12 | Linux x86 32bit | DBMS 업데이트 | 16619894 |
64bit 버전으로 설치해도 동일한 과정으로 진행됩니다.
2. 구성 계획
A) 서버
VM | Host Name | Memory | Net Adapter 1 | Net Adapter 2 | 구성 방법 | 비고 |
---|---|---|---|---|---|---|
RAC1 | rac1 | 2048MB | 브리지 어댑터 | 호스트 전용 어댑터 | 리눅스 설치 | |
RAC2 | rac2 | 2048MB | 브리지 어댑터 | 호스트 전용 어댑터 | RAC1 복제 |
리눅스 기반의 2 node RAC로 구성합니다.
따라서 최소 2개의 Virtual Machine(이하 VM)이 구성되어야 합니다.
B) 스토리지
파일 이름 | 용량 | 타입 | 용도 | 타입 | 비고 |
---|---|---|---|---|---|
RAC1.vdi | 30GB | Dynamic | 1번 서버의 시스템 영역 | 파일 시스템 | |
RAC2.vdi | 30GB | Dynamic | 2번 서버의 시스템 영역 | 파일 시스템 | RAC1을 복제하여 사용합니다. |
OCR1.vdi | 300MB | Fixed | OCR 영역 | Raw Device 공유 | 1번과 2번 노드에서 공유합니다. |
OCR2.vdi | 300MB | Fixed | |||
VOTE1.vdi | 300MB | Fixed | Vote 영역 | ||
VOTE2.vdi | 300MB | Fixed | |||
VOTE3.vdi | 300MB | Fixed | |||
DATA1.vdi | 10GB | Fixed | 데이터베이스 저장 영역 | ||
FRA1.vdi | 10GB | Fixed | FRA 영역 | OCFS2 클러스터링 |
편의를 위해 모든 가상 디스크(2개 노드, 공유 스토리지)는 한 공간(E 드라이브)에 저장합니다.
Automatic Storage Management를 이용하여 Data 공간과 Fast Recovery Area를 구성합니다.
디스크 공간을 절약하기 위해 설치 파일은 모두 한 곳에 압축을 풀어 VirtualBox의 게스트 확장 기능으로 VM에서 불러와 사용합니다.
C) 네트워크
VM | Public IP | Private IP | Virtual IP | Netmask | Gateway |
---|---|---|---|---|---|
RAC1 | 10.0.1.101 | 10.0.5.101 | 10.0.1.111 | 255.255.255.0 | 10.0.1.1 |
RAC2 | 10.0.1.102 | 10.0.5.101 | 10.0.1.111 | 255.255.255.0 | 10.0.1.1 |
Netmask의 경우 Public과 Private 모두 24bit(255.255.255.0)을 사용합니다.
인터넷 공유기 또는 Gateway의 IP에 맞춰 Public IP와 Virtual IP를 설정하기 바랍니다.
3. 호스트 환경
원활한 실습을 위해 64비트 운영체제에 8GB 이상의 메모리가 장착된 환경에서 작업하는 것을 권합니다.
디스크 I/O에 의한 지연을 최소화하기 위해 호스트의 OS가 설치되지 않은 별도의 내장 디스크를 사용하거나 SSD의 사용을 권합니다.
ESATA 또는 USB 3.0 이상의 빠른 속도를 보장하는 외장 디스크를 사용하는 것도 방법일 수 있습니다만 지속적인 연결이 보장되어야 합니다.
II. Virtual Box 설정
<새로 만들기>를 클릭해서 Virtual Machine(이하 VM)을 생성합니다.
32비트 Oracle Enterprise Linux를 설치할 것이므로 운영체제는 ‘Linux’, 버전은 ‘Oracle (32-bit)’을 선택하고 <다음>을 클릭합니다.
원활한 RAC 환경 구성을 위해 VM의 메모리는 “2048”MB로 지정하고 <다음>을 클릭합니다.
VM이 사용할 가상 하드 드라이브를 생성해야 합니다.
기본적으로 ‘지금 가상 하드 드라이브 만들기’가 선택되어 있는 상태에서 <다음>을 클릭합니다.
하드 디스크 파일의 종류는 ‘VDI (VirtualBox 디스크 이미지)’를 선택하고 <다음>을 클릭합니다.
공간을 절약하기 위해 물리적 하드 드라이브 저장 옵션을 ‘동적 할당’으로 선택하고 <다음>을 클릭합니다.
가상 하드 디스크 파일의 이름과 크기를 지정해줘야 합니다.
크기는 "30GB"이상이면 충분합니다.
첫번째 노드의 VM이 생성된 것을 목록에서 확인할 수 있습니다.
이제는 설정을 변경할 차례입니다.
VM을 선택한 상태에서 <설정>을 클릭합니다.
기본적인 OS 구성을 확인할 수 있습니다.
플로피 디스크를 사용하지 않을 것이므로 시스템 항목으로 이동해서 ‘플로피 디스크’를 해제합니다.
불필요한 기능의 사용을 줄여 리소스를 절약하기 위해 ‘오디오’ 항목에서 ‘오디오 사용하기’를 해제합니다.
공용 네트워크 설정을 위해 네트워크 어댑터 1번의 연결방식을 ‘브리지 어댑터’로 변경합니다.
호스트간의 연결 네트워크를 구성하기 위해 네트워크 ‘어댑터 2’ 항목으로 이동합니다.
‘네트워크 어댑터 사용하기’를 체크해서 활성화 시키고, 연결방식을 ‘호스트 전용 어댑터’로 변경합니다.
가상 디스크의 공간을 절약하기 위해 공유 폴더 기능을 이용하고자 합니다.
이 기능을 이용하면 호스트 디스크에 오라클 설치 파일의 압축을 풀어 가상 머신에서 불러와 사용할 수 있습니다.
실제 디스크의 폴더를 VM에서 사용하기 위해 폴더 모양의 아이콘을 클릭합니다.
공유 추가 창이 뜨면 폴더 경로에서 ‘기타’를 선택합니다.
오라클 설치 파일이 있는 호스트의 경로를 찾아 선택한 후 <폴더 선택>을 클릭합니다.
참고로 해당 경로에 grid, database와 패치 파일의 압축을 풀어 놓습니다.
VM 부팅 시 자동으로 인식할 수 있도록 ‘자동 마운트’를 선택합니다.
폴더 이름은 “oracle”을 입력하고 <OK>를 클릭합니다.
가상 머신 안에서 공유 폴더는 /media/sf_oracle로 인식됩니다.
공유 폴더가 설정되었으면 <OK>를 클릭하여 첫번째 노드의 초기 설정을 완료합니다.
{}
III. LINUX 설치
리눅스 부팅 화면에서 그래픽 모드로 설치를 진행하기 위해서 ‘엔터’를 입력합니다.
설치 이미지에 대한 검사 여부를 확인하는 화면입니다.
시간이 걸리더라도 이미지를 검사할 계획이라면 <OK>를, 바로 설치를 진행하려면 <Skip>을 선택하고 엔터를 입력합니다.
설치에 관한 안내문이 있는 화면입니다. <Next>를 클릭합니다.
설치 과정 중 사용할 언어로 ‘Korean(한국어)’를 선택하고 <Next>를 클릭합니다.
키보드 입력에 사용할 언어는 기본값인 ‘U.S. English’를 유지하고 <다음>을 클릭합니다
디스크 파티션을 설정해야 하므로 'Disk Druid를 통한 수동 파티션 설정'을 선택하고 <다음>을 클릭합니다.
디스크 초기화에 대한 경고가 뜹니다.
설치를 위해 가상 디스크를 초기화할 것이므로 <예>를 클릭합니다.
파티션을 나누기 위해 <새로 생성>을 클릭합니다.
다음과 같이 부트 영역의 파티션의 설정값을 입력 또는 선택하고 <확인>을 클릭합니다.
- 마운트 지점 : /boot
- 파일시스템 유형 : ext3
- 용량 : 100
- 추가 용량 옵션 : 고정 용량
추가로 파티션을 만들어야 하므로 다시 '새로 생성'을 클릭합니다.
아래과 같이 swap 영역의 파티션의 설정값을 입력 또는 선택하고 <확인>을 클릭합니다.
- 마운트 지점 : 없음
- 파일시스템 유형 : swap
- 용량 : 4096
- 추가 용량 옵션 : 고정 용량
마지막으로 나머지 영역에 대한 파티션을 할당해야 하므로 '새로 생성'을 클릭합니다.
루트 영역의 파티션의 설정값을 입력 또는 선택하고 <확인>을 클릭합니다.
- 마운트 지점 : /
- 파일시스템 유형 : ext3
- 용량 : 해당 없음
- 추가 용량 옵션 : 최대 가능한 용량으로 채움
파티션 생성이 완료되었으므로 <다음>을 클릭합니다.
부트 로더 설정은 기본값을 유지합니다.
<다음>을 클릭합니다.
공용망 설정을 위해 'eth0'을 선택하고 <편집>을 클릭합니다.
아래과 같이 eth0의 인터페이스 설정값을 입력하고 <확인>을 클릭합니다.
- DHCP 사용 환경으로 설정 : 해제
- 부팅시 활성화 : 선택
- IP 주소 : 10.0.1.101
- 넷마스크 : 255.255.255.0
호스트명은 '수동 호스트명 설정'을 선택하고 "rac1"을 입력합니다.
게이트웨이에는 "10.0.1.1"을 입력하고, 1차 DNS는 "127.0.0.1"을 입력합니다.
전용망을 설정하기 위해 'eth1'을 선택하고 <편집>을 클릭합니다.
아래과 같이 eth1의 인터페이스 설정값을 입력하고 <확인>을 클릭합니다.
- DHCP 사용 환경으로 설정 : 해제
- 부팅시 활성화 : 선택
- IP 주소 : 10.0.5.101
- 넷마스크 : 255.255.255.0
네트워크 설정이 모두 완료되었으므로 <다음>을 클릭합니다.
보안 설정에서 '방화벽을 사용하지 않음'을 선택하고, SELinux도 '사용하지 않음'을 선택한 후 <다음>을 클릭합니다.
운영 환경에서는 보안을 고려하여 충분히 검토한 후에 정책을 수립하기 바랍니다.
방화벽 해제와 관련한 경고 창이 뜨면, <계속 진행>을 클릭합니다.
시스템 기본 언어는 'Korean (Republic of Korea)'로 선택한 후 <다음>을 클릭합니다.
운영 환경에서는 편의에 따라 영어로 지정할 수 있습니다.
시간대 선택과 관련하여 '아시아/서울(Seoul)'이 기본값으로 선택된 것을 확인할 수 있습니다.
<다음>을 클릭합니다.
Root 암호와 확인에 root 계정에 사용할 암호값을 입력하고 <다음>을 클릭합니다.
본격적인 설치를 진행하기에 앞서 설치할 요소를 수동으로 선택하기 위해 '설치할 소프트웨어 패키지 사용자 설정하기'를 선택하고 <다음>을 클릭합니다.
Desktops 그룹에서는 다음의 패키지를 선택합니다.
- X 윈도우 시스템
- GNOME 데스크탑 환경
응용 프로그램 그룹에서는 편집기만 선택합니다.
- 편집기
개발용 도구 그룹에서 필요한 항목을 선택합니다.
- 개발용 도구
- X 소프트웨어 개발
- 레거시 소프트웨어 개발
System 그룹에서는 '관리 도구'와 '시스템 도구'를 선택합니다.
- 관리 도구
- 시스템 도구
시스템 도구에 추가적으로 선택할 패키지가 있으므로 오른쪽의 '자세한 정보'를 클릭합니다.
Oracle 설치를 위해 필요한 패키지를 선택합니다.
- oracle-validated
만약 ASM 환경을 구성해야 한다면 다음의 패키지도 선택합니다.
- oracleasm
- oracleasm-support
추가로 'sysstat' 패키지도 선택한 후 <확인>을 클릭합니다.
- sysstat
필요한 패키지 선택이 완료되었으면 <다음>을 클릭합니다.
설치 시작에 대한 안내 메시지 화면입니다.
<다음>을 클릭하여 설치를 진행합니다.
잠시 운영체제 패키지가 디스크에 설치됩니다.
설치가 모두 완료되었으면 <재부팅>을 클릭합니다.
자동으로 서버가 재부팅됩니다.
재부팅 후에 환영 메시지 화면입니다.
<다음>을 클릭합니다.
사용 계약서와 관련해서 '네, 사용 계약서에 동의합니다'를 선택하고 <다음>을 클릭합니다.
날짜와 시간을 확인하고 <다음>을 클릭합니다.
화면 해상도 설정을 확인하고 <다음>을 클릭합니다.
시스템 사용자 추가에 관한 화면입니다.
이 화면에서 작업을 진행하지는 않을 것이므로 <다음>을 클릭합니다.
사용자 계정 생성에 관한 경고 안내가 나오면 <계속 진행>을 클릭합니다.
추가로 설치할 내용이 없으므로 <다음>을 클릭합니다.
설정이 완료되었으므로 <다음>을 클릭합니다.
{}
IV. 운영체제 환경 설정
1. VirtualBox Guest Addition 설치
로그인 화면에서 사용자 이름에 "root"를 입력하고 엔터키를 누릅니다.
열쇠글에 root 계정의 암호를 입력하고 엔터키를 누르면 데스크탑 화면에 들어갑니다.
VirtualBox로 구축된 환경에서는 편의를 위해 VBOXADDITIONS (이하 Guest Addition)를 설치합니다.
호스트 머신의 VirtualBox 메뉴에서 '장치' > '게스트 확장 CD 이미지 삽입'을 클릭하여, Guest Addition CD를 mount 시켜줍니다.
Guest Addition CD 이미지를 mount하면 데스크탑에 CD 아이콘으로 표시됩니다.
마우스로 아이콘을 클릭하면 CD 안의 파일을 볼 수 있습니다.
VBoxLinuxAddition.run 아이콘을 더블 클릭하여 설치를 시작합니다.
설치 안내 메시지가 나오면 <실행>을 클릭합니다.
잠시 기다리면 설치가 진행됩니다.
버전에 따라서 안내나 경고 메시지가 출력되기도 하지만, 계속 설치를 진행하면 됩니다.
2. 서비스 정리 및 패키지 확인
chkconfig --level 123456 xinetd off chkconfig --level 123456 sendmail off chkconfig --level 123456 cups off chkconfig --level 123456 cups-config-daemon off chkconfig --level 123456 smartd off chkconfig --level 123456 isdn off chkconfig --level 123456 pcmcia off chkconfig --level 123456 iptables off
[root@rac1 ~]# chkconfig --level 123456 xinetd off [root@rac1 ~]# chkconfig --level 123456 sendmail off [root@rac1 ~]# chkconfig --level 123456 cups off [root@rac1 ~]# chkconfig --level 123456 cups-config-daemon off [root@rac1 ~]# chkconfig --level 123456 smartd off [root@rac1 ~]# chkconfig --level 123456 isdn off [root@rac1 ~]# chkconfig --level 123456 pcmcia off [root@rac1 ~]# chkconfig --level 123456 iptables off
리소스 낭비를 줄이기 위해 불필요한 서비스를 끕니다.
rpm -q binutils-* rpm -q compat-db-4* rpm -q control-center-2* rpm -q gcc-3* rpm -q gcc-c++-3* rpm -q glibc-2* rpm -q glibc-common-2* rpm -q gnome-libs-1* rpm -q libstdc++-3* rpm -q libstdc++-devel-3* rpm -q make-3*
[root@rac1 ~]# rpm -q binutils-* binutils-2.15.92.0.2-25 [root@rac1 ~]# rpm -q compat-db-4* compat-db-4.1.25-9 [root@rac1 ~]# rpm -q control-center-2* control-center-2.8.0-12.rhel4.5 [root@rac1 ~]# rpm -q gcc-3* gcc-3.4.6-11.0.1 [root@rac1 ~]# rpm -q gcc-c++-3* gcc-c++-3.4.6-11.0.1 [root@rac1 ~]# rpm -q glibc-2* glibc-2.3.4-2.43 [root@rac1 ~]# rpm -q glibc-common-2* glibc-common-2.3.4-2.43 [root@rac1 ~]# rpm -q gnome-libs-1* gnome-libs-1.4.1.2.90-44.2 [root@rac1 ~]# rpm -q libstdc++-3* libstdc++-3.4.6-11.0.1 [root@rac1 ~]# rpm -q libstdc++-devel-3* libstdc++-devel-3.4.6-11.0.1 [root@rac1 ~]# rpm -q make-3* make-3.80-7.EL4
오라클 설치를 위해 필요한 OS 패키지가 제대로 설치되어 있는지 확인합니다.
만약 이전에 설치 과정을 잘 따라왔다면 모든 패키지가 제대로 설치되어 있을 것입니다.
3. host 파일 수정
### Public 10.0.1.101 rac1.localdomain rac1 10.0.1.102 rac2.localdomain rac2 ### Private 10.0.5.101 rac1-priv.localdomain rac1-priv 10.0.5.102 rac2-priv.localdomain rac2-priv ### Virtual 10.0.1.111 rac1-vip.localdomain rac1-vip 10.0.1.112 rac2-vip.localdomain rac2-vip
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ### Public 10.0.1.101 rac1.localdomain rac1 10.0.1.102 rac2.localdomain rac2 ### Private 10.0.5.101 rac1-priv.localdomain rac1-priv 10.0.5.102 rac2-priv.localdomain rac2-priv ### Virtual 10.0.1.111 rac1-vip.localdomain rac1-vip 10.0.1.112 rac2-vip.localdomain rac2-vip
/etc/hosts 파일에 서버 정보를 추가합니다.
오라클 소프트웨어 설치를 정상적으로 진행하기 위해 정확한 정보를 입력해야 합니다.
만약 loopback 주소인 127.0.0.1에 호스트명인 rac1이 지정되어 있으면, 나머지 부분은 그대로 유지하고 rac1만 제거합니다. (예시 참고)
4. OS 환경 설정 변경
# Controls whether core dumps will append the PID to the core filename. # Useful for debugging multi-threaded applications. kernel.core_uses_pid = 1 fs.file-max = 327679 kernel.msgmni = 2878 kernel.msgmax = 8192 kernel.msgmnb = 65536 kernel.sem = 250 32000 100 142 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4294967295 net.core.rmem_default = 262144 # For 11g recommended value for net.core.rmem_max is 4194304 # net.core.rmem_max = 4194304 # For 10g uncomment the following line, comment other entries for this parameter and re-run sysctl -p net.core.rmem_max=2097152 net.core.wmem_default = 262144 net.core.wmem_max = 262144 fs.aio-max-nr = 3145728 net.ipv4.ip_local_port_range = 1024 65000 vm.lower_zone_protection = 100
[root@rac1 ~]# sysctl -p net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 1 kernel.core_uses_pid = 1 fs.file-max = 327679 kernel.msgmni = 2878 kernel.msgmax = 8192 kernel.msgmnb = 65536 kernel.sem = 250 32000 100 142 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4294967295 net.core.rmem_default = 262144 net.core.rmem_max = 2097152 net.core.wmem_default = 262144 net.core.wmem_max = 262144 fs.aio-max-nr = 3145728 net.ipv4.ip_local_port_range = 1024 65000 vm.lower_zone_protection = 100
OS 커널 변수를 오라클 설치에 적합하도록 수정합니다.
만약 리눅스 설치시에 oracle-validated 패키지를 함께 설치하였다면, 이미 설정되어 있을 것이므로 설정된 내용만 확인하면 됩니다.
만약 수동으로 수정한 부분이 있으면 다음 명령어로 시스템에 반영해줍니다.
sysctl -p
session required pam_limits.so
사용자 인증에 관한 설정을 추가합니다
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
클러스터 상태 모니터링을 위한 hangcheck-timer 설정을 추가합니다.
/sbin/modprobe hangcheck-timer
재기동시에 hangcheck-timer 모듈을 사용할 수 있도록 /etc/rc.local을 수정합니다.
5. 그룹, 사용자 환경 수정
# groupadd oinstall # groupadd dba groupadd oper usermod -g oinstall -G dba,oper,vboxsf oracle passwd oracle
[root@rac1 ~]# groupadd oper [root@rac1 ~]# usermod -g oinstall -G dba,oper,vboxsf oracle [root@rac1 ~]# passwd oracle Changing password for user oracle. New UNIX password: BAD PASSWORD: it is based on a dictionary word Retype new UNIX password: passwd: all authentication tokens updated successfully.
Guest Addition을 설치했으므로 관련 그룹인 vboxsf를 oracle 유저에 추가합니다.
passwd로 유저 암호를 반드시 지정해야 합니다
oracle soft nofile 131072 oracle hard nofile 131072 oracle soft nproc 131072 oracle hard nproc 131072 oracle soft core unlimited oracle hard core unlimited oracle soft memlock 3500000 oracle hard memlock 3500000
리소스 제한을 위한 사용자별 설정값을 입력합니다.
오라클을 설치하는 OS 계정에 맞게 제한값을 입력합니다.
마찬가지로 oracle-validated 패키지를 리눅스와 함께 설치하였다면, 이미 설정되어 있습니다.
if [ \$USER = "oracle" ]; then if [ \$SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi umask 022 fi
오라클 설치 계정에 대한 ulimit 설정을 profile에 추가합니다.
mkdir -p /u01/app/oracle chown -R oracle:oinstall /u01
[root@rac1 ~]# mkdir -p /u01/app/oracle [root@rac1 ~]# chown -R oracle:oinstall /u01
오라클 소프트웨어 설치를 위한 경로를 생성하고, 해당 경로에 대한 권한과 소유권을 수정합니다.
PATH=$PATH:$HOME/bin:/u01/app/oracle/product/10.2.0/crs/bin
root 계정에서 clusterware 설정을 변경할 수 있도록 프로파일에 경로 정보를 추가합니다.
export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin export ORACLE_SID=racdb1 # racdb2 export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin export ORACLE_TERM=xterm export TNS_ADMIN=$ORACLE_HOME/network/admin export ORA_NLS10=$ORACLE_HOME/nls/data export LD_LIBRARY_PATH=$ORACLE_HOME/lib export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib export CLASSPATH=$ORACLE_HOME/JRE export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib export THREADS_FLAG=native export TEMP=/tmp export TMPDIR=/tmp export NLS_LANG=AMERICAN_KOREA.KO16MSWIN949 export NLS_DATE_FORMAT="RRRR/MM/DD:HH24:MI:SS" export PS1='[\u@$ORACLE_SID \W]$ '
마지막으로 oracle 계정의 사용자 환경 설정인 .bash_profile을 수정합니다
{}
V. 공유 스토리지 설정
1. VM 공유 디스크 설정
vboxmanage createmedium --filename OCR1.vdi --size 300 --format VDI --variant Fixed vboxmanage createmedium --filename OCR2.vdi --size 300 --format VDI --variant Fixed vboxmanage createmedium --filename VOTE1.vdi --size 300 --format VDI --variant Fixed vboxmanage createmedium --filename VOTE2.vdi --size 300 --format VDI --variant Fixed vboxmanage createmedium --filename VOTE3.vdi --size 300 --format VDI --variant Fixed vboxmanage createmedium --filename DATA1.vdi --size 10240 --format VDI --variant Fixed vboxmanage createmedium --filename FRA1.vdi --size 10240 --format VDI --variant Fixed
> vboxmanage createmedium --filename OCR1.vdi --size 300 --format VDI --variant Fixed 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Medium created. UUID: f874820f-3f90-44b2-bc79-09b288c07bb5 > vboxmanage createmedium --filename OCR2.vdi --size 300 --format VDI --variant Fixed 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Medium created. UUID: 58144599-f14b-4319-ae7f-7b7df7dfb329 > vboxmanage createmedium --filename VOTE1.vdi --size 300 --format VDI --variant Fixed 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Medium created. UUID: b9899f79-68b6-40f4-b718-c73635688550 > vboxmanage createmedium --filename VOTE2.vdi --size 300 --format VDI --variant Fixed 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Medium created. UUID: e2863fe6-60a5-45c7-b69c-e8673f0f22b9 > vboxmanage createmedium --filename VOTE3.vdi --size 300 --format VDI --variant Fixed 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Medium created. UUID: 42ee91fa-1126-4aa8-95d5-45db095b6cb9 > vboxmanage createmedium --filename DATA1.vdi --size 10240 --format VDI --variant Fixed 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Medium created. UUID: bdc67b80-d2ab-466a-80c7-90a1c08b3cdd > vboxmanage createmedium --filename FRA1.vdi --size 10240 --format VDI --variant Fixed 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Medium created. UUID: 561a9964-9a00-493d-b2d5-6ff628bce3be
호스트 머신에서 cmd 명령어를 사용해서 창을 열고 작업을 진행합니다.
vboxmanage.exe 파일 위치에 대한 PATH 설정이 되어 있으면 경로를 입력하지 않아도 바로 아무 디렉토리에서나 실행할 수 있습니다.
vboxmanage modifymedium OCR1.vdi --type shareable vboxmanage modifymedium OCR2.vdi --type shareable vboxmanage modifymedium VOTE1.vdi --type shareable vboxmanage modifymedium VOTE2.vdi --type shareable vboxmanage modifymedium VOTE3.vdi --type shareable vboxmanage modifymedium DATA1.vdi --type shareable vboxmanage modifymedium FRA1.vdi --type shareable
> vboxmanage modifymedium OCR1.vdi --type shareable > vboxmanage modifymedium OCR2.vdi --type shareable > vboxmanage modifymedium VOTE1.vdi --type shareable > vboxmanage modifymedium VOTE2.vdi --type shareable > vboxmanage modifymedium VOTE3.vdi --type shareable > vboxmanage modifymedium DATA1.vdi --type shareable > vboxmanage modifymedium FRA1.vdi --type shareable
디스크 모드를 모두 shareable로 변경합니다.
참고로 shareable로 설정하기 위해서는 반드시 가상 디스크 드라이브를 고정 크기(Fixed)로 생성해줘야 합니다.
VM에 새로 만든 공유 디스크들을 추가합니다.
VM 설정에 들어가서 ‘저장소’ 항목으로 이동한 후에 ‘컨트롤러’옆에 있는 ‘하드 디스크 추가하기’ 아이콘을 클릭합니다.
<기존 디스크 선택하기>를 클릭합니다.
탐색창에서 생성한 디스크 이미지가 있는 경로로 찾아가서 추가할 디스크 파일을 선택한 후 <열기>를 클릭합니다.
디스크 파일이 SATA 콘트롤러에 추가된 것을 확인할 수 있습니다.
같은 방법으로 나머지 디스크들도 모두 추가하고, 완료가 되었으면 <OK>를 클릭합니다.
왼쪽의 예시와 다르게 7개 파일을 추가하면 됩니다.
- OCR1.vdi
- OCR2.vdi
- VOTE1.vdi
- VOTE2.vdi
- VOTE3.vdi
- DATA1.vdi
- FRA1.vdi
2. Raw Device 설정
ls /dev/sd* cat /proc/partitions
[root@rac1 ~]# ls /dev/sd* /dev/sda /dev/sda2 /dev/sdb /dev/sdd /dev/sdf /dev/sdh /dev/sda1 /dev/sda3 /dev/sdc /dev/sde /dev/sdg [root@rac1 ~]# cat /proc/partitions major minor #blocks name 8 0 31457280 sda 8 1 104391 sda1 8 2 4192965 sda2 8 3 27157882 sda3 8 16 307200 sdb 8 32 307200 sdc 8 48 307200 sdd 8 64 307200 sde 8 80 307200 sdf 8 96 10485760 sdg 8 112 10485760 sdh
VM을 부팅하고 root 계정으로 접속하면 추가된 디스크와 파티션 정보를 확인할 수 있습니다.
fdisk /dev/sdb fdisk /dev/sdc fdisk /dev/sdd fdisk /dev/sde fdisk /dev/sdf fdisk /dev/sdg fdisk /dev/sdh
[root@rac1 ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-300, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-300, default 300): Using default value 300 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@rac1 ~]# fdisk /dev/sdc Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-300, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-300, default 300): Using default value 300 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@rac1 ~]# fdisk /dev/sdd Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-300, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-300, default 300): Using default value 300 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@rac1 ~]# fdisk /dev/sde Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-300, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-300, default 300): Using default value 300 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@rac1 ~]# fdisk /dev/sdf Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-300, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-300, default 300): Using default value 300 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@rac1 ~]# fdisk /dev/sdg Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. The number of cylinders for this disk is set to 1305. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) 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 or +size or +sizeM or +sizeK (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@rac1 ~]# fdisk /dev/sdh Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. The number of cylinders for this disk is set to 1305. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) 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 or +size or +sizeM or +sizeK (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.
VM에 연결된 디스크를 모두 단일 파티션으로 설정합니다.
ls /dev/sd* cat /proc/partitions
[root@rac1 ~]# ls /dev/sd* /dev/sda /dev/sda3 /dev/sdc /dev/sdd1 /dev/sdf /dev/sdg1 /dev/sda1 /dev/sdb /dev/sdc1 /dev/sde /dev/sdf1 /dev/sdh /dev/sda2 /dev/sdb1 /dev/sdd /dev/sde1 /dev/sdg /dev/sdh1 [root@rac1 ~]# cat /proc/partitions major minor #blocks name 8 0 31457280 sda 8 1 104391 sda1 8 2 4192965 sda2 8 3 27157882 sda3 8 16 307200 sdb 8 17 305203 sdb1 8 32 307200 sdc 8 33 305203 sdc1 8 48 307200 sdd 8 49 305203 sdd1 8 64 307200 sde 8 65 305203 sde1 8 80 307200 sdf 8 81 305203 sdf1 8 96 10485760 sdg 8 97 10482381 sdg1 8 112 10485760 sdh 8 113 10482381 sdh1
디스크별로 파티션이 생성된 결과를 확인할 수 있습니다.
pvcreate /dev/sdg1 pvdisplay /dev/sdg1
[root@rac1 ~]# pvcreate /dev/sdg1 Physical volume "/dev/sdg1" successfully created [root@rac1 ~]# pvdisplay /dev/sdg1 "/dev/sdg1" is a new physical volume of "10.00 GB" --- NEW Physical volume --- PV Name /dev/sdg1 VG Name PV Size 10.00 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID qSKPsy-qLV7-rc05-09j4-R3ff-bN6Q-g5Ensf
디스크 하나를 논리 볼륨으로 분할하여 사용할 것이므로, 먼저 해당 디스크에 대한 물리 볼륨을 생성합니다.
vgcreate dbvg /dev/sdg1 vgdisplay dbvg
[root@rac1 ~]# vgcreate dbvg /dev/sdg1 Volume group "dbvg" successfully created [root@rac1 ~]# vgdisplay dbvg --- Volume group --- VG Name dbvg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 10.00 GB PE Size 4.00 MB Total PE 2559 Alloc PE / Size 0 / 0 Free PE / Size 2559 / 10.00 GB VG UUID uEIczL-Ftd1-FLmF-3cpr-QlDi-6oyB-cVvTbn
논리 볼륨으로 나누기 위해 먼저 볼륨 그룹을 dbvg이라는 이름으로 생성합니다.
lvcreate -L 1025M -n system dbvg lvcreate -L 1025M -n sysaux dbvg lvcreate -L 1025M -n users dbvg lvcreate -L 1025M -n temp dbvg lvcreate -L 1025M -n undotbs1 dbvg lvcreate -L 1025M -n undotbs2 dbvg lvcreate -L 101M -n control01 dbvg lvcreate -L 101M -n control02 dbvg lvcreate -L 201M -n redo01 dbvg lvcreate -L 201M -n redo02 dbvg lvcreate -L 201M -n redo03 dbvg lvcreate -L 201M -n redo04 dbvg lvcreate -L 201M -n redo05 dbvg lvcreate -L 201M -n redo06 dbvg lvcreate -L 201M -n spfile dbvg lvcreate -L 101M -n pwdfile dbvg
[root@rac1 ~]# lvcreate -L 1025M -n system dbvg Rounding up size to full physical extent 1.00 GB Logical volume "system" created [root@rac1 ~]# lvcreate -L 1025M -n sysaux dbvg Rounding up size to full physical extent 1.00 GB Logical volume "sysaux" created [root@rac1 ~]# lvcreate -L 1025M -n users dbvg Rounding up size to full physical extent 1.00 GB Logical volume "users" created [root@rac1 ~]# lvcreate -L 1025M -n temp dbvg Rounding up size to full physical extent 1.00 GB Logical volume "temp" created [root@rac1 ~]# lvcreate -L 1025M -n undotbs1 dbvg Rounding up size to full physical extent 1.00 GB Logical volume "undotbs1" created [root@rac1 ~]# lvcreate -L 1025M -n undotbs2 dbvg Rounding up size to full physical extent 1.00 GB Logical volume "undotbs2" created [root@rac1 ~]# lvcreate -L 101M -n control01 dbvg Rounding up size to full physical extent 104.00 MB Logical volume "control01" created [root@rac1 ~]# lvcreate -L 101M -n control02 dbvg Rounding up size to full physical extent 104.00 MB Logical volume "control02" created [root@rac1 ~]# lvcreate -L 201M -n redo01 dbvg Rounding up size to full physical extent 204.00 MB Logical volume "redo01" created [root@rac1 ~]# lvcreate -L 201M -n redo02 dbvg Rounding up size to full physical extent 204.00 MB Logical volume "redo02" created [root@rac1 ~]# lvcreate -L 201M -n redo03 dbvg Rounding up size to full physical extent 204.00 MB Logical volume "redo03" created [root@rac1 ~]# lvcreate -L 201M -n redo04 dbvg Rounding up size to full physical extent 204.00 MB Logical volume "redo04" created [root@rac1 ~]# lvcreate -L 201M -n redo05 dbvg Rounding up size to full physical extent 204.00 MB Logical volume "redo05" created [root@rac1 ~]# lvcreate -L 201M -n redo06 dbvg Rounding up size to full physical extent 204.00 MB Logical volume "redo06" created [root@rac1 ~]# lvcreate -L 201M -n spfile dbvg Rounding up size to full physical extent 204.00 MB Logical volume "spfile" created [root@rac1 ~]# lvcreate -L 101M -n pwdfile dbvg Rounding up size to full physical extent 104.00 MB Logical volume "pwdfile" created
볼륨 그룹을 각각의 용량에 맞게 논리 볼륨으로 분할합니다.
raw device의 헤더 정보가 저장되는 공간이 필요하므로, 실제 사용하고자 하는 용량보다 1~4MB 정도 더 크게 할당합니다.
lvdisplay
[root@rac1 ~]# lvdisplay --- Logical volume --- LV Name /dev/dbvg/system VG Name dbvg LV UUID CskqB7-fvNA-jbu1-CODd-QRXm-0JUX-55HBVW LV Write Access read/write LV Status available # open 0 LV Size 1.00 GB Current LE 257 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Name /dev/dbvg/sysaux VG Name dbvg LV UUID BSLcfB-dIXs-wIQj-PnIJ-LyNH-N3Ht-M7gy5n LV Write Access read/write LV Status available # open 0 LV Size 1.00 GB Current LE 257 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 --- Logical volume --- LV Name /dev/dbvg/users VG Name dbvg LV UUID 9KZnXP-9Sf7-imrG-MUsU-2lSi-e2BE-p4eW3V LV Write Access read/write LV Status available # open 0 LV Size 1.00 GB Current LE 257 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 --- Logical volume --- LV Name /dev/dbvg/temp VG Name dbvg LV UUID 2Nw9Lq-57WV-o7X7-KaoO-bGdt-EPjI-XtcewR LV Write Access read/write LV Status available # open 0 LV Size 1.00 GB Current LE 257 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:3 --- Logical volume --- LV Name /dev/dbvg/undotbs1 VG Name dbvg LV UUID u6R7SV-EAfY-BI8X-ceXT-3qkw-DDwy-PLaNI3 LV Write Access read/write LV Status available # open 0 LV Size 1.00 GB Current LE 257 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:4 --- Logical volume --- LV Name /dev/dbvg/undotbs2 VG Name dbvg LV UUID wnNtIo-WJnA-MCwW-5wN8-XzTR-6NC2-Tb2S2l LV Write Access read/write LV Status available # open 0 LV Size 1.00 GB Current LE 257 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:5 --- Logical volume --- LV Name /dev/dbvg/control01 VG Name dbvg LV UUID h3aKPO-j3kk-x6Oj-S06q-eRpo-hF0C-3DaJK0 LV Write Access read/write LV Status available # open 0 LV Size 104.00 MB Current LE 26 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:6 --- Logical volume --- LV Name /dev/dbvg/control02 VG Name dbvg LV UUID MvtJ2f-Fmxn-X5xI-8yOZ-Webx-A1ep-zQe2YN LV Write Access read/write LV Status available # open 0 LV Size 104.00 MB Current LE 26 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:7 --- Logical volume --- LV Name /dev/dbvg/redo01 VG Name dbvg LV UUID fXkiD7-SpuP-QRxY-FPpl-Beew-sT3t-Wmb0Fe LV Write Access read/write LV Status available # open 0 LV Size 204.00 MB Current LE 51 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:8 --- Logical volume --- LV Name /dev/dbvg/redo02 VG Name dbvg LV UUID OxIPHx-CKPW-xWDT-X2yr-g444-0aqN-BDCzQ5 LV Write Access read/write LV Status available # open 0 LV Size 204.00 MB Current LE 51 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:9 --- Logical volume --- LV Name /dev/dbvg/redo03 VG Name dbvg LV UUID ZjEqqi-rYkz-mcGH-faA3-t3oo-6jGA-u3MyJw LV Write Access read/write LV Status available # open 0 LV Size 204.00 MB Current LE 51 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:10 --- Logical volume --- LV Name /dev/dbvg/redo04 VG Name dbvg LV UUID KlQTd1-uOmh-2JAH-roAc-OkvD-C2Mg-CpQS56 LV Write Access read/write LV Status available # open 0 LV Size 204.00 MB Current LE 51 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:11 --- Logical volume --- LV Name /dev/dbvg/redo05 VG Name dbvg LV UUID py7JlB-s8rh-lAmc-bS41-jylF-iM6d-Nz4S86 LV Write Access read/write LV Status available # open 0 LV Size 204.00 MB Current LE 51 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:12 --- Logical volume --- LV Name /dev/dbvg/redo06 VG Name dbvg LV UUID 0nelNI-bySE-2PvG-2x4t-oNyV-LZXH-tTwPoR LV Write Access read/write LV Status available # open 0 LV Size 204.00 MB Current LE 51 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:13 --- Logical volume --- LV Name /dev/dbvg/spfile VG Name dbvg LV UUID h331CH-6FUk-3WE1-rrK7-yo0C-fb2e-QmJiNK LV Write Access read/write LV Status available # open 0 LV Size 204.00 MB Current LE 51 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:14 --- Logical volume --- LV Name /dev/dbvg/pwdfile VG Name dbvg LV UUID fbFMTr-pg3a-zsS0-WdvX-jny7-37x6-D0rHOZ LV Write Access read/write LV Status available # open 0 LV Size 104.00 MB Current LE 26 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:15
생성된 논리 볼륨의 정보를 확인할 수 있습니다.
/dev/raw/raw1 /dev/sdb1 /dev/raw/raw2 /dev/sdc1 /dev/raw/raw3 /dev/sdd1 /dev/raw/raw4 /dev/sde1 /dev/raw/raw5 /dev/sdf1 /dev/raw/raw6 /dev/dbvg/system /dev/raw/raw7 /dev/dbvg/sysaux /dev/raw/raw8 /dev/dbvg/users /dev/raw/raw9 /dev/dbvg/temp /dev/raw/raw10 /dev/dbvg/undotbs1 /dev/raw/raw11 /dev/dbvg/undotbs2 /dev/raw/raw12 /dev/dbvg/control01 /dev/raw/raw13 /dev/dbvg/control02 /dev/raw/raw14 /dev/dbvg/redo01 /dev/raw/raw15 /dev/dbvg/redo02 /dev/raw/raw16 /dev/dbvg/redo03 /dev/raw/raw17 /dev/dbvg/redo04 /dev/raw/raw18 /dev/dbvg/redo05 /dev/raw/raw19 /dev/dbvg/redo06 /dev/raw/raw20 /dev/dbvg/spfile /dev/raw/raw21 /dev/dbvg/pwdfile
파티션과 논리 볼륨을 raw device로 등록합니다.
:113 => 113번 줄로 이동 #raw/*:root:disk:0660 => 주석 처리 raw/*:oracle:dba:0660 => 밑 줄에 추가
#raw/*:root:disk:0660 raw/*:oracle:dba:0660
raw device의 소유자와 권한을 유지할 수 있도록 권한 설정 파일을 수정합니다.
해당 파일의 113번 줄에 있는 내용을 root 유저에서 oracle 유저로 변경합니다.
service rawdevices start
[root@rac1 ~]# service rawdevices start Assigning devices: /dev/raw/raw1 --> /dev/sdb1 /dev/raw/raw1: bound to major 8, minor 17 /dev/raw/raw2 --> /dev/sdc1 /dev/raw/raw2: bound to major 8, minor 33 /dev/raw/raw3 --> /dev/sdd1 /dev/raw/raw3: bound to major 8, minor 49 /dev/raw/raw4 --> /dev/sde1 /dev/raw/raw4: bound to major 8, minor 65 /dev/raw/raw5 --> /dev/sdf1 /dev/raw/raw5: bound to major 8, minor 81 /dev/raw/raw6 --> /dev/dbvg/system /dev/raw/raw6: bound to major 253, minor 0 /dev/raw/raw7 --> /dev/dbvg/sysaux /dev/raw/raw7: bound to major 253, minor 1 /dev/raw/raw8 --> /dev/dbvg/users /dev/raw/raw8: bound to major 253, minor 2 /dev/raw/raw9 --> /dev/dbvg/temp /dev/raw/raw9: bound to major 253, minor 3 /dev/raw/raw10 --> /dev/dbvg/undotbs1 /dev/raw/raw10: bound to major 253, minor 4 /dev/raw/raw11 --> /dev/dbvg/undotbs2 /dev/raw/raw11: bound to major 253, minor 5 /dev/raw/raw12 --> /dev/dbvg/control01 /dev/raw/raw12: bound to major 253, minor 6 /dev/raw/raw13 --> /dev/dbvg/control02 /dev/raw/raw13: bound to major 253, minor 7 /dev/raw/raw14 --> /dev/dbvg/redo01 /dev/raw/raw14: bound to major 253, minor 8 /dev/raw/raw15 --> /dev/dbvg/redo02 /dev/raw/raw15: bound to major 253, minor 9 /dev/raw/raw16 --> /dev/dbvg/redo03 /dev/raw/raw16: bound to major 253, minor 10 /dev/raw/raw17 --> /dev/dbvg/redo04 /dev/raw/raw17: bound to major 253, minor 11 /dev/raw/raw18 --> /dev/dbvg/redo05 /dev/raw/raw18: bound to major 253, minor 12 /dev/raw/raw19 --> /dev/dbvg/redo06 /dev/raw/raw19: bound to major 253, minor 13 /dev/raw/raw20 --> /dev/dbvg/spfile /dev/raw/raw20: bound to major 253, minor 14 /dev/raw/raw27 --> /dev/dbvg/pwdfile /dev/raw/raw21: bound to major 253, minor 15 done
raw device 서비스를 시작하면, 등록된 정보를 기반으로 파티션과 논리 볼륨에 대하여 raw device를 할당합니다.
cd /dev/raw ls -ltra
[root@rac1 ~]# cd /dev/raw [root@rac1 raw]# ls -ltra 합계 0 crw-rw---- 1 oracle dba 162, 1 3월 4 17:21 raw1 crw-rw---- 1 oracle dba 162, 2 3월 4 17:21 raw2 crw-rw---- 1 oracle dba 162, 3 3월 4 17:21 raw3 crw-rw---- 1 oracle dba 162, 4 3월 4 17:21 raw4 crw-rw---- 1 oracle dba 162, 5 3월 4 17:21 raw5 crw-rw---- 1 oracle dba 162, 6 3월 4 17:21 raw6 crw-rw---- 1 oracle dba 162, 7 3월 4 17:21 raw7 crw-rw---- 1 oracle dba 162, 8 3월 4 17:21 raw8 crw-rw---- 1 oracle dba 162, 9 3월 4 17:21 raw9 crw-rw---- 1 oracle dba 162, 10 3월 4 17:21 raw10 crw-rw---- 1 oracle dba 162, 11 3월 4 17:21 raw11 crw-rw---- 1 oracle dba 162, 12 3월 4 17:21 raw12 crw-rw---- 1 oracle dba 162, 13 3월 4 17:21 raw13 crw-rw---- 1 oracle dba 162, 14 3월 4 17:21 raw14 crw-rw---- 1 oracle dba 162, 15 3월 4 17:21 raw15 crw-rw---- 1 oracle dba 162, 16 3월 4 17:21 raw16 crw-rw---- 1 oracle dba 162, 17 3월 4 17:21 raw17 crw-rw---- 1 oracle dba 162, 18 3월 4 17:21 raw18 crw-rw---- 1 oracle dba 162, 19 3월 4 17:21 raw19 crw-rw---- 1 oracle dba 162, 20 3월 4 17:21 raw20 crw-rw---- 1 oracle dba 162, 21 3월 4 17:21 raw21 drwxr-xr-x 2 root root 460 3월 4 17:21 . drwxr-xr-x 11 root root 6440 3월 4 17:21 ..
등록된 raw device 정보를 확인할 수 있습니다.
{}
3. OCFS2 설정
cd /media/cdrom/Enterprise/RPMS rpm -ivh ocfs2-tools-1.2.7-1.el4 rpm -ivh ocfs2-2.6.9-89.0.0.0.1.EL-1.2.9-1.el4 rpm -ivh ocfs2console-1.2.7-1.el4 rpm -ivh ocfs2-tools-devel-1.2.7-1.el4
[root@rac1 ~]# cd /media/cdrom/Enterprise/RPMS [root@rac1 RPMS]# rpm -ivh ocfs2-tools-1.2.7-1.el4.i386.rpm 경고: ocfs2-tools-1.2.7-1.el4.i386.rpm: V3 DSA signature: NOKEY, key ID b38a8516 준비 중... ########################################### [100%] 1:ocfs2-tools ########################################### [100%] [root@rac1 RPMS]# rpm -ivh ocfs2-2.6.9-89.0.0.0.1.EL-1.2.9-1.el4.i686.rpm 경고: ocfs2-2.6.9-89.0.0.0.1.EL-1.2.9-1.el4.i686.rpm: V3 DSA signature: NOKEY, key ID b38a8516 준비 중... ########################################### [100%] 1:ocfs2-2.6.9-89.0.0.0.1.########################################### [100%] [root@rac1 RPMS]# rpm -ivh ocfs2console-1.2.7-1.el4.i386.rpm 경고: ocfs2console-1.2.7-1.el4.i386.rpm: V3 DSA signature: NOKEY, key ID b38a8516 준비 중... ########################################### [100%] 1:ocfs2console ########################################### [100%] [root@rac1 RPMS]# rpm -ivh ocfs2-tools-devel-1.2.7-1.el4.i386.rpm 경고: ocfs2-tools-devel-1.2.7-1.el4.i386.rpm: V3 DSA signature: NOKEY, key ID b38a8516 준비 중... ########################################### [100%] 1:ocfs2-tools-devel ########################################### [100%]
FRA는 archive log가 파일 형태로 저장되므로 raw device를 사용할 수 없습니다.
따라서, 모든 노드에서 archive log를 저장하고 읽을 수 있도록 OCFS2를 설정해야 합니다.
OCFS2 패키지는 리눅스 CD 이미지에서 설치할 수 있습니다.
ocfs2console
X window 지원 화면에서 GUI 모드의 콘솔을 실행합니다.
최초로 콘솔이 실행된 화면입니다.
클러스터링할 서버의 정보를 먼저 등록해야 합니다.
'Cluster' > 'Configure Nodes...'에 가서 노드의 정보를 입력합니다.
최초 실행시에 클러스터 스택인 o2cb 활성화에 대한 안내 메시지가 뜹니다.
추후에 진행할 것이므로 우선 <닫기>를 클릭합니다.
노드 설정 창에서 <더하기>를 클릭합니다.
추가할 노드의 이름과 heartbeat 체크에 사용할 IP와 포트 정보를 입력하고, <확인>을 클릭합니다.
- Name : rac1
- IP Address : 10.0.5.101
- IP Port : 7777 (기본값)
2번 노드의 정보를 추가하기 위해 <더하기>를 다시 클릭합니다.
2번 노드의 이름과 heartbeat 체크에 사용할 IP와 포트 정보를 입력하고, <확인>을 클릭합니다.
- Name : rac2
- IP Address : 10.0.5.102
- IP Port : 7777 (기본값)
[root@rac1 ~]# cat /etc/ocfs2/cluster.conf node: ip_port = 7777 ip_address = 10.0.5.101 number = 0 name = rac1 cluster = ocfs2 node: ip_port = 7777 ip_address = 10.0.5.102 number = 1 name = rac2 cluster = ocfs2 cluster: node_count = 2 name = ocfs2
클러스터링할 노드의 정보가 모두 입력되었으면 <적용>을 클릭합니다.
아주 잠깐 노드 설정창이 리로드 되는 느낌이면 설정이 완료된 것입니다.
/etc/ocfs2/cluster.conf 파일에 저장된 정보를 확인할 수 있습니다.
등록이 완료되었으므로 <닫기> 버튼을 클릭합니다.
chkconfig --add o2cb chkconfig --list o2cb
[root@rac1 ~]# chkconfig --add o2cb [root@rac1 ~]# chkconfig --list o2cb o2cb 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
클러스터 스택을 활성화합니다.
/etc/init.d/o2cb configure
[root@rac1 ~]# /etc/init.d/o2cb configure Configuring the O2CB driver. This will configure the on-boot properties of the O2CB driver. The following questions will determine whether the driver is loaded on boot. The current values will be shown in brackets ('[]'). Hitting <ENTER> without typing an answer will keep that current value. Ctrl-C will abort. Load O2CB driver on boot (y/n) [n]: y Cluster to start on boot (Enter "none" to clear) [ocfs2]: Specify heartbeat dead threshold (>=7) [31]: Specify network idle timeout in ms (>=5000) [30000]: Specify network keepalive delay in ms (>=1000) [2000]: Specify network reconnect delay in ms (>=2000) [2000]: Writing O2CB configuration: OK O2CB cluster ocfs2 already online
재부팅시에 o2cb 드라이버가 자동으로 실행될 수 있도록 설정을 변경합니다.
mkdir /FRA
[root@rac1 ~]# mkdir /FRA
공유 영역으로 사용할 경로를 생성합니다.
공유할 디스크를 ocfs2 형식으로 포맷하기 위해 콘솔에서 'Task' > 'Format'을 선택합니다.
사용할 파티션(미할당된 상태여야 함)을 선택하고 <확인>을 클릭합니다.
- Available devices : /dev/sdh1
- Volume label : oracle (기본값)
- Cluster size : Auto (기본값)
- Number of node slots : 4 (기본값)
- Block size : Auto (기본값)
선택할 파티션을 포맷할 것인지 뭍는 창이 뜹니다.
<예>를 클릭하면 잠시 파티션에 대한 포맷이 수행됩니다.
포맷된 디스크(파티션)을 공유할 경로에 마운트해야 사용할 수 있습니다.
콘솔에서 <Mount> 아이콘을 클릭합니다.
마운트 포인트에 "/FRA" (마운트할 디렉토리 경로)를 입력하고 <확인>을 클릭합니다.
정상적으로 마운트 되었습니다.
/dev/sdh1 /FRA ocfs2 _netdev,datavolume 0 0
재기동 후에도 마운트가 유지되도록 설정 정보를 fstab에 추가합니다.
chown -R oracle:dba /FRA chmod -R 770 /FRA
마찬가지로 재기동 후에 소유자와 권한이 유지될 수 있도록, 변경 스크립트를 rc.local 에 추가합니다.
shutdown -h now
1번 노드의 설정이 완료되었으면, 2번 노드의 디스크로 복제하기 위해 중지합니다.
{}
VI. RAC2 VM 구성 및 사전 준비
1. 2번 노드 VM 복제
vboxmanage clonemedium rac1.vdi ..\rac2.vdi --format VDI
> vboxmanage clonemedium rac1.vdi ..\rac2.vdi --format VDI 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone medium created in format 'VDI'. UUID: b7d052cb-63c9-4f92-b81c-b429163680d4
RAC1 VM을 RAC2 VM으로 사용하기 위해 VBoxManage 툴을 사용해 디스크 복제합니다.
작업을 위해서 1번 노드는 정상적으로 shutdown 시켜야 하며, 일반 OS 복제 방식을 사용할 경우 UUID가 충돌하게 되므로 반드시 VBoxManage를 사용해야 합니다.
VirtualBox에서 ‘새로 만들기’를 클릭합니다.
운영체제는 ‘Linux’ 버전은 ‘Oracle (32-bit)’을 선택하고 <다음>을 클릭합니다.
메모리는 “2048”MB로 입력하고 <다음>을 클릭합니다.
복제된 디스크 이미지를 사용할 것이므로 ‘기존 하드 디스크 사용하기’를 선택하고 폴더 아이콘을 클릭합니다.
탐색창에서 복제된 RAC2.vdi 파일을 찾아서 선택한 후 <열기>를 클릭합니다.
<만들기>를 클릭하면 2번째 노드의 구성이 완료됩니다.
초기값으로 구성된 내용을 수정할 것이므로 해당 VM을 선택하고 <설정>을 클릭합니다.
첫번째 노드와 마찬가지로 ‘플로피 디스크’를 해제합니다.
첫번째 노드와 똑같은 순서로 모든 공유 디스크를 연결합니다.
첫번째 노드와 마찬가지로 ‘오디오 사용하기’를 해제합니다.
네트워크 어댑터 1은 ‘브리지 어댑터’로 설정합니다.
네트워크 어댑터 2를 사용하기 위해 ‘네트워크 어댑터 사용하기’를 체크하고 연결 속성을 ‘호스트 전용 어댑터’로 선택합니다.
설정 사항을 모두 변경했으면 <OK>를 클릭합니다.
2. 재기동 및 네트워크 정보 수정
1번 노드와의 설정값이 충돌할 수 있으므로, 우선 2번 노드만 부팅합니다.
처음 부팅하면 네트워크 인터페이스가 변경된 것을 자동으로 감지하고 하드웨어 설정 안내 메시지가 출력됩니다.
설정을 진행하기 위해 아무 키나 입력합니다.
기존의 설정을 삭제해야 하므로 <설정 삭제>를 선택하고 엔터를 입력합니다.
네트워크 인터페이스 2개가 변경된 것이므로, 한번 더 확인하게 됩니다.
마찬가지로 <설정 삭제>를 선택하고 엔터를 입력합니다.
새로운 하드웨어 추가를 위해 <설정>을 클릭합니다.
맨 먼저 전용망 인터페이스를 추가하게 됩니다.
2번 노드 전용망의 정보를 입력하고, <확인>을 선택한 후 엔터를 입력합니다.
- IP 주소 : 10.0.5.102
- 넷마스크 : 255.255.255.0
두번째로 공용망의 인터페이스를 추가하기 위해 <설정>을 선택하고 엔터를 입력합니다.
1번 노드 전용망의 정보를 입력하고, <확인>을 선택한 후 엔터를 입력합니다.
- IP 주소 : 10.0.1.102
- 넷마스크 : 255.255.255.0
- 기본 게이트웨이 : 10.0.1.1
- 1차 DNS : 127.0.0.1
이후 정상적으로 부팅이 완료되면 root로 접속해서 호스트명을 변경해줍니다.
데스크탑 좌측 상단의 '프로그램' > '시스템 설정' > '네트워크'를 클릭합니다.
DNS 탭으로 이동해서 호스트명을 “rac2”로 수정하고 기본 DNS에 “127.0.0.1”을 입력합니다.
파일' > '저장'을 눌러 변경된 내용을 저장합니다.
재시작에 관한 안내창이 나오면 <확인>을 클릭합니다.
변경 작업이 완료되었으면 네트워크 설정 창을 닫습니다.
### Public 10.0.1.101 rac1.localdomain rac1 10.0.1.102 rac2.localdomain rac2 ### Private 10.0.5.101 rac1-priv.localdomain rac1-priv 10.0.5.102 rac2-priv.localdomain rac2-priv ### Virtual 10.0.1.111 rac1-vip.localdomain rac1-vip 10.0.1.112 rac2-vip.localdomain rac2-vip
호스트 파일이 1번 노드와 동일한지 확인합니다.
export ORACLE_SID=racdb2
oracle 유저의 ORACLE_SID 파라미터 값을 2번 노드에 맞게 수정합니다.
reboot
변경된 내용을 적용하기 위해 재부팅합니다.
또한 1번 노드도 기동합니다.
3. 패스워드 없는 SSH 접속 설정
mkdir ~/.ssh
1번 노드
[oracle@rac1 ~]$ mkdir ~/.ssh
2번 노드
[oracle@rac2 ~]$ mkdir ~/.ssh
1번과 2번 노드 같의 패스워드 없는 ssh 접속 설정을 oracle 계정에서 수행합니다.
/usr/bin/ssh-keygen -t rsa /usr/bin/ssh-keygen -t dsa cd ~/.ssh/ cat id_rsa.pub >> authorized_keys cat id_dsa.pub >> authorized_keys scp authorized_keys rac2:/home/oracle/.ssh/
[oracle@rac1 ~]$ /usr/bin/ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/oracle/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/oracle/.ssh/id_rsa. Your public key has been saved in /home/oracle/.ssh/id_rsa.pub. The key fingerprint is: bb:c6:a1:fb:30:d5:58:13:27:6f:c1:48:1e:4b:51:48 oracle@rac1 [oracle@rac1 ~]$ /usr/bin/ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/oracle/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/oracle/.ssh/id_dsa. Your public key has been saved in /home/oracle/.ssh/id_dsa.pub. The key fingerprint is: 60:10:9c:ee:e7:99:e6:54:78:2d:fa:6d:bd:86:9c:2b oracle@rac1 [oracle@rac1 ~]$ cd ~/.ssh/ [oracle@rac1 .ssh]$ cat id_rsa.pub >> authorized_keys [oracle@rac1 .ssh]$ cat id_dsa.pub >> authorized_keys [oracle@rac1 .ssh]$ scp authorized_keys rac2:/home/oracle/.ssh/ The authenticity of host 'rac2 (10.0.1.102)' can't be established. RSA key fingerprint is 97:39:97:13:c9:8b:a8:49:7c:9a:5d:d6:1c:65:67:8d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac2,10.0.1.102' (RSA) to the list of known hosts. oracle@rac2's password: authorized_keys 100% 822 0.8KB/s 00:00
먼저 1번 노드에서 접속 인증을 위한 키 파일을 생성하고, 2번 노드로 복제합니다.
키 생성시에는 암호없는 접속을 설정해야 하므로, 아무런 값을 입력하지 않고 "엔터"키만 입력하면 됩니다.
/usr/bin/ssh-keygen -t rsa /usr/bin/ssh-keygen -t dsa cd ~/.ssh/ cat id_rsa.pub >> authorized_keys cat id_dsa.pub >> authorized_keys scp authorized_keys rac1:/home/oracle/.ssh/
[oracle@rac2 ~]$ /usr/bin/ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/oracle/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/oracle/.ssh/id_rsa. Your public key has been saved in /home/oracle/.ssh/id_rsa.pub. The key fingerprint is: 2f:0b:fc:51:cd:f4:b6:cc:c9:c3:78:e2:31:04:ce:55 oracle@rac2 [oracle@rac2 ~]$ /usr/bin/ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/oracle/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/oracle/.ssh/id_dsa. Your public key has been saved in /home/oracle/.ssh/id_dsa.pub. The key fingerprint is: 7d:a7:85:4c:cb:0f:07:d3:d7:ca:0f:e1:0b:a6:3a:f9 oracle@rac2 [oracle@rac2 ~]$ cd .ssh [oracle@rac2 .ssh]$ cat id_rsa.pub >> authorized_keys [oracle@rac2 .ssh]$ cat id_dsa.pub >> authorized_keys [oracle@rac2 .ssh]$ scp authorized_keys rac1:/home/oracle/.ssh/ The authenticity of host 'rac1 (10.0.1.101)' can't be established. RSA key fingerprint is 97:39:97:13:c9:8b:a8:49:7c:9a:5d:d6:1c:65:67:8d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac1,10.0.1.101' (RSA) to the list of known hosts. oracle@rac1's password: authorized_keys 100% 1644 1.6KB/s 00:00
2번 노드의 인증 키 정보를 1번 노드에서 보내온 파일에 추가하고 다시 1번 노드로 전송합니다.
2번 노드의 키 생성시에도 1번과 마찬가지로 키 값 없이 "엔터"만 입력합니다.
ssh rac1 date ssh rac2 date ssh rac1-priv date ssh rac2-priv date
1번 노드
[oracle@rac1 ~]$ ssh rac1 date The authenticity of host 'rac1 (10.0.1.101)' can't be established. RSA key fingerprint is 97:39:97:13:c9:8b:a8:49:7c:9a:5d:d6:1c:65:67:8d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac1,10.0.1.101' (RSA) to the list of known hosts. 2017. 07. 11. (화) 09:31:45 KST [oracle@rac1 ~]$ ssh rac2 date 2017. 07. 11. (화) 09:31:48 KST [oracle@rac1 ~]$ ssh rac1-priv date The authenticity of host 'rac1-priv (10.0.5.101)' can't be established. RSA key fingerprint is 97:39:97:13:c9:8b:a8:49:7c:9a:5d:d6:1c:65:67:8d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac1-priv,10.0.5.101' (RSA) to the list of known hosts. 2017. 07. 11. (화) 09:32:09 KST [oracle@rac1 ~]$ ssh rac2-priv date The authenticity of host 'rac2-priv (10.0.5.102)' can't be established. RSA key fingerprint is 97:39:97:13:c9:8b:a8:49:7c:9a:5d:d6:1c:65:67:8d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac2-priv,10.0.5.102' (RSA) to the list of known hosts. 2017. 07. 11. (화) 09:32:15 KST
2번 노드
[oracle@rac2 ~]$ ssh rac1 date 2017. 07. 11. (화) 09:32:41 KST [oracle@rac2 ~]$ ssh rac2 date The authenticity of host 'rac2 (10.0.1.102)' can't be established. RSA key fingerprint is 97:39:97:13:c9:8b:a8:49:7c:9a:5d:d6:1c:65:67:8d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac2,10.0.1.102' (RSA) to the list of known hosts. 2017. 07. 11. (화) 09:32:44 KST [oracle@rac2 ~]$ ssh rac1-priv date The authenticity of host 'rac1-priv (10.0.5.101)' can't be established. RSA key fingerprint is 97:39:97:13:c9:8b:a8:49:7c:9a:5d:d6:1c:65:67:8d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac1-priv,10.0.5.101' (RSA) to the list of known hosts. 2017. 07. 11. (화) 09:32:52 KST [oracle@rac2 ~]$ ssh rac2-priv date The authenticity of host 'rac2-priv (10.0.5.102)' can't be established. RSA key fingerprint is 97:39:97:13:c9:8b:a8:49:7c:9a:5d:d6:1c:65:67:8d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac2-priv,10.0.5.102' (RSA) to the list of known hosts. 2017. 07. 11. (화) 09:32:58 KST
양쪽에 저장된 인증 키를 기반으로 정상적으로 암호 없이 정보를 가져올 수 있는지 테스트합니다.
exec /usr/bin/ssh-agent $SHELL /usr/bin/ssh-add
1번 노드
[oracle@rac1 ~]$ exec /usr/bin/ssh-agent $SHELL [oracle@rac1 ~]$ /usr/bin/ssh-add Identity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa) Identity added: /home/oracle/.ssh/id_dsa (/home/oracle/.ssh/id_dsa)
2번 노드
[oracle@rac2 ~]$ exec /usr/bin/ssh-agent $SHELL [oracle@rac2 ~]$ /usr/bin/ssh-add Identity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa) Identity added: /home/oracle/.ssh/id_dsa (/home/oracle/.ssh/id_dsa)
ssh 서비스가 각 노드에서 생성된 인증 키를 사용할 수 있도록, 키 정보를 추가합니다.
4. 클러스터 사전 검증
cd <클러스터웨어 파일 압축 해제 경로>/clusterware/cluvfy ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
[oracle@racdb1 ~]cd /media/sf_oracle/clusterware/cluvfy [oracle@rac1 cluvfy]$ ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose 클러스터 서비스 설정에 대한 사전 확인 수행 노드 연결 가능성을 검사하는 중... 검사: "rac1" 노드에서의 노드 연결 가능성 대상 노드 연결 가능? ------------------------------------ ------------------------ rac2 예 rac1 예 결과: "rac1" 노드에서 노드 연결 가능성 검사를 성공했습니다. 사용자 equivalence를 검사하는 중... 검사: 사용자 "oracle"에 대한 사용자 equivalence 노드 이름 설명 ------------------------------------ ------------------------ rac2 성공 rac1 성공 결과: 사용자 "oracle"에 대한 사용자 equivalence 검사를 성공했습니다. 관리 권한을 검사하는 중... 검사: 사용자 "oracle" 존재 여부 노드 이름 사용자가 존재함 설명 ------------ ------------------------ ------------------------ rac2 예 성공 rac1 예 성공 결과: "oracle"에 대한 사용자 존재 여부 검사를 성공했습니다. 검사: "oinstall" 그룹 존재 여부 노드 이름 상태 그룹 ID ------------ ------------------------ ------------------------ rac2 존재함 501 rac1 존재함 501 결과: "oinstall"에 대한 그룹 존재 여부 검사를 성공했습니다. 검사: "oinstall" 그룹[기본]의 사용자 "oracle"에 대한 멤버쉽 노드 이름 사용자가 존재함 그룹이 존재함 그룹의 사용자 기본 설명 ---------------- ------------ ------------ ------------ ------------ ------------ rac2 예 예 예 예 성공 rac1 예 예 예 예 성공 결과: "oinstall" 그룹[기본]의 사용자 "oracle"에 대한 멤버쉽 검사를 성공했습니다. 관리 권한 검사를 성공했습니다. 노드 연결을 검사하는 중... "rac2" 노드에 대한 인터페이스 정보 인터페이스 이름 IP 주소 서브넷 ------------------------------ ------------------------------ ---------------- eth0 10.0.1.102 10.0.1.0 eth1 10.0.5.102 10.0.5.0 "rac1" 노드에 대한 인터페이스 정보 인터페이스 이름 IP 주소 서브넷 ------------------------------ ------------------------------ ---------------- eth0 10.0.1.101 10.0.1.0 eth1 10.0.5.101 10.0.5.0 검사: "10.0.1.0" 서브넷에 대한 노드 연결 소스 대상 접속됨? ------------------------------ ------------------------------ ---------------- rac2:eth0 rac1:eth0 예 결과: rac2,rac1개의 노드를 사용하는 "10.0.1.0" 서브넷에 대한 노드 연결 검사를 성공했습니다. 검사: "10.0.5.0" 서브넷에 대한 노드 연결 소스 대상 접속됨? ------------------------------ ------------------------------ ---------------- rac2:eth1 rac1:eth1 예 결과: rac2,rac1개의 노드를 사용하는 "10.0.5.0" 서브넷에 대한 노드 연결 검사를 성공했습니다. "10.0.1.0" 서브넷에서 전용 상호 접속에 대해 적합한 인터페이스: rac2 eth0:10.0.1.102 rac1 eth0:10.0.1.101 "10.0.5.0" 서브넷에서 전용 상호 접속에 대해 적합한 인터페이스: rac2 eth1:10.0.5.102 rac1 eth1:10.0.5.101 ERROR: VIP에 대해 적합한 인터페이스 집합을 찾을 수 없습니다. 결과: 노드 연결 검사를 실패했습니다. 시스템 요구 사항을 검사하는 중 'crs'... 검사: 총 메모리 노드 이름 사용 가능 필수 설명 ------------ ------------------------ ------------------------ ---------- rac2 1.98GB (2075896KB) 512MB (524288KB) 성공 rac1 1.98GB (2075896KB) 512MB (524288KB) 성공 결과: 총 메모리 검사를 성공했습니다. 검사: "/tmp" 디렉토리의 사용 가능한 디스크 공간 노드 이름 사용 가능 필수 설명 ------------ ------------------------ ------------------------ ---------- rac2 40.48GB (42444900KB) 400MB (409600KB) 성공 rac1 40.39GB (42354180KB) 400MB (409600KB) 성공 결과: 사용 가능한 디스크 공간 검사를 성공했습니다. 검사: 교체 공간 노드 이름 사용 가능 필수 설명 ------------ ------------------------ ------------------------ ---------- rac2 4GB (4192956KB) 1GB (1048576KB) 성공 rac1 4GB (4192956KB) 1GB (1048576KB) 성공 결과: 교체 공간 검사를 성공했습니다. 검사: 시스템 구조 노드 이름 사용 가능 필수 설명 ------------ ------------------------ ------------------------ ---------- rac2 i686 i686 성공 rac1 i686 i686 성공 결과: 시스템 구조 검사를 성공했습니다. 검사: 커널 버전 노드 이름 사용 가능 필수 설명 ------------ ------------------------ ------------------------ ---------- rac2 2.6.9-89.0.0.0.1.EL 2.4.21-15EL 성공 rac1 2.6.9-89.0.0.0.1.EL 2.4.21-15EL 성공 결과: 커널 버전 검사를 성공했습니다. 검사: "make-3.79"에 대한 패키지 존재 여부 노드 이름 상태 설명 ------------------------------ ------------------------------ ---------------- rac2 make-3.80-7.EL4 성공 rac1 make-3.80-7.EL4 성공 결과: "make-3.79"에 대한 패키지 존재 여부 검사를 성공했습니다. 검사: "binutils-2.14"에 대한 패키지 존재 여부 노드 이름 상태 설명 ------------------------------ ------------------------------ ---------------- rac2 binutils-2.15.92.0.2-25 성공 rac1 binutils-2.15.92.0.2-25 성공 결과: "binutils-2.14"에 대한 패키지 존재 여부 검사를 성공했습니다. 검사: "gcc-3.2"에 대한 패키지 존재 여부 노드 이름 상태 설명 ------------------------------ ------------------------------ ---------------- rac2 gcc-3.4.6-11.0.1 성공 rac1 gcc-3.4.6-11.0.1 성공 결과: "gcc-3.2"에 대한 패키지 존재 여부 검사를 성공했습니다. 검사: "glibc-2.3.2-95.27"에 대한 패키지 존재 여부 노드 이름 상태 설명 ------------------------------ ------------------------------ ---------------- rac2 glibc-2.3.4-2.43 성공 rac1 glibc-2.3.4-2.43 성공 결과: "glibc-2.3.2-95.27"에 대한 패키지 존재 여부 검사를 성공했습니다. 검사: "compat-db-4.0.14-5"에 대한 패키지 존재 여부 노드 이름 상태 설명 ------------------------------ ------------------------------ ---------------- rac2 compat-db-4.1.25-9 성공 rac1 compat-db-4.1.25-9 성공 결과: "compat-db-4.0.14-5"에 대한 패키지 존재 여부 검사를 성공했습니다. 검사: "compat-gcc-7.3-2.96.128"에 대한 패키지 존재 여부 노드 이름 상태 설명 ------------------------------ ------------------------------ ---------------- rac2 누락됨 실패 rac1 누락됨 실패 결과: "compat-gcc-7.3-2.96.128"에 대한 패키지 존재 여부 검사를 실패했습니다. 검사: "compat-gcc-c++-7.3-2.96.128"에 대한 패키지 존재 여부 노드 이름 상태 설명 ------------------------------ ------------------------------ ---------------- rac2 누락됨 실패 rac1 누락됨 실패 결과: "compat-gcc-c++-7.3-2.96.128"에 대한 패키지 존재 여부 검사를 실패했습니다. 검사: "compat-libstdc++-7.3-2.96.128"에 대한 패키지 존재 여부 노드 이름 상태 설명 ------------------------------ ------------------------------ ---------------- rac2 누락됨 실패 rac1 누락됨 실패 결과: "compat-libstdc++-7.3-2.96.128"에 대한 패키지 존재 여부 검사를 실패했습니다. 검사: "compat-libstdc++-devel-7.3-2.96.128"에 대한 패키지 존재 여부 노드 이름 상태 설명 ------------------------------ ------------------------------ ---------------- rac2 누락됨 실패 rac1 누락됨 실패 결과: "compat-libstdc++-devel-7.3-2.96.128"에 대한 패키지 존재 여부 검사를 실패했습니다. 검사: "openmotif-2.2.3"에 대한 패키지 존재 여부 노드 이름 상태 설명 ------------------------------ ------------------------------ ---------------- rac2 openmotif-2.2.3-10.5.el4 성공 rac1 openmotif-2.2.3-10.5.el4 성공 결과: "openmotif-2.2.3"에 대한 패키지 존재 여부 검사를 성공했습니다. 검사: "setarch-1.3-1"에 대한 패키지 존재 여부 노드 이름 상태 설명 ------------------------------ ------------------------------ ---------------- rac2 setarch-1.6-1 성공 rac1 setarch-1.6-1 성공 결과: "setarch-1.3-1"에 대한 패키지 존재 여부 검사를 성공했습니다. 검사: "dba"에 대한 그룹 존재 여부 노드 이름 상태 설명 ------------ ------------------------ ------------------------ rac2 존재함 성공 rac1 존재함 성공 결과: "dba"에 대한 그룹 존재 여부 검사를 성공했습니다. 검사: "oinstall"에 대한 그룹 존재 여부 노드 이름 상태 설명 ------------ ------------------------ ------------------------ rac2 존재함 성공 rac1 존재함 성공 결과: "oinstall"에 대한 그룹 존재 여부 검사를 성공했습니다. 검사: "nobody"에 대한 사용자 존재 여부 노드 이름 상태 설명 ------------ ------------------------ ------------------------ rac2 존재함 성공 rac1 존재함 성공 결과: "nobody"에 대한 사용자 존재 여부 검사를 성공했습니다. 시스템 요구 사항 검사를 실패했습니다. 'crs' 모든 노드에서 클러스터 서비스 설정에 대한 사전 확인을 실패했습니다.
오라클 클러스터를 설치하기에 앞서 사전 환경 구성이 완료되어 있는지를 먼저 검증합니다.
{}
VII. Clusterware 설치
cd clusterware ./runInstaller
먼저 10.2.0.1 버전의 클러스터웨어를 설치합니다.
압축이 해제된 경로에서 설치 스크립트를 실행합니다.
<Oracle Universal Installer 정보>를 클릭하면 설치 프로그램 OUI의 정보를 확인할 수 있습니다.
<설치된 제품>을 클릭하면 현재 서버에 설치된 제품 정보 확인이 가능합니다.
시작 화면에서 <다음>을 클릭하여 설치를 진행합니다.
인벤토리 디렉토리와 운영 체제 그룹 정보가 제대로 입력이 되어있는지 확인하고 <다음>을 클릭합니다.
<제품 언어>를 클릭하면 제품을 실행할 언어를 추가 또는 제거할 수 있습니다.
클러스터웨어를 설치할 경로에 "/u01/app/oracle/product/10.2.0/crs"를 입력합니다.
기본적으로 데이터베이스가 설치될 경로가 지정되어 있으므로 반드시 클러스터웨어를 설치할 경로로 수정해야 합니다.
홈 경로 이름 또한 "OraCrs10g_home"으로 되어 있는지 확인하고 <다음>을 클릭합니다.
앞에서 진행된 사전 준비에 이상이 없다면 필요 조건 검사를 모두 성공하게 됩니다.
만약 실패한 부분이 있다면 반드시 설치 전에 수정하고 진행하는 것을 권고합니다.
특이사항이 없을 경우에는 <다음>을 클릭합니다.
클러스터 구성을 지정하는 부분입니다.
기본적으로 클러스터웨어 설치를 진행하는 노드의 정보가 입력되어 있으며, 다른 노드의 정보를 추가해야 합니다.
<추가>를 클릭합니다.
새 노드 추가 창에 추가될 노드의 정보를 입력합니다.
- 공용 노드 이름 : rac2
- 전용 노드 이름 : rac2-priv
- 가상 호스트 이름 : rac2-vip
뒤에 .localdomain을 생략해도 구성에 지장이 없습니다.
모두 입력하고 <확인>을 클릭합니다.
입력할 노드가 꼭 2개여야 할 필요는 없으며, 최초에 구성할 노드 갯수만큼을 모두 이곳에 입력하면 됩니다.
모든 노드의 정보를 입력하고 <다음>을 클릭합니다.
네트워크 인터페이스 용도를 지정하는 단계입니다.
기본적으로 모든 인터페이스가 '전용'으로 선택되어 있으므로 수정이 필요합니다.
공용망으로 사용할 'eth0' 인터페이스를 선택하고 <편집>을 클릭합니다.
인터페이스 유형을 '공용'으로 선택하고 <확인>을 클릭합니다.
네트워크 인터페이스 용도 지정이 완료되었으면 <다음>을 클릭합니다.
OCR 위치를 입력하는 단계입니다.
OCR 구성은 '보통의 중복성'을 선택하고, 위치 정보에 사용할 raw device 경로를 입력합니다.
- OCR 위치 지정 : /dev/raw/raw1
- OCR 이중화 위치 지정 : /dev/raw/raw2
입력이 완료되었으면 <다음>을 클릭합니다.
Voting 디스크를 구성하는 단계입니다.
선택 디스크 구성에 '보통의 중복성'을 선택하고, 위치 정보에 사용할 raw device 경로를 입력합니다.
- 선택 디스크 위치 : /dev/raw/raw3
- 추가 선택 디스크 1 위치 : /dev/raw/raw4
- 추가 선택 디스크 2 위치 : /dev/raw/raw5
모두 입력하였으면 <다음>을 클릭합니다.
설치에 대한 요약 정보를 확인할 수 있습니다.
특이사항이 없으면 <설치>를 클릭합니다.
단계별로 설치가 진행됩니다.
먼저 로컬 노드에 소프트웨어를 설치합니다.
로컬 노드에 설치가 완료되었으면, 원격 노드에 설치가 진행됩니다.
소프트웨어 설치가 완료되면, 루트 스크립트 실행 안내 메시지가 나옵니다.
반드시 스크립트 순서대로 모든 노드에 한번씩 실행해야 하며, 절대로 동시에 실행하지 말고 다른 노드의 실행이 완료된 후에 진행해야 합니다.
/u01/app/oracle/oraInventory/orainstRoot.sh
[root@rac1 ~]# /u01/app/oracle/oraInventory/orainstRoot.sh 다음 권한 변경 중/u01/app/oracle/oraInventory 대상 770. 그룹 이름 변경 중 /u01/app/oracle/oraInventory 대상 oinstall. 스크립트 실행이 완료되었습니다.
[root@rac2 ~]# /u01/app/oracle/oraInventory/orainstRoot.sh 다음 권한 변경 중/u01/app/oracle/oraInventory 대상 770. 그룹 이름 변경 중 /u01/app/oracle/oraInventory 대상 oinstall. 스크립트 실행이 완료되었습니다.
먼저 첫번째 스크립트를 1번과 2번 노드에서 실행합니다.
실행 시간이 오래걸리지 않는 스크립트입니다.
/u01/app/oracle/product/10.2.0/crs/root.sh
[root@rac1 ~]# /u01/app/oracle/product/10.2.0/crs/root.sh WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root WARNING: directory '/u01/app/oracle/product' is not owned by root WARNING: directory '/u01/app/oracle' is not owned by root WARNING: directory '/u01/app' is not owned by root WARNING: directory '/u01' is not owned by root Checking to see if Oracle CRS stack is already configured /etc/oracle does not exist. Creating it now. Setting the permissions on OCR backup directory Setting up NS directories Oracle Cluster Registry configuration upgraded successfully WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root WARNING: directory '/u01/app/oracle/product' is not owned by root WARNING: directory '/u01/app/oracle' is not owned by root WARNING: directory '/u01/app' is not owned by root WARNING: directory '/u01' is not owned by root assigning default hostname rac1 for node 1. assigning default hostname rac2 for node 2. Successfully accumulated necessary OCR keys. Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897. node <nodenumber>: <nodename> <private interconnect name> <hostname> node 1: rac1 rac1-priv rac1 node 2: rac2 rac2-priv rac2 Creating OCR keys for user 'root', privgrp 'root'.. Operation successful. Now formatting voting device: /dev/raw/raw3 Now formatting voting device: /dev/raw/raw4 Now formatting voting device: /dev/raw/raw5 Format of 3 voting devices complete. Startup will be queued to init within 90 seconds. Adding daemons to inittab Expecting the CRS daemons to be up within 600 seconds. CSS is active on these nodes. rac1 CSS is inactive on these nodes. rac2 Local node checking complete. Run root.sh on remaining nodes to start CRS daemons.
[root@rac2 ~]# /u01/app/oracle/product/10.2.0/crs/root.sh WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root WARNING: directory '/u01/app/oracle/product' is not owned by root WARNING: directory '/u01/app/oracle' is not owned by root WARNING: directory '/u01/app' is not owned by root WARNING: directory '/u01' is not owned by root Checking to see if Oracle CRS stack is already configured /etc/oracle does not exist. Creating it now. Setting the permissions on OCR backup directory Setting up NS directories Oracle Cluster Registry configuration upgraded successfully WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root WARNING: directory '/u01/app/oracle/product' is not owned by root WARNING: directory '/u01/app/oracle' is not owned by root WARNING: directory '/u01/app' is not owned by root WARNING: directory '/u01' is not owned by root clscfg: EXISTING configuration version 3 detected. clscfg: version 3 is 10G Release 2. assigning default hostname rac1 for node 1. assigning default hostname rac2 for node 2. Successfully accumulated necessary OCR keys. Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897. node <nodenumber>: <nodename> <private interconnect name> <hostname> node 1: rac1 rac1-priv rac1 node 2: rac2 rac2-priv rac2 clscfg: Arguments check out successfully. NO KEYS WERE WRITTEN. Supply -force parameter to override. -force is destructive and will destroy any previous cluster configuration. Oracle Cluster Registry for cluster has already been initialized Startup will be queued to init within 90 seconds. Adding daemons to inittab Expecting the CRS daemons to be up within 600 seconds. CSS is active on these nodes. rac1 rac2 CSS is active on all nodes. Waiting for the Oracle CRSD and EVMD to start Oracle CRS stack installed and running under init(1M) Running vipca(silent) for configuring nodeapps 제공된 인터페이스 "eth0"이(가) 공용이 아닙니다. 가상 IP를 구성하려면 공용 인터페이스를 사용해야 합니다.
두번째 스크립트를 실행합니다.
1번 노드의 스크립트가 완료된 후에 2번에서 실행하기 바랍니다.
스크립트를 완료하였으면 바로 OUI의 <확인> 버튼을 누르지 말고 VIP를 구성하도록 합니다.
vipca
VIP를 설정하기 위해 GUI 터미널 모드에서 root 유저로 접속한 후 vipca를 실행합니다.
(꼭, 1번 노드의 X Window 환경에서 root 유저로 수행하기 바랍니다.)
시작 화면에서 <다음>을 클릭합니다.
VIP를 구성할 노드를 <모두 선택>하고 <다음>을 클릭합니다.
IP 별칭 이름에 VIP 명칭으로 사용될 지정된 이름인 "rac1-vip"와 "rac2-vip"를 노드에 맞게 입력하면 자동으로 IP 주소를 인식합니다.
입력이 정상적으로 되었으면 <다음>을 클릭합니다.
요약 화면에서 구성 정보가 맞는지 확인합니다.
이상이 없으면 <완료>를 클릭합니다.
모든 구성이 완료되면 <확인>을 클릭합니다.
마지막으로 VIP 구성 결과에 대한 정보를 확인합니다.
정상적으로 구성이 되었으면 <종료>를 클릭합니다.
이제 다시 클러스터웨어 설치화면으로 돌아와서 모든 루트 스크립트를 수행했음을 알리기 위해 <확인>을 클릭합니다.
나머지 설정이 진행되고, 모두 성공이 되었으면 <다음>을 클릭합니다.
<설치된 제품>을 클릭하면 새로 설치된 클러스터웨어의 정보를 확인할 수 있습니다.
클러스터웨어 설치가 완료되었으므로 <종료>를 클릭하면 됩니다.
종료 확인 창이 뜨면 <예>를 클릭합니다.
crs_stat -t
[oracle@racdb1 ~]$ crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora.rac1.gsd application ONLINE ONLINE rac1 ora.rac1.ons application ONLINE ONLINE rac1 ora.rac1.vip application ONLINE ONLINE rac1 ora.rac2.gsd application ONLINE ONLINE rac2 ora.rac2.ons application ONLINE ONLINE rac2 ora.rac2.vip application ONLINE ONLINE rac2
클러스터 관련 서비스가 기동된 것을 확인할 수 있습니다.
{}
VIII. Clusterware 패치
cd Disk1 ./runInstaller
10.2.0.5 패치 파일을 다운 받아 압축을 해제한 경로로 이동하여 설치 파일을 실행합니다.
이 파일로 클러스터웨어와 데이터베이스를 패치하게 됩니다.
<Oracle Universal Installer 정보>를 클릭하면 설치 파일의 정보를 확인할 수 있습니다.
<설치된 제품>을 클릭하면 서버에 설치된 제품의 버전 정보를 확인할 수 있습니다.
시작 화면에서 <다음>을 클릭하여 설치를 진행합니다.
설치할 경로를 클러스터웨어가 설치된 경로로 변경합니다.
이름의 'OraCrs10g_home'을 클릭하면 기존에 설치된 정보를 기반으로 경로를 자동으로 설정합니다.
기본적으로 데이터베이스가 설치될 경로가 지정되어 있으므로 반드시 클러스터웨어를 설치할 경로로 수정해야 합니다.
<다음>을 클릭합니다.
모든 노드가 선택되었는지 확인하고 <다음>을 클릭합니다.
필요 조건 검사를 모두 통과하면 <다음>을 클릭합니다.
기존 클러스터웨어 설치 시에 환경 설정이 제대로 되어 있다면 모두 성공할 것입니다.
패치 정보를 확인할 수 있습니다.
<설치>를 클릭합니다.
로컬 노드와 원격 노드에 클러스터 패치가 설치됩니다.
소프트웨어 설치가 완료되었으면 루트 스크립트 실행 안내 메시지가 나옵니다.
반드시 한 노드씩 2개의 스크립트를 순차적으로 수행하도록 합니다.
/u01/app/oracle/product/10.2.0/crs/bin/crsctl stop crs /u01/app/oracle/product/10.2.0/crs/install/root102.sh
먼저 1번 노드에서 스크립트를 순차적으로 수행합니다.
[root@rac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl stop crs Stopping resources. Successfully stopped CRS resources Stopping CSSD. Shutting down CSS daemon. Shutdown request successfully issued. [root@rac2 ~]# crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora.rac1.gsd application ONLINE OFFLINE ora.rac1.ons application ONLINE OFFLINE ora.rac1.vip 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 [root@rac1 ~]# /u01/app/oracle/product/10.2.0/crs/install/root102.sh Creating pre-patch directory for saving pre-patch clusterware files Completed patching clusterware files to /u01/app/oracle/product/10.2.0/crs Relinking some shared libraries. Relinking of patched files is complete. WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root WARNING: directory '/u01/app/oracle/product' is not owned by root WARNING: directory '/u01/app/oracle' is not owned by root WARNING: directory '/u01/app' is not owned by root WARNING: directory '/u01' is not owned by root Preparing to recopy patched init and RC scripts. Recopying init and RC scripts. Startup will be queued to init within 30 seconds. Starting up the CRS daemons. Waiting for the patched CRS daemons to start. This may take a while on some systems. . 10205 patch successfully applied. clscfg: EXISTING configuration version 3 detected. clscfg: version 3 is 10G Release 2. Successfully deleted 1 values from OCR. Successfully deleted 1 keys from OCR. Successfully accumulated necessary OCR keys. Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897. node <nodenumber>: <nodename> <private interconnect name> <hostname> node 1: rac1 rac1-priv rac1 Creating OCR keys for user 'root', privgrp 'root'.. Operation successful. clscfg -upgrade completed successfully Creating '/u01/app/oracle/product/10.2.0/crs/install/paramfile.crs' with data used for CRS configuration Setting CRS configuration values in /u01/app/oracle/product/10.2.0/crs/install/paramfile.crs [root@rac1 ~]# crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora.rac1.gsd application ONLINE ONLINE rac1 ora.rac1.ons application ONLINE ONLINE rac1 ora.rac1.vip application ONLINE ONLINE rac1 ora.rac2.gsd application ONLINE ONLINE rac2 ora.rac2.ons application ONLINE ONLINE rac2 ora.rac2.vip application ONLINE ONLINE rac2
2번 노드에서도 스크립트를 수행합니다.
[root@rac2 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl stop crs Stopping resources. Successfully stopped CRS resources Stopping CSSD. Shutting down CSS daemon. Shutdown request successfully issued. [root@rac1 ~]# crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora.rac1.gsd application ONLINE ONLINE rac1 ora.rac1.ons application ONLINE ONLINE rac1 ora.rac1.vip application ONLINE ONLINE rac1 ora.rac2.gsd application ONLINE OFFLINE ora.rac2.ons application ONLINE OFFLINE ora.rac2.vip application ONLINE OFFLINE [root@rac2 ~]# /u01/app/oracle/product/10.2.0/crs/install/root102.sh Creating pre-patch directory for saving pre-patch clusterware files Completed patching clusterware files to /u01/app/oracle/product/10.2.0/crs Relinking some shared libraries. Relinking of patched files is complete. WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root WARNING: directory '/u01/app/oracle/product' is not owned by root WARNING: directory '/u01/app/oracle' is not owned by root WARNING: directory '/u01/app' is not owned by root WARNING: directory '/u01' is not owned by root Preparing to recopy patched init and RC scripts. Recopying init and RC scripts. Startup will be queued to init within 30 seconds. Starting up the CRS daemons. Waiting for the patched CRS daemons to start. This may take a while on some systems. . 10205 patch successfully applied. clscfg: EXISTING configuration version 3 detected. clscfg: version 3 is 10G Release 2. Successfully deleted 1 values from OCR. Successfully deleted 1 keys from OCR. Successfully accumulated necessary OCR keys. Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897. node <nodenumber>: <nodename> <private interconnect name> <hostname> node 2: rac2 rac2-priv rac2 Creating OCR keys for user 'root', privgrp 'root'.. Operation successful. clscfg -upgrade completed successfully Creating '/u01/app/oracle/product/10.2.0/crs/install/paramfile.crs' with data used for CRS configuration Setting CRS configuration values in /u01/app/oracle/product/10.2.0/crs/install/paramfile.crs [root@rac2 ~]# crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora.rac1.gsd application ONLINE ONLINE rac1 ora.rac1.ons application ONLINE ONLINE rac1 ora.rac1.vip application ONLINE ONLINE rac1 ora.rac2.gsd application ONLINE ONLINE rac2 ora.rac2.ons application ONLINE ONLINE rac2 ora.rac2.vip application ONLINE ONLINE rac2
CRS 데몬을 정지하는 스크립트와 패치를 적용하는 스크립트를 한 노드씩 순차적으로 수행합니다.
<설치된 제품>을 클릭하여 패치가 설치된 것을 확인할 수 있습니다.
모든 설치가 완료되었으면 <종료>를 클릭합니다.
종료 확인 창이 뜨면 <예>를 클릭합니다.
{}
IX. DBMS 설치
cd database ./runInstaller
10.2.0.1 버전의 데이터베이스 소프트웨어를 먼저 설치합니다.
압축이 해제된 경로에서 설치 스크립트를 실행합니다.
<Oracle Universal Installer 정보>를 클릭하면 설치 프로그램 OUI의 정보를 확인할 수 있습니다.
<설치된 제품>을 클릭하면 현재 서버에 설치된 제품 정보 확인이 가능합니다.
시작 화면에서 <다음>을 클릭하여 설치를 진행합니다.
<제품 언어>를 클릭하면 제품을 실행할 언어를 추가 또는 제거할 수 있습니다.
설치 유형으로 'Enterprise Edition'을 선택하고 <다음>을 클릭합니다.
데이터베이스를 설치할 경로를 확인하고 <다음>을 클릭합니다.
반드시 클러스터웨어를 설치할 경로와 다른 곳에 설치해야 하며, 환경 변수에서 ORACLE_HOME으로 지정된 경로에 설치하면 됩니다.
'클러스터 설치'를 선택하고 <모두 선택>을 클릭한 후, <다음>을 클릭합니다.
사전에 진행된 환경 설정에 이상이 없다면 필요 조건 검사를 모두 성공하게 됩니다.
만약 실패한 부분이 있다면 반드시 설치 전에 수정하고 진행하는 것을 권고합니다.
특이사항이 없을 경우에는 <다음>을 클릭합니다.
'데이터베이스 소프트웨어만 설치'를 선택하고 <다음>을 클릭합니다.
설치에 대한 요약 정보를 확인할 수 있습니다.
특이사항이 없으면 <설치>를 클릭합니다.
단계별로 설치가 진행됩니다.
로컬 노드와 원격 노드에 데이터베이스를 설치합니다
소프트웨어 설치가 완료되면, 루트 스크립트 실행 안내 메시지가 나옵니다.
/u01/app/oracle/product/10.2.0/db_1/root.sh
[root@rac1 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh Running Oracle10 root.sh script... The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/oracle/product/10.2.0/db_1 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.sh script. Now product-specific root actions will be performed.
[root@rac2 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh Running Oracle10 root.sh script... The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/oracle/product/10.2.0/db_1 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.sh script. Now product-specific root actions will be performed.
모든 노드에서 한 번씩 수행하면 됩니다.
<설치된 제품>을 클릭하면 새로 설치된 데이터베이스의 정보를 확인할 수 있습니다
데이터베이스 설치가 완료되었으므로 <종료>를 클릭합니다.
종료 확인 창이 뜨면 <예>를 클릭합니다.
{}
X. DBMS 패치
1. Patch Set 설치
cd Disk1 ./runInstaller
10.2.0.5 패치 파일을 다운 받아 압축을 해제한 경로로 이동하여 설치 파일을 실행합니다.
<Oracle Universal Installer 정보>를 클릭하면 설치 파일의 정보를 확인할 수 있습니다.
<설치된 제품>을 클릭하면 서버에 설치된 제품의 버전 정보를 확인할 수 있습니다.
시작 화면에서 <다음>을 클릭하여 설치를 진행합니다.
설치할 경로가 데이터베이스가 설치된 경로로 되어 있는지 확인합니다.
이름에 'OraDb10g_home1'을 클릭하면 기존에 설치된 정보를 기반으로 경로를 자동으로 설정합니다.
<다음>을 클릭합니다.
'My Oracle Support를 통해 보안 업데이트를 수신합니다'를 해제하고 <다음>을 클릭합니다.
메일 주소 제공과 관련된 메시지가 나오면 <예>를 클릭합니다.
모든 노드가 선택되었는지 확인하고 <다음>을 클릭합니다.
필요 조건 검사를 모두 통과하면 <다음>을 클릭합니다.
기존 데이터베이스 설치 시에 환경 설정이 제대로 되어 있다면 모두 성공할 것입니다.
패치 정보를 확인할 수 있습니다.
<설치>를 클릭합니다.
로컬 노드와 원격 노드에 클러스터 패치가 설치됩니다.
소프트웨어 설치가 완료되었으면 루트 스크립트 실행 안내 메시지가 나옵니다.
/u01/app/oracle/product/10.2.0/db_1/root.sh
[root@rac1 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh Running Oracle 10g root.sh script... The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/oracle/product/10.2.0/db_1 Enter the full pathname of the local bin directory: [/usr/local/bin]: The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y Copying dbhome to /usr/local/bin ... The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y Copying oraenv to /usr/local/bin ... The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y Copying coraenv to /usr/local/bin ... 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.sh script. Now product-specific root actions will be performed.
[root@rac2 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh Running Oracle 10g root.sh script... The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/oracle/product/10.2.0/db_1 Enter the full pathname of the local bin directory: [/usr/local/bin]: The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y Copying dbhome to /usr/local/bin ... The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y Copying oraenv to /usr/local/bin ... The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: y Copying coraenv to /usr/local/bin ... 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.sh script. Now product-specific root actions will be performed.
모든 노드에서 루트 스크립트를 수행합니다.
설치가 성공적으로 완료되었으므로 <종료>를 클릭합니다.
<설치된 제품>을 클릭하여 패치가 설치된 것을 확인할 수 있습니다.
종료 확인 창이 뜨면 <예>를 클릭합니다.
2. Patch Set Update 적용
cd $ORACLE_HOME OPatch/opatch version mv OPatch OPatch_old cp -r <OPatch 압축 해제 경로>/OPatch . OPatch/opatch version
[oracle@racdb1 ~]$ cd $ORACLE_HOME [oracle@racdb1 db_1]$ OPatch/opatch version Invoking OPatch 10.2.0.4.9 OPatch Version: 10.2.0.4.9 OPatch succeeded. [oracle@racdb1 db_1]$ mv OPatch OPatch_old [oracle@racdb1 db_1]$ cp -r /media/sf_oracle/OPatch . [oracle@racdb1 db_1]$ OPatch/opatch version Invoking OPatch 10.2.0.5.1 OPatch Version: 10.2.0.5.1 OPatch succeeded.
패치를 위해 Opatch 파일을 최신 버전으로 교체합니다.
export PATH=$PATH:$ORACLE_HOME/OPatch:/usr/ccs/bin opatch lsinventory
[oracle@racdb1 ~]$ export PATH=$PATH:$ORACLE_HOME/OPatch:/usr/ccs/bin [oracle@racdb1 ~]$ opatch lsinventory Invoking OPatch 10.2.0.5.1 Oracle Interim 패치 설치 프로그램 버전 10.2.0.5.1 Copyright (c) 2010, Oracle Corporation. All rights reserved. Oracle 홈: /u01/app/oracle/product/10.2.0/db_1 중앙 인벤토리: /u01/app/oracle/oraInventory 출처: /etc/oraInst.loc OPatch 버전: 10.2.0.5.1 OUI 버전: 10.2.0.5.0 OUI 위치 : /u01/app/oracle/product/10.2.0/db_1/oui 로그 파일 위치: /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch2017-08-22_16-19-49오후.log Patch history file: /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch_history.txt Lsinventory Output file location : /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2017-08-22_16-19-49오후.txt -------------------------------------------------------------------------------- 설치된 최상위 레벨 제품(2): Oracle Database 10g 10.2.0.1.0 Oracle Database 10g Release 2 Patch Set 4 10.2.0.5.0 이 Oracle 홈에 2개의 제품이 설치되어 있습니다. 이 Oracle 홈에 설치된 Interim 패치가 없습니다. 여러 노드를 구성하는 RAC 시스템 Local node = rac1 Remote node = rac2 -------------------------------------------------------------------------------- OPatch succeeded.
Opatch 파일 경로를 환경 변수에 추가하고, 기존의 패치 내역을 확인합니다.
cd <패치 압축 해제 경로> opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir ./16619894
[oracle@racdb1 ~]$ cd /media/sf_oracle [oracle@racdb1 sf_oracle]$ opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir ./16619894 Invoking OPatch 10.2.0.5.1 Oracle Interim 패치 설치 프로그램 버전 10.2.0.5.1 Copyright (c) 2010, Oracle Corporation. All rights reserved. PREREQ session Oracle 홈: /u01/app/oracle/product/10.2.0/db_1 중앙 인벤토리: /u01/app/oracle/oraInventory 출처: /etc/oraInst.loc OPatch 버전: 10.2.0.5.1 OUI 버전: 10.2.0.5.0 OUI 위치 : /u01/app/oracle/product/10.2.0/db_1/oui 로그 파일 위치: /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch2017-08-22_16-20-44오후.log Patch history file: /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch_history.txt Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded.
패치 파일을 적용하는데 문제가 없는지 검토합니다.
cd <패치 압축 해제 경로>/16619894 opatch apply
[oracle@racdb1 ~]$ cd /media/sf_oracle/16619894 [oracle@racdb1 16619894]$ opatch apply Invoking OPatch 10.2.0.5.1 Oracle Interim 패치 설치 프로그램 버전 10.2.0.5.1 Copyright (c) 2010, Oracle Corporation. All rights reserved. Oracle 홈: /u01/app/oracle/product/10.2.0/db_1 중앙 인벤토리: /u01/app/oracle/oraInventory 출처: /etc/oraInst.loc OPatch 버전: 10.2.0.5.1 OUI 버전: 10.2.0.5.0 OUI 위치 : /u01/app/oracle/product/10.2.0/db_1/oui 로그 파일 위치: /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch2017-08-22_16-21-32오후.log Patch history file: /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch_history.txt ApplySession이(가) '/u01/app/oracle/product/10.2.0/db_1' OH에 Interim 패치 '16619894'을(를) 적용하는 중입니다. Running prerequisite checks... Patch 16619894: Optional component(s) missing : [ oracle.rdbms.dv, 10.2.0.5.0 ] , [ oracle.rdbms.dv.oc4j, 10.2.0.5.0 ] , [ oracle.network.cman, 10.2.0.5.0 ] 보안 문제에 대한 알림을 받을 전자 메일 주소를 제공하고 Oracle Configuration Manager를 설치하여 시작하십시오. My Oracle Support 전자 메일 주소/사용자 이름을 사용할 경우 보다 간편하게 작업을 진행할 수 있습니다. 자세한 내용을 확인하려면 http://www.oracle.com/support/policies.html을 방문하십시오. 전자 메일 주소/사용자 이름: 보안 문제에 대한 알림을 받을 전자 메일 주소를 제공하지 않았습니다. 보안 문제에 대한 알림을 받지 않을지 선택(예: [Y], 아니오: [N]) [N]: Y OPatch가 인벤토리에서 노드 목록 및 로컬 노드를 감지했습니다. OPatch는 로컬 시스템을 패치한 다음 패치를 원격 노드에 전달합니다. 이 노드는 Oracle Real Application Cluster의 일부입니다. 원격 노드: 'rac2' 로컬 노드: 'rac1' 로컬 시스템의 이 ORACLE_HOME에서 실행 중인 Oracle 인스턴스를 종료하십시오. (Oracle 홈 = '/u01/app/oracle/product/10.2.0/db_1') 로컬 시스템이 패치할 준비가 되었습니까? [y|n] y User Responded with: Y Oracle 홈에 대한 파일 및 인벤토리(자동 롤백에 대한 사항이 아님)를 백업하는 중 복원에 대해 '16619894' 패치의 영향을 받는 파일을 백업하는 중입니다. 이 작업은 약간의 시간이 걸릴 수 있습니다. 롤백에 대해 '16619894' 패치의 영향을 받는 파일을 백업하는 중입니다. 이 작업은 약간의 시간이 걸릴 수 있습니다. Execution of 'sh /media/sf_oracle/16619894/custom/scripts/pre -apply 16619894 ': Return Code = 0 oracle.rdbms, 10.2.0.5.0 구성 요소를 패치하는 중... 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kcbl.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qecsel.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ksfd.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qkexr.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/xty.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qergh.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qergs.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ktsx.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kdt.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kkpod.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kdiss.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qerix.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/knld.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ktein.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kkzu.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/tbsdrv.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ktec.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kteop.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ktsp.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qerbo.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kkxl.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kkm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kxtt.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qks3t.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kql.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kdi.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/upsexe.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kffm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ktb.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ktr.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kds.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qertb.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ksu.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kokt.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kzvdve.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kpolon.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/delexe.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/updexe.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qerdl.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qerup.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kla.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kzu.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kzvutil.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/dmsvma.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qxim.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kkxm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qeroc.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qeroi.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qmix.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qmxtk.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kdx.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qksht.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kkxs.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/psdpgi.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kjr.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kokl.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/koklv.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kkfd.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kcrr.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kdb.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kcrf.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kct.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/krsc.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/krsf.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/krsl.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/krsm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kqlm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kdic.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/krbo.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ktt.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kzld.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kks1.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kksl.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kewt.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ksf.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/krci.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/krcp.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kjzh.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kqr.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kcf.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/dbsdrv.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/koks3.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qec.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qkxr.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/prsc.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qxuag.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kjcs.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kjcts.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kjm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kspt.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kkzg.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ksk.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ksucln.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/krvx.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kks.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ksxp.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kdl.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kdo.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/krvt.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kfdp.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ainp.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ain.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ctc.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kkpo.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/aud.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/msqimb.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kjbm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kjbl.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kokc.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/k2.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/k2r.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/k2s.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kpoal8.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ncodef.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/npi.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kpostr.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/opial7.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/opiexe.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/psdicd.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kcm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kcs.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/knl.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qerrm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ksms.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kcl.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kjdr.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kcb.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kcbz.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ktsa.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qsmqcsm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kjfc.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kzft.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kfd.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kkn.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kzia.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/sd.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ssgfnm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kkbn.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/evar2v.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kkxpp.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/purdrv.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kky.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qxidp.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qxidm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/sldbg.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kpodp.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kpods.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/opiamr.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/opicui.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/opiior.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/opiosq.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/opipar.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/krf.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/krvi.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kza.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kzctx.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kzp.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kzs.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kzsr.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kzvfac.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/zlke.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kebm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kelt.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kew.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ksdx.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ksm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ksp.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kst.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qmevf.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/qmkm.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kjxgnd.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/skdx.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/sz.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ksdxt.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kstst.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/kststqad.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ksmp.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libserver10.a"을(를) "lib/libserver10.a/ksmu.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/libknlopt.a"을(를) "rdbms/lib/libknlopt.a/kkxwtp.o"(으)로 갱신하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/bundledata_PSU.xml"(으)로 복사하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/kkxwtp.o"(으)로 복사하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/ksms.o"(으)로 복사하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/jox.o"(으)로 복사하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msg"(으)로 복사하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb"(으)로 복사하는 중 Copying file to "/u01/app/oracle/product/10.2.0/db_1/psu/10.2.0.5.12/catpsu.sql" Copying file to "/u01/app/oracle/product/10.2.0/db_1/psu/10.2.0.5.12/catpsu_rollback.sql" oracle.rdbms.rsf, 10.2.0.5.0 구성 요소를 패치하는 중... 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libgeneric10.a"을(를) "lib/libgeneric10.a/qcop.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libgeneric10.a"을(를) "lib/libgeneric10.a/kgh.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libgeneric10.a"을(를) "lib/libgeneric10.a/kgl.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libgeneric10.a"을(를) "lib/libgeneric10.a/kgl2.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libgeneric10.a"을(를) "lib/libgeneric10.a/qcs2.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libgeneric10.a"을(를) "lib/libgeneric10.a/kgx.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libgeneric10.a"을(를) "lib/libgeneric10.a/kgkp.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libgeneric10.a"을(를) "lib/libgeneric10.a/kgsk.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libgeneric10.a"을(를) "lib/libgeneric10.a/kgski.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libgeneric10.a"을(를) "lib/libgeneric10.a/kgls.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libclient10.a"을(를) "lib/libclient10.a/kpuzln.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libcommon10.a"을(를) "lib/libcommon10.a/ttcx2y.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libcommon10.a"을(를) "lib/libcommon10.a/kpccap.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libcommon10.a"을(를) "lib/libcommon10.a/kzsrcr.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libpls10.a"을(를) "lib/libpls10.a/pef.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libpls10.a"을(를) "lib/libpls10.a/pei.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libpls10.a"을(를) "lib/libpls10.a/pgmc.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libpls10.a"을(를) "lib/libpls10.a/pdx2.o"(으)로 갱신하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb"(으)로 복사하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msg"(으)로 복사하는 중 oracle.rdbms.dbscripts, 10.2.0.5.0 구성 요소를 패치하는 중... 파일을 "/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/prvtjob.plb"(으)로 복사하는 중 Copying file to "/u01/app/oracle/product/10.2.0/db_1/cpu/scripts/bug11057369.sql" Copying file to "/u01/app/oracle/product/10.2.0/db_1/cpu/scripts/bug9687193.sql" Copying file to "/u01/app/oracle/product/10.2.0/db_1/cpu/scripts/emdb_recomp_invalids.sql" Copying file to "/u01/app/oracle/product/10.2.0/db_1/cpu/scripts/bug12904308.sql" Copying file to "/u01/app/oracle/product/10.2.0/db_1/cpu/scripts/admin_backport_14459552.sql" oracle.network.rsf, 10.2.0.5.0 구성 요소를 패치하는 중... 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/nzu.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/nzos.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_dooptionsallowrenegotoation.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_setupconnectioncontext.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_decoderecord.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_destroyconnectioncontext.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_createconnectioncontext.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_createglobalcontext.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_getversion.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_modifyciphersuites.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_getrenegotiationoptions.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_enableclientauthentication.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_write.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_modifyrenegotiationoptions.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_setrenegotiationoptions.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_modifyclientauthmodes.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_disableclientauthentication.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_getconnectionrenegotiationoptions.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_read.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_writeclienthello.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_write_certificate_request_handler.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_tls1_writefinished_handler.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_ssl2_processclienthelloshared.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_calc_enabled_cipher_suites.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_is_client_cert_requested.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_onerror.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_processcertificaterequest_handler.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_ssl3_process_finished.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_ssl3_tls1_writeserverhello_handler.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_getnextevent.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_processserverhello.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_tls1_process_finished.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_refuserenegotiation.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_process_client_hello.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_ssl3_writefinished_handler.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_handshakeproceed.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_read.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_process_client_hello_shared.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_process_hello_shared.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_requestrenegotiation.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_setclientcertrequested_handler.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.a"을(를) "lib/libnnz10.a/ssl_hshk_priv_ssl2_write_client_certificate_handler.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libn10.a"을(를) "lib/libn10.a/nzdacval.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libn10.a"을(를) "lib/libn10.a/nae.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libn10.a"을(를) "lib/libn10.a/ztvo.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libn10.a"을(를) "lib/libn10.a/nsev.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libnro10.a"을(를) "lib/libnro10.a/ncrfidr.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/network/lib/libnlsnr10.a"을(를) "network/lib/libnlsnr10.a/nsglsn.o"(으)로 갱신하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.so"(으)로 복사하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/bin/gennttab"(으)로 복사하는 중 oracle.sysman.bsln, 10.2.0.5.0 구성 요소를 패치하는 중... jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emCORE.jar"을(를) "/sysman/jlib/emCORE.jar/oracle/sysman/eml/sec/util/RootCert.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emCORE.jar"을(를) "/sysman/jlib/emCORE.jar/oracle/sysman/eml/sec/fsc/FSWalletUtil.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emCORE.jar"을(를) "/sysman/jlib/emCORE.jar/oracle/sysman/eml/sec/rep/RepWalletUtil.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emCORE.jar"을(를) "/sysman/jlib/emCORE.jar/oracle/sysman/eml/sec/util/SecConstants.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emCORE.jar"을(를) "/sysman/jlib/emCORE.jar/oracle/sysman/eml/admin/rep/UserData.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emCORE.jar"을(를) "/sysman/jlib/emCORE.jar/oracle/sysman/eml/admin/rep/AdminResourceBundle.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emCORE.jar"을(를) "/sysman/jlib/emCORE.jar/oracle/sysman/eml/admin/rep/AdminResourceBundleID.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emCORE.jar"을(를) "/sysman/jlib/emCORE.jar/oracle/sysman/eml/mntr/metrics/MetricDetailDataObject.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emCORE.jar"을(를) "/sysman/jlib/emCORE.jar/oracle/sysman/eml/mntr/metrics/MetricDetailUtil.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emCORE.jar"을(를) "/sysman/jlib/emCORE.jar/oracle/sysman/eml/mntr/vltn/AlertDetailsDataObject.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emCORE.jar"을(를) "/sysman/jlib/emCORE.jar/oracle/sysman/eml/ecm/policy/PolicySQLList.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emCORE.jar"을(를) "/sysman/jlib/emCORE.jar/oracle/sysman/emSDK/sec/auth/EMLoginServlet.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emCORE.jar"을(를) "/sysman/jlib/emCORE.jar/oracle/sysman/emSDK/sec/auth/OSSOLogin.class"(으)로 갱신하는 중 oracle.sysman.repository.core, 10.2.0.5.0a 구성 요소를 패치하는 중... jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/schm/PLSqlObjectController.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/schm/SchemaObjectController.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/schm/TriggerController.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/rsc/schm/SchemaMsg.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/rsc/schm/SchemaMsgID.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/adm/schema/srctype/plsqlobject/PLSqlObject.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/adm/schema/srctype/plsqlobject/PLSqlObjectAttributes.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/adm/schema/srctype/trigger/Trigger.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/adm/schema/srctype/trigger/TriggerAttributes.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/DBController.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/DatabaseObjectsSearchController.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/DatabaseObjectsSearchController$DBObjectSearchCriteria.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/sec/DirObjectController.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/sec/UserController.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/stg/RbsegmentController.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/stg/TablespaceController.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/rsc/DBObjectMsg.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/rsc/DBObjectMsgID.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/adm/DBObject.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/adm/DBObjectsDataSource.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/adm/usage/UsageSQLGenerator.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/schm/GrantObjPrivsController.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/perf/bean/hdm/HDMFindingDetailsInitializer.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/util/shrinkAdv/ShrinkAdvController.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/dist/streams/Queue.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/dist/streams/QueueSQLGenerator.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/dist/streams/QueueSQLList.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/dist/streams/QueueController.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/util/dbclone/DBCloneBean.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/util/dbclone/DBCloneController.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/util/dbclone/DBCloneDataSource.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/util/dbclone/DBCloneSqlList.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/inst/rsrcmgr/RsrcmgrPlnController.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/xdb/XDBUtil.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/adm/instance/rsrcpln/RsrcplnBean.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/adm/instance/rsrcpln/RsrcplnSQLList.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/adm/schema/mview/MView.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/adm/showdep/DependQuery.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emDB.jar"을(를) "/sysman/jlib/emDB.jar/oracle/sysman/emo/adm/showdep/TableDependQuery.class"(으)로 갱신하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/sysman/admin/emdrep/sql/core/latest/ecm/ecm_util_pkgbody.sql"(으)로 복사하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/sysman/admin/emdrep/sql/core/latest/ecm/ecm_util_pkgdef.sql"(으)로 복사하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/sysman/admin/emdrep/sql/core/latest/ecm/ecm_views.sql"(으)로 복사하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/sysman/admin/emdrep/sql/core/latest/sdk/sdk_views.sql"(으)로 복사하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/sysman/admin/emdrep/sql/core/latest/admin/admin_create_repos_user.sql"(으)로 복사하는 중 oracle.sysman.console.db, 10.2.0.5.0 구성 요소를 패치하는 중... jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_schema/_plsqlobject/_createPLSqlObjectPage$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_schema/_plsqlobject/_createPLSqlObjectPage.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_schema/_plsqlobject/_editPLSqlObjectPage$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_schema/_plsqlobject/_editPLSqlObjectPage.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_schema/_trigger/_triggerAdvancedPage$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_schema/_trigger/_triggerAdvancedPage.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_schema/_trigger/_triggerEventPage$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_schema/_trigger/_triggerEventPage.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_schema/_trigger/_triggerGeneralPage$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_schema/_trigger/_triggerGeneralPage.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_confirmationDelete$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_confirmationDelete.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_confirmationWithOptions$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_confirmationWithOptions.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbObjectsList$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbObjectsList.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_dasFrameRedirect$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_dasFrameRedirect.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_instance/_rsrcpln/_rsrcplnGeneral.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_instance/_rsrcpln/_rsrcplnGeneral$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__AdvDestOptions.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__AdvDestOptions$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__AdvDestOptionsAsm.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__AdvDestOptionsAsm$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__ArchivingMode.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__ArchivingMode$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__AsmInstance.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__AsmInstanceLogin.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__Confirm.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__DestOptions.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__DestOptionsDiffHost.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__MultiplexLocations.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__MultiplexLocationsOmf.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__RedologsControlfiles.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__RedologsControlfilesOmf.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__Review.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__Schedule.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__SelectDest.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__SourceOptions.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__StartingPage.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__ViewSourceDatabaseFiles.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__Warning.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__AsmInstance$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__AsmInstanceLogin$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__Confirm$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__DestOptions$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__DestOptionsDiffHost$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__MultiplexLocations$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__MultiplexLocationsOmf$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__RedologsControlfiles$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__RedologsControlfilesOmf$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__Review$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__Schedule$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__SelectDest$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__SourceOptions$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__StartingPage$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__ViewSourceDatabaseFiles$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dbclone/_dbClone__Warning$__jsp_StaticText.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dist/_streams/_queue/_editQueue.class"(으)로 갱신하는 중 jar 파일 "/u01/app/oracle/product/10.2.0/db_1/sysman/jlib/emjsp.jar"을(를) "/sysman/jlib/emjsp.jar/_database/_dist/_streams/_queue/_editQueue$__jsp_StaticText.class"(으)로 갱신하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/oc4j_applications/applications/em/em/admin/rep/editUserSummary.uix"(으)로 복사하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/oc4j_applications/applications/em/em/WEB-INF/web.xml"(으)로 복사하는 중 oracle.xdk.rsf, 10.2.0.5.0 구성 요소를 패치하는 중... 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libxml10.a"을(를) "lib/libxml10.a/lpxpar.o"(으)로 갱신하는 중 oracle.precomp.common, 10.2.0.5.0 구성 요소를 패치하는 중... oracle.rdbms.rman, 10.2.0.5.0 구성 요소를 패치하는 중... 파일을 "/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/recover.bsq"(으)로 복사하는 중 oracle.sdo.locator, 10.2.0.5.0 구성 요소를 패치하는 중... 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libordsdo10.a"을(를) "lib/libordsdo10.a/mdidx.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libordsdo10.a"을(를) "lib/libordsdo10.a/mdrcr.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libordsdo10.a"을(를) "lib/libordsdo10.a/mdrt.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libordsdo10.a"을(를) "lib/libordsdo10.a/mdopp.o"(으)로 갱신하는 중 아카이브 파일 "/u01/app/oracle/product/10.2.0/db_1/lib/libordsdo10.a"을(를) "lib/libordsdo10.a/mdgr.o"(으)로 갱신하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/md/admin/mdprivs.sql"(으)로 복사하는 중 oracle.network.listener, 10.2.0.5.0 구성 요소를 패치하는 중... oracle.network.client, 10.2.0.5.0 구성 요소를 패치하는 중... 파일을 "/u01/app/oracle/product/10.2.0/db_1/bin/adapters"(으)로 복사하는 중 oracle.ovm, 10.2.0.5.0 구성 요소를 패치하는 중... 파일을 "/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/owmr1116.plb"(으)로 복사하는 중 파일을 "/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/owmv1116.plb"(으)로 복사하는 중 oracle.oem.oemlt, 10.2.0.5.0 구성 요소를 패치하는 중... 파일을 "/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/execocm.sql"(으)로 복사하는 중 oracle.javavm.server, 10.2.0.5.0 구성 요소를 패치하는 중... 파일을 "/u01/app/oracle/product/10.2.0/db_1/lib/libjox10.so"(으)로 복사하는 중 client_sharedlib 대상에 대해 make를 실행하는 중 ioracle 대상에 대해 make를 실행하는 중 iwrap 대상에 대해 make를 실행하는 중 client_sharedlib 대상에 대해 make를 실행하는 중 proc 대상에 대해 make를 실행하는 중 irman 대상에 대해 make를 실행하는 중 itnslsnr 대상에 대해 make를 실행하는 중 ApplySession이(가) 인벤토리에 Interim 패치 '16619894'을(를) 추가하는 중입니다. Verifying the update... Inventory check OK: Patch ID 16619894 is registered in Oracle Home inventory with proper meta-data. Files check OK: Files from Patch ID 16619894 are present in Oracle Home. 로컬 시스템이 패치되었습니다. 이 로컬 시스템에서 Oracle 인스턴스를 재시작할 수 있습니다 롤링 모드로 패치하는 중입니다. 'rac2' 노드는 다음에 패치됩니다. 'rac2'의 이 ORACLE_HOME에서 실행 중인 Oracle 인스턴스를 종료하십시오. (Oracle 홈 = '/u01/app/oracle/product/10.2.0/db_1') 노드가 패치할 준비가 되었습니까? [y|n] y User Responded with: Y Updating nodes 'rac2' Apply-related files are: FP = "/u01/app/oracle/product/10.2.0/db_1/.patch_storage/16619894_Jun_28_2013_00_21_17/rac/copy_files.txt" DP = "/u01/app/oracle/product/10.2.0/db_1/.patch_storage/16619894_Jun_28_2013_00_21_17/rac/copy_dirs.txt" MP = "/u01/app/oracle/product/10.2.0/db_1/.patch_storage/16619894_Jun_28_2013_00_21_17/rac/make_cmds.txt" RC = "/u01/app/oracle/product/10.2.0/db_1/.patch_storage/16619894_Jun_28_2013_00_21_17/rac/remote_cmds.txt" Instantiating the file "/u01/app/oracle/product/10.2.0/db_1/.patch_storage/16619894_Jun_28_2013_00_21_17/rac/copy_files.txt.instantiated" by replacing $ORACLE_HOME in "/u01/app/oracle/product/10.2.0/db_1/.patch_storage/16619894_Jun_28_2013_00_21_17/rac/copy_files.txt" with actual path. Propagating files to remote nodes... Instantiating the file "/u01/app/oracle/product/10.2.0/db_1/.patch_storage/16619894_Jun_28_2013_00_21_17/rac/copy_dirs.txt.instantiated" by replacing $ORACLE_HOME in "/u01/app/oracle/product/10.2.0/db_1/.patch_storage/16619894_Jun_28_2013_00_21_17/rac/copy_dirs.txt" with actual path. Propagating directories to remote nodes... Instantiating the file "/u01/app/oracle/product/10.2.0/db_1/.patch_storage/16619894_Jun_28_2013_00_21_17/rac/make_cmds.txt.instantiated" by replacing $ORACLE_HOME in "/u01/app/oracle/product/10.2.0/db_1/.patch_storage/16619894_Jun_28_2013_00_21_17/rac/make_cmds.txt" with actual path. Running command on remote node 'rac2': cd /u01/app/oracle/product/10.2.0/db_1/rdbms/lib; /usr/bin/make -f ins_rdbms.mk client_sharedlib ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 || echo REMOTE_MAKE_FAILED::>&2 Running command on remote node 'rac2': cd /u01/app/oracle/product/10.2.0/db_1/rdbms/lib; /usr/bin/make -f ins_rdbms.mk ioracle ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 || echo REMOTE_MAKE_FAILED::>&2 Running command on remote node 'rac2': cd /u01/app/oracle/product/10.2.0/db_1/plsql/lib; /usr/bin/make -f ins_plsql.mk iwrap ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 || echo REMOTE_MAKE_FAILED::>&2 Running command on remote node 'rac2': cd /u01/app/oracle/product/10.2.0/db_1/network/lib; /usr/bin/make -f ins_net_client.mk client_sharedlib ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 || echo REMOTE_MAKE_FAILED::>&2 Running command on remote node 'rac2': cd /u01/app/oracle/product/10.2.0/db_1/precomp/lib; /usr/bin/make -f ins_precomp.mk proc ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 || echo REMOTE_MAKE_FAILED::>&2 Running command on remote node 'rac2': cd /u01/app/oracle/product/10.2.0/db_1/rdbms/lib; /usr/bin/make -f ins_rdbms.mk irman ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 || echo REMOTE_MAKE_FAILED::>&2 Running command on remote node 'rac2': cd /u01/app/oracle/product/10.2.0/db_1/network/lib; /usr/bin/make -f ins_net_server.mk itnslsnr ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 || echo REMOTE_MAKE_FAILED::>&2 'rac2' 노드가 패치되었습니다. 이 노드에서 Oracle 인스턴스를 재시작할 수 있습니다. 원격 노드에 재링크가 있었습니다. ''rac2' ' 노드에서 바이너리 크기 및 시간 기록을 확인하십시오. 다음 make 명령이 원격 노드에서 호출되었습니다. 'cd /u01/app/oracle/product/10.2.0/db_1/rdbms/lib; /usr/bin/make -f ins_rdbms.mk client_sharedlib ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 cd /u01/app/oracle/product/10.2.0/db_1/rdbms/lib; /usr/bin/make -f ins_rdbms.mk ioracle ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 cd /u01/app/oracle/product/10.2.0/db_1/plsql/lib; /usr/bin/make -f ins_plsql.mk iwrap ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 cd /u01/app/oracle/product/10.2.0/db_1/network/lib; /usr/bin/make -f ins_net_client.mk client_sharedlib ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 cd /u01/app/oracle/product/10.2.0/db_1/precomp/lib; /usr/bin/make -f ins_precomp.mk proc ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 cd /u01/app/oracle/product/10.2.0/db_1/rdbms/lib; /usr/bin/make -f ins_rdbms.mk irman ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 cd /u01/app/oracle/product/10.2.0/db_1/network/lib; /usr/bin/make -f ins_net_server.mk itnslsnr ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 ' OPatch succeeded.
Patch Set Update를 적용합니다.
자동으로 로컬과 원격 경로에 패치를 진행합니다.
opatch lsinventory
[oracle@racdb1 ~]$ opatch lsinventory Invoking OPatch 10.2.0.5.1 Oracle Interim 패치 설치 프로그램 버전 10.2.0.5.1 Copyright (c) 2010, Oracle Corporation. All rights reserved. Oracle 홈: /u01/app/oracle/product/10.2.0/db_1 중앙 인벤토리: /u01/app/oracle/oraInventory 출처: /etc/oraInst.loc OPatch 버전: 10.2.0.5.1 OUI 버전: 10.2.0.5.0 OUI 위치 : /u01/app/oracle/product/10.2.0/db_1/oui 로그 파일 위치: /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch2017-08-22_16-24-23오후.log Patch history file: /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch_history.txt Lsinventory Output file location : /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2017-08-22_16-24-23오후.txt -------------------------------------------------------------------------------- 설치된 최상위 레벨 제품(2): Oracle Database 10g 10.2.0.1.0 Oracle Database 10g Release 2 Patch Set 4 10.2.0.5.0 이 Oracle 홈에 2개의 제품이 설치되어 있습니다. Interim 패치(1): Patch 16619894 : applied on Tue Aug 22 16:23:05 KST 2017 Unique Patch ID: 16475385 Created on 28 Jun 2013, 00:21:17 hrs PST8PDT Bugs fixed: 13596521, 8865718, 11790175, 13489660, 9020537, 9772888, 8650138 8664189, 10091698, 14275629, 14469008, 10092858, 12551710, 7519406 9821321, 13349665, 8771916, 7509714, 16619894, 8822531, 10139235 10159846, 13257247, 8350262, 11792865, 7119382, 13632738, 11724962 16309604, 16309605, 16309606, 8966823, 9320130, 16961614, 16961615 13775862, 16961616, 11674645, 16961617, 16961618, 15877957, 7026523 16961619, 15877958, 15877959, 9399589, 14841459, 9672816, 13503598 9499302, 9150282, 9448311, 9659614, 13632743, 14220725, 9949948, 8882576 10327179, 7612454, 7111619, 9711859, 9714832, 9735237, 9952230, 15877960 12780098, 13561951, 15877961, 15877962, 14665116, 15877963, 8660422 11066597, 16703112, 16279401, 14546673, 14105702, 14459552, 9713537 14105703, 14105704, 13483152, 13737773, 13737775, 14269955, 12925532 12748240, 9694101, 14390396, 12862186, 12862187, 10249537, 14727319 9586877, 8211733, 6694396, 9548269, 7115910, 7710224, 9337325, 8354642 7602341, 14076510, 10157402, 11856395, 12565867, 6402302, 10327190 10269717, 13015379, 11693109, 14023636, 10017048, 8546356, 8394351 9024850, 13561750, 8224558, 9770451, 9360157, 8488233, 9109487, 10132870 14841558, 9171933, 16817117, 10173237, 9532911, 10068982, 7361418 10306945, 8666117, 11725006, 6157713, 10214450, 9184754, 14205448 8544696, 9767674, 16306019, 9323583, 8277300, 13343467, 16279211 9726739, 16382448, 13791364, 8412426, 10326338, 10165083, 10208905 12419392, 6651220, 9145204, 13554409, 11076894, 7450366, 11893577 8970313, 14492313, 6690853, 6011045, 14492314, 11814891, 10162036 14492315, 10248542, 14492316, 16742123, 9469117, 13359623, 9952270 9842573, 13343471, 12710774, 10324526, 14546638, 12419258, 9322219 8636407, 16056270, 10010310, 12828105, 9689310, 9390484, 13736501 13736502, 9824435, 13736503, 13736504, 13736505, 13736506, 9963497 9032322, 13736507, 12551700, 12551701, 14035825, 12551702, 11858315 12551703, 12551704, 10076669, 16270946, 12551705, 12551706, 14040433 12551707, 6076890, 14258925, 12551708, 9308296, 13916709, 12827745 12880299, 14038805, 13923855, 9072105, 8528171, 11737047 여러 노드를 구성하는 RAC 시스템 Local node = rac1 Remote node = rac2 -------------------------------------------------------------------------------- OPatch succeeded.
[oracle@racdb2 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory Invoking OPatch 10.2.0.4.9 Oracle Interim 패치 설치 프로그램 버전 10.2.0.4.9 Copyright (c) 2009, Oracle Corporation. All rights reserved. Oracle 홈: /u01/app/oracle/product/10.2.0/db_1 중앙 인벤토리: /u01/app/oracle/oraInventory 출처: /etc/oraInst.loc OPatch 버전: 10.2.0.4.9 OUI 버전: 10.2.0.5.0 OUI 위치 : /u01/app/oracle/product/10.2.0/db_1/oui 로그 파일 위치: /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch2017-08-22_16-27-10오후.log Patch history file: /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch_history.txt Lsinventory Output file location : /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2017-08-22_16-27-10오후.txt -------------------------------------------------------------------------------- 설치된 최상위 레벨 제품(2): Oracle Database 10g 10.2.0.1.0 Oracle Database 10g Release 2 Patch Set 4 10.2.0.5.0 이 Oracle 홈에 2개의 제품이 설치되어 있습니다. Interim 패치(1): Patch 16619894 : applied on Tue Aug 22 16:23:05 KST 2017 Unique Patch ID: 16475385 Created on 28 Jun 2013, 00:21:17 hrs PST8PDT Bugs fixed: 13596521, 8865718, 11790175, 13489660, 9020537, 9772888, 8650138 8664189, 10091698, 14275629, 14469008, 10092858, 12551710, 7519406 9821321, 13349665, 8771916, 7509714, 16619894, 8822531, 10139235 10159846, 13257247, 8350262, 11792865, 7119382, 13632738, 11724962 16309604, 16309605, 16309606, 8966823, 9320130, 16961614, 16961615 13775862, 16961616, 11674645, 16961617, 16961618, 15877957, 7026523 16961619, 15877958, 15877959, 9399589, 14841459, 9672816, 13503598 9499302, 9150282, 9448311, 9659614, 13632743, 14220725, 9949948, 8882576 10327179, 7612454, 7111619, 9711859, 9714832, 9735237, 9952230, 15877960 12780098, 13561951, 15877961, 15877962, 14665116, 15877963, 8660422 11066597, 16703112, 16279401, 14546673, 14105702, 14459552, 9713537 14105703, 14105704, 13483152, 13737773, 13737775, 14269955, 12925532 12748240, 9694101, 14390396, 12862186, 12862187, 10249537, 14727319 9586877, 8211733, 6694396, 9548269, 7115910, 7710224, 9337325, 8354642 7602341, 14076510, 10157402, 11856395, 12565867, 6402302, 10327190 10269717, 13015379, 11693109, 14023636, 10017048, 8546356, 8394351 9024850, 13561750, 8224558, 9770451, 9360157, 8488233, 9109487, 10132870 14841558, 9171933, 16817117, 10173237, 9532911, 10068982, 7361418 10306945, 8666117, 11725006, 6157713, 10214450, 9184754, 14205448 8544696, 9767674, 16306019, 9323583, 8277300, 13343467, 16279211 9726739, 16382448, 13791364, 8412426, 10326338, 10165083, 10208905 12419392, 6651220, 9145204, 13554409, 11076894, 7450366, 11893577 8970313, 14492313, 6690853, 6011045, 14492314, 11814891, 10162036 14492315, 10248542, 14492316, 16742123, 9469117, 13359623, 9952270 9842573, 13343471, 12710774, 10324526, 14546638, 12419258, 9322219 8636407, 16056270, 10010310, 12828105, 9689310, 9390484, 13736501 13736502, 9824435, 13736503, 13736504, 13736505, 13736506, 9963497 9032322, 13736507, 12551700, 12551701, 14035825, 12551702, 11858315 12551703, 12551704, 10076669, 16270946, 12551705, 12551706, 14040433 12551707, 6076890, 14258925, 12551708, 9308296, 13916709, 12827745 12880299, 14038805, 13923855, 9072105, 8528171, 11737047 여러 노드를 구성하는 RAC 시스템 Local node = rac2 Remote node = rac1 -------------------------------------------------------------------------------- OPatch succeeded.
적용된 패치 결과를 조회합니다.
{}
XI. 접속 환경 구성
netca
원격 접속을 위한 리스너 생성을 위해 NETCA를 실행합니다.
'클러스터 구성'을 선택하고 <다음>을 클릭합니다.
<모든 노드 선택>을 클릭한 후 <다음>을 클릭합니다.
'리스너 구성'을 선택하고 <다음>을 클릭합니다.
'추가'가 선택된 것을 확인하고 <다음>을 클릭합니다.
리스너명을 확인하고 <다음>을 클릭합니다.
다른 이름으로 생성하고자 한다면 리스너 명에 사용할 이름을 입력하면 됩니다.
사용할 프로토콜(기본값 : TCP)을 선택하고 <다음>을 클릭합니다.
'표준 포트 번호 1521 사용'을 선택하고 <다음>을 클릭합니다.
포트 번호를 다른 것으로 지정하려면 '다른 포트 번호 사용'을 선택하고 사용할 번호를 입력하면 됩니다.
추가할 리스너가 없으면 '아니오'를 선택하고 <다음>을 클릭합니다.
리스너 구성이 성공된 것을 확인하고, <다음>을 클릭합니다.
추가적인 작업이 없으면 <완료>를 클릭합니다.
crs_stat -t
[oracle@racdb1 ~]$ crs_stat -t Name Type Target State Host ------------------------------------------------------------ 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
기존 클러스터에 리스너가 추가된 것을 확인할 수 있습니다.
{}
XII. Database 생성
mkdir -p $ORACLE_BASE/oradata/<DB명> cd $ORACLE_BASE/oradata/<DB명>
[oracle@racdb1 ~]$ mkdir -p $ORACLE_BASE/oradata/racdb [oracle@racdb1 ~]$ cd $ORACLE_BASE/oradata/racdb
{}
oracle 유저로 raw device 매핑 파일을 저장할 경로를 생성하고, 생성된 경로로 이동합니다.
system=/dev/raw/raw6 sysaux=/dev/raw/raw7 users=/dev/raw/raw8 temp=/dev/raw/raw9 undotbs1=/dev/raw/raw10 undotbs2=/dev/raw/raw11 control1=/dev/raw/raw12 control2=/dev/raw/raw13 redo1_1=/dev/raw/raw14 redo1_2=/dev/raw/raw15 redo2_1=/dev/raw/raw16 redo2_2=/dev/raw/raw17 spfile=/dev/raw/raw20 pwdfile=/dev/raw/raw21
[oracle@racdb1 racdb]$ cat racdb_raw.conf system=/dev/raw/raw6 sysaux=/dev/raw/raw7 users=/dev/raw/raw8 temp=/dev/raw/raw9 undotbs1=/dev/raw/raw10 undotbs2=/dev/raw/raw11 control1=/dev/raw/raw12 control2=/dev/raw/raw13 redo1_1=/dev/raw/raw14 redo1_2=/dev/raw/raw15 redo2_1=/dev/raw/raw16 redo2_2=/dev/raw/raw17 spfile=/dev/raw/raw20 pwdfile=/dev/raw/raw21
이동한 경로에 raw device 매핑 파일을 생성합니다.
생성 규칙은 (데이터베이스 파일명)=(raw device 명)의 목록으로 기록합니다.
export DBCA_RAW_CONFIG=$ORACLE_BASE/oradata/racdb/racdb_raw.conf dbca
Raw device 매핑 파일을 환경변수 DBCA_RAW_CONFIG로 설정하고 DBCA를 실행합니다.
'Oracle Real Application Clusters 데이터베이스'를 선택하고 <다음>을 클릭합니다.
'데이터베이스 생성'을 선택하고 <다음>을 클릭합니다.
<모두 선택>을 클릭한 후 <다음>을 클릭합니다.
'범용' 템플리트를 선택하고 <다음>을 클릭합니다.
전역 데이터베이스 이름에 "racdb"를 입력하면, 자동으로 SID 접두어에도 "racdb"가 입력됩니다.
이름을 입력한 후 <다음>을 클릭합니다.
부하를 줄이기 위해 'Enterprise Manager를 사용하여 데이터베이스 구성'을 해제하고 <다음>을 클릭합니다.
암호와 암호 확인에 sys와 system 계정에서 사용할 암호를 입력하고 <다음>을 클릭합니다.
만약 두 계정에 다른 암호를 사용하고자 한다면 '다른 암호 사용'을 선택하고 각 계정의 암호를 입력하면 됩니다.
'원시 장치'를 선택하고 '원시 장치 매핑파일 지정'을 체크합니다.
DBCA 실행 전에 DBCA_RAW_CONFIG 변수를 매핑 파일로 지정했다면, 자동으로 파일 경로와 이름을 불러옵니다.
만약 수동으로 매핑 파일을 등록해야 한다면 <찾아보기>를 클릭하여 경로를 조회하면 됩니다.
저장 방식 설정 후 <다음>을 클릭합니다.
아카이브 파일의 확장자는 데이터 파일이 사용하는 dbf가 아닌 다른 것(arc)으로 바꾸는 것을 권고합니다.
'플래시 복구 영역 지정'을 체크하고 다음과 같이 지정합니다.
- 플래시 복구 영역 : /FRA
- 플래시 복구 영역 크기 : 2048MB (기본값)
'아카이브 활성화'를 체크하고 <다음>을 클릭합니다.
샘플 스키마를 설치하지 않을 것이므로 해당 항목을 체크하지는 않습니다.
데이터베이스 생성 과정 중에 수행할 스크립트가 있다면 '사용자 정의 스크립트' 탭에서 추가할 수 있습니다.
별도로 실행할 스크립트가 없으면 <다음>을 클릭합니다.
데이터베이스 서비스 구성은 기본값을 사용할 것이므로 별도의 설정 없이 <다음>을 클릭합니다.
물리 메모리의 40%를 기본값으로 할당합니다.
데이터베이스 사용량에 맞게 프로세스를 변경할 수 있습니다.
문자 집합은 'KO16MSWIN949'로 선택하고, 기본 언어는 ‘영어(미국)’으로 바꿉니다.
접속 모드는 기본값인 '전용 서버 모드'를 유지합니다.
매개변수 파일은 spfile이 저장될 곳이며 매핑 파일의 설정에 따라 자동으로 지정됩니다.
<고급 매개변수 표시>를 클릭하면, 더 세부적인 파라미터에 대한 목록을 조회 및 변경할 수 있습니다.
데이터베이스 파라미터를 확인하고자 한다면 <모든 초기화 매개변수>를 클릭하면 목록을 조회할 수 있습니다.
이곳에서는 초기 파라미터 값을 변경할 수도 있습니다.
모두 확인하였으면 <다음>을 클릭합니다.
컨트롤 파일의 위치 확인이 가능합니다.
또한 컨트롤 파일의 옵션도 이곳에서 변경할 수 있습니다.
초기에 생성될 데이터 파일의 위치 정보도 조회가 가능합니다.
데이터베이스 저장 영역을 검토 및 수정할 수 있는 단계입니다.
기본적으로 리두 로그는 2개의 스레드(인스턴스)에서 각각 2개의 그룹을 사용하는 방식으로 총 4개의 그룹이 50MB 크기로 생성되게 됩니다.
50MB 크기의 리두를 그룹 2개로 순환하여 사용하면 지연이 발생할 수 있으므로, 리두의 크기를 200MB로 키우고 2개의 스레드에 각각 3개의 그룹을 할당하여 총 6개의 그룹이 되도록 변경할 것입니다.
'리두 로그 그룹'을 선택한 상태에서 <생성>을 클릭하면 생성 창이 뜹니다.
다음과 같은 정보를 입력한 후에 <생성>을 클릭합니다.
- 그룹 # : 5
- 스레드 # : 2
- 파일 크기 : 200MB
- 파일 이름 : raw18
- 파일 디렉토리 : /dev/raw/
리두 그룹을 동일한 방식으로 하나 더 추가합니다.
다음과 같은 정보를 입력한 후에 <생성>을 클릭합니다.
- 그룹 # : 6
- 스레드 # : 2
- 파일 크기 : 200MB
- 파일 이름 : raw19
- 파일 디렉토리 : /dev/raw/
그룹 1의 파일 크기를 "200MB"로 변경합니다.
다른 입력된 정보도 확인합니다.
- 그룹 # : 1
- 스레드 # : 1
- 파일 크기 : 200MB
- 파일 이름 : raw14
- 파일 디렉토리 : /dev/raw/
그룹 2의 파일 크기도 "200MB"로 변경합니다.
- 그룹 # : 2
- 스레드 # : 1
- 파일 크기 : 200MB
- 파일 이름 : raw15
- 파일 디렉토리 : /dev/raw/
그룹 3은 스레드를 "1"로 변경하고, 파일 크기도 변경합니다.
다른 정보들이 아래와 일치하도록 수정합니다.
- 그룹 # : 3
- 스레드 # : 1
- 파일 크기 : 200MB
- 파일 이름 : raw16
- 파일 디렉토리 : /dev/raw/
그룹 4의 파일 크기도 "200MB"로 변경하고, 아래 정보와 일치하도록 수정합니다.
- 그룹 # : 4
- 스레드 # : 2
- 파일 크기 : 200MB
- 파일 이름 : raw17
- 파일 디렉토리 : /dev/raw/
설정이 완료되면 <다음>을 클릭합니다.
'데이터베이스 생성스크립트 생성'을 체크하고 <다음>을 클릭합니다.
데이터베이스 생성이 시작되기에 앞서 지금까지 선택한 내용을 검토할 수 있습니다.
원하는대로 선택이 되었으면 <확인>을 클릭합니다.
먼저 데이터베이스 생성스크립트 생성이 진행됩니다.
스크립트 생성이 완료된 메시지가 나오면 <확인>을 클릭합니다.
이후에 데이터베이스 생성이 진행됩니다.
<암호 관리>를 클릭하면 데이터베이스 계정별로 암호와 계정 상태를 변경할 수 있습니다.
데이터베이스 구성이 완료되었음을 알리는 안내창이 뜹니다.
<종료>를 클릭합니다.
클러스터 데이터베이스 시작 안내가 잠시 나왔다가 사라집니다.
crs_stat -t
[oracle@racdb1 ~]$ crs_stat -t Name Type Target State Host ------------------------------------------------------------ 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 ora.racdb.db application ONLINE ONLINE rac1 ora....b1.inst application ONLINE ONLINE rac1 ora....b2.inst application ONLINE ONLINE rac2
데이터베이스가 정상적으로 등록되어 online인 것을 확인할 수 있습니다.
{}