출처 :  http://kr.forums.oracle.com/forums/thread.jspa?threadID=477185&tstart=45



PURPOSE

이 문서는 9i의 새 기능인 Opatch에 대한 소개와 기능, 사용 방법에 대한 내용을 소개한다.



Explanation

1. Opatch 소개

Oracle Server 9.2.0.2.0 부터는 interim patch(one-off patch, 즉 single patch)를 적용할 때 'opatch'라는 tool을 사용한다.
Metalink에서 항상 최신 Opatch tool 을 download받을 수 있도록 갱신된다. Opatch는 <Bug:2617419> OPATCH ARU PLACEHOLDER. 에서 download받을 수 있다. 2004년 11월 9일 현재, 10월 22일에 release된 최신 버젼 10.1.0.2.0을 받으면 된다.


2. Opatch 기능

Opatch는 interim patch를 적용하거나 다시 rollback할 때 사용하는 일종의 perl-based utility이다. Unix platform이나 Windows platform 에 Opatch를 사용할 수 있다.
Opatch는 기존에 오라클 데이타베이스에 적용되어 있는 patch list를 알게 해주고, 기 적용되어 있는 patch와 충돌 여부도 확인할 수 있는 기능이 있다.


3. Opatch 사용 환경

1) Opatch를 사용하기 위한 준비사항
Perl version은 최소한 5.005_03 이상을 요구하며 가급적 5.6 이상을 권장한다.
JRE는 $ORACLE_HOME에 설치된 JRE를 사용한다.

2) inventory
Inventory는 Oracle RDBMS 설치 시 두 개의 inventory가 생성된다. 하나는 oraInst.loc에서 지정된 inventory directory이고, 이것을 central inventory라고 한다. 다른 하나는 $ORACLE_HOME 아래에 생성되는 inventory directory이며 이것을 Local inventory라고 한다. Opatch 적용 시 반드시 이 두 개의 inventory가 정상적으로 유지되어야 한다.

3) RAC 환경인 경우 Oracle과 Cluster와의 인터페이스를 위하여 oracle library를 사용하는데 다음 경로가 library path에 포함되어 있어야 한다. Sun solaris의 경우 LD_LIBRARY_PATH 이고, HP-UX의 경우 SHLIB_PATH이다.


4. Opatch 설치

1) Metalink에서 최신 버젼 Opatch를 download받으면 p2617419_10102_GENERIC.zip 이라는 이름으로 화일이 존재한다.
이 화일을 OS에 COPY 후, 압축을 푼다. 사용자가 임의로 원하는 디렉토리를 만들어서 그 디렉토리에 화일을 푼다.

$ unzip p2617419_10102_GENERIC.zip

2) OS의 어느 디렉토리에서 사용하든지 상관없도록 하기 위해 환경변수 PATH에 Opatch가 설치되어 있는 디렉토리를 기술한다.

예) export PATH=$PATH:/oracle/opatch/Opatch
setenv PATH $PATH:/oracle/opatch/Opatch


5. 주의 사항

Opatch 적용 시에는 반드시 기존의 inventory 즉, $ORACLE_HOME/inventory와 oraInst.loc에서 지시하는 central inventory를 backup받아 두어야 한다. Windows의 경우 winzip, unix에서는 tar를 사용하면 된다.

<참고>
oraInst.loc 은 Unix마다 조금 다른데 다음 위치에 존재한다.

- AIX와 Linux : /etc directory
- 다른 Unix 기종 : /var/opt/oracle
- Windows : registry -> HKEY_LOCAL_MACHINE -> Software -> Oracle -> inst_loc 에서 지정된 위치.



Example

1. opatch apply

apply <ShipHome> -force -oh <OracleHome>
opatch apply -invPrtLoc $ORACLE_HOME/oraInst.loc

이 명령어는 oraInst.loc 화일의 위치가 default directory가 아닌 경우 해당 위치를 지정하여 patch를 적용하는 명령이다.

- local 옵션은 RAC 환경에서 patch를 다른 노드에 전파하지 않고 Local 노드에만 적용할 때 사용한다. 이 경우 모든 노드에서 개별적으로 patch가 진행되어야 한다.

-force 옵션은 이전에 설치한 patch와 충돌이 있을 때 이를 무시하고 진행하도록 한다.


2. opatch rollback

rollback -id <patch id> -oh <OracleHome> -ph <patch dir>
opatch rollback -id 3113008 -ph /opt/oracle/3113008

이 명령어는 patch id 3113008을 depatch하며, 이 때 기존 patch file이 있는 directory를 -ph argument를 이용하여 지시한다.
기본적으로 사용하는 옵션은 -id 이다. -id는 depatch하려는 patch 번호이다.

- local 옵션은 RAC 환경에서 depatch를 다른 노드에 전파하지 않고 Local 노드에만 적용할 때 사용한다. 이 경우 모든 노드에서 개별적으로 depatch가 진행되어야 한다.


3. opatch lsinventory

lsinventory -all -oh <OracleHome>
opatch lsinventory -all -oh /opt/oracle

이 명령어는 현재 db 서버에 적용되어 있는 patch list를 보여준다.

- all 옵션은 Central inventory에 등록된 모든 $ORACLE_HOME의 이름과 경로를 보여준다.
- oh 옵션은 기존의 $ORACLE_HOME 을 무시하고 새로운 $ORACLE_HOME을 지정할 때 사용한다.
- detail 옵션을 사용하면 install된 oracle product list를 version과 함께 보여준다.


예) $ opatch lsinventory -all

PRODUCT NAME VERSION
============ =======
Advanced Queueing (AQ) API 9.2.0.1.0
Advanced Replication 9.2.0.1.0
Agent Required Support Files 9.2.0.1.0
.
.
.
XML Transx 9.2.0.1.0
XSQL Servlet 9.2.0.1.0


Installed Patch List:
1) Patch 3574853 applied on Sun Apr 25 03:27:43 JST 2004
Base Bug(s): 3111457
2) Patch 3400911 applied on Sun Apr 25 03:24:40 JST 2004
Base Bug(s): 3304290
3) Patch 3508417 applied on Sun Apr 04 22:53:59 JST 2004
Base Bug(s): 3046394
4) Patch 3213774 applied on Sun Apr 04 09:12:08 JST 2004
Base Bug(s): 3186503 3210293
5) Patch 3226815 applied on Sun Apr 04 09:09:22 JST 2004
Base Bug(s): 3157063
6) Patch 3118677 applied on Sun Apr 04 09:06:28 JST 2004
Base Bug(s): 3118677
7) Patch 3113003 applied on Sun Apr 04 09:04:45 JST 2004
Base Bug(s): 2968709


4. opatch query

이 명령어는 interim patch에 대한 정보를 조회한다.

- get_base_bug 옵션은 해당 interim patch에 의해 fix된 base bug를 조회한다.
- get_component 옵션은 해당 interim patch를 적용 시 요구되는 oracle component 를 나타낸다.
- get_date 옵션은 interim patch를 생성한 날짜를 보여준다.
- get_os 옵션은 해당 interim patch가 지원하는 platform을 보여준다.
- is_rolling 옵션은 rolling patch를 지원하는지에 대한 여부를 알려준다.
- all option은 위의 모든 정보들을 알려준다.


5. opatch version

이 명령어는 사용하는 opatch 유틸리티의 version을 보여준다.


6. 모든 opatch 명령어는 각 명령어에 대한 상세한 usage를 보여주는 -help 옵션을 가진다.

opatch.pl [ -help { [ apply | lsinventory | rollback | version ] }




+ Recent posts