DBA: Linux
  다운로드
Oracle Enterprise Linux
Oracle Database 11g and Clusterware
  태그
linux, rac, All

Oracle Enterprise Linux 환경을 위한 Oracle RAC 11g 업그레이드 가이드

Oracle Enterprise Linux 5 환경에서 Oracle RAC 10g Release 2를 Oracle RAC 11g로 업그레이드하는 방법을 단계별로 설명합니다.

저자 - Vincent Chan

게시일 2007년 10월

오라클은 최근 그리드 컴퓨팅을 위한 차세대 솔루션, Oracle Database 11g를 발표하였습니다. Oracle Database 11g는 그리드 컴퓨팅 환경을 위한 극적인 진보를 이룬 제품으로, 데이터베이스 가용성 및 관리성, 성능 모니터링, 진단, 데이터베이스 업그레이드 절차 등에 관련한 혁신적인 신기능을 포함하고 있습니다. 몇 가지 주목할만한 기능으로 Oracle Real Application Testing, 물리적 스탠바이 서버의 실시간 쿼리 지원, 새로운 파티셔닝 기능, Result Cache 등을 들 수 있습니다.

Oracle RAC 10g를 Oracle RAC 11g로 업그레이드하기 위해서 기본적으로 3가지 방법을 사용할 수 있습니다.

  • Oracle Database Upgrade Assistant (DBUA) 유틸리티를 활용
  • 수작업 업그레이드
  • Oracle 10g 데이터베이스의 내보내기 수행 후 Oracle 11g 데이터베이스에서 가져오기

오라클은 DBUA를 이용하여 데이터베이스와 ASM(Automatic Storage Management)을 업그레이드하는 방법을 권장하고 있습니다. DBUA는 많은 수작업 요소들을 자동화함으로써 전체 업그레이드 프로세스를 극적으로 단순화해 줍니다. 본 문서에서는 DBUA를 이용한 업그레이드 절차를 설명하고 있습니다.

본 가이드에 관련한 다운로드 자료가 아래와 같습니다:

  • Oracle Clusterware Release 1 (11.1.0.6.0) for Linux x86
  • Oracle Database 11g Release 1 (11.1.0.6.0) for Linux x86

개요

본 문서는 다음과 같은 목차로 구성되어 있습니다.

  1. 설치 준비
  2. Oracle Clusterware 업그레이드
  3. Oracle Database 11g Release 1 소프트웨어 설치
  4. Oracle Database 업그레이드
  5. Oracle ASM 업그레이드
  6. Oracle Database 11g 살펴 보기

업그레이드할 Oracle RAC 10g 환경이 아래와 같이 구성되어 있습니다:

호스트 네임 인스턴스 네임 데이터베이스 네임 클러스터웨어 파일 스토리지 데이터베이스 파일 스토리지
merlin1 devdb1 devdb Raw ASM
merlin2 devdb2 devdb Raw ASM


호스트 네임 Oracle Clusterware Home Oracle ASM Home Oracle Home
merlin1 /u02/crs/oracle /u01/app/oracle/product/10.2.0/db_1 /u01/app/oracle/product/10.2.0/db_1
merlin2 /u02/crs/oracle /u01/app/oracle/product/10.2.0/db_1 /u01/app/oracle/product/10.2.0/db_1


Oracle Clusterware 파일

디바이스 네임

Oracle Cluster Registry /dev/sdb1
Voting Disk /dev/sdc1

업그레이드 작업을 통해 구성되는 Oracle RAC 11g 환경이 아래와 같습니다:

호스트 네임 인스턴스 네임 데이터베이스 네임 클러스터웨어 파일 스토리지 데이터베이스 파일 스토리지
merlin1 devdb1 devdb Raw ASM
merlin2 devdb2 devdb Raw ASM


호스트 네임 Oracle Clusterware Home Oracle ASM Home Oracle Home
merlin1 /u02/crs/oracle /u01/app/oracle/product/11.1.0/asm /u01/app/oracle/product/11.1.0/db_1
merlin2 /u02/crs/oracle /u01/app/oracle/product/11.1.0/asm /u01/app/oracle/product/11.1.0/db_1


Oracle Clusterware 파일 디바이스 네임
Oracle Cluster Registry /dev/sdb1
Voting Disk /dev/sdc1

고가용성 및 이중화를 위해 각 노드의 Oracle Clusterware Home, Oracle ASM Home, Oracle Home에 소프트웨어를 설치하게 됩니다.

1. 설치 준비

전체 백업의 실행

Oracle RAC 11g로 업그레이드 하기 전에 Oracle RAC 10g 환경을 백업합니다.

필요한 소프트웨어 패키지의 설치.

아래의 패키지가 RAC 노드에 설치되어 있지 않다면, root 계정을 사용하여 설치 작업을 진행합니다. 아래 패키지들은 Enterprise-R5-GA-Server-i386-disc2.iso 파일과 Enterprise-R5-GA-Server-i386-disc3.iso 파일에서 추출할 수 있습니다.

  1. compat-libstdc++-33-3.2.3-61.i386.rpm
  2. elfutils-libelf-devel-0.125-3.e15.i386.rpm
  3. gcc-4.1.1-52.e15.i386.rpm
  4. gcc-c++-4.1.1-52.e15.i386.rpm
  5. glibc-devel-2.5-12.i386.rpm
  6. libaio-devel-0.3.106-3.2.i386.rpm
  7. libstdc++-devel-4.1.1-52.e15.i386.rpm
  8. sysstat-7.0.0-3.e15.i386.rpm
  9. unixODBC-2.2.11-7.1.i386.rpm
  10. unixODBC-devel-2.2.11-7.1.i386.rpm

패키지의 추출 작업을 완료한 뒤 root 사용자로 로그인하여 아래 커맨드를 실행합니다./p>

# ls -1
elfutils-libelf-devel-0.125-3.e15.i386.rpm
libaio-devel-0.3.106-3.2.i386.rpm
unixODBC-2.2.11-7.1.i386.rpm
unixODBC-devel-2.2.11-7.1.i386.rpm 
#
# rpm -Uvh *.rpm

커널 매개변수의 검증

기본적으로 요구되는 커널 매개변수 설정이 아래와 같습니다. 필요한 경우, 양쪽 노드의 /etc/sysctl.conf 파일에서 매개변수를 수정하시기 바랍니다.

kernel.shmall                = 2097152
kernel.shmmax                = 2147483648
kernel.shmmni                = 4096
kernel.sem                   = 250 32000 100 128
fs.file-max                  = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default        = 4194304
net.core.rmem_max            = 4194304
net.core.wmem_default        = 262144
net.core.wmem_max            = 262144

2. Oracle Clusterware 업그레이드

Oracle Clusterware를 버전 10.2.0.3으로 업그레이드

Oracle RAC 11g 업그레이드를 수행하려면 Oracle Clusterware의 버전이 10.2.0.3 이상이어야 합니다. 또는 롤링 업그레이드를 원하는 경우 10.2.0.2 + CRS Bundle Patch #2(Reference Bug 5256865)가 요구됩니다. 10.2.0.3 Patchset(5337014)은 Oracle Metalink에서 다운로드할 수 있습니다.

Linux x86을 위한 Oracle 10.2.0.3 Patchset에 관한 정보는 오라클 Metalink Note 419058.1을 참고하십시오.
merlin1-> crsctl query crs activeversion
CRS active version on the cluster is [10.2.0.3.0]

Oracle Clusterware 설치 전 점검 작업

Cluster Verification Utility(CVU)를 이용하면 RAC 설치에 수반되는 복잡성을 줄이고 작업 시간을 단축할 수 있습니다. 이 툴은 클러스터 환경의 전체 컴포넌트에 대한 스캔 작업을 통해, 설치에 필요한 모든 요구 사항을 만족하고 있는지 확인해 줍니다.

OTN에서 Oracle Clusterware 11.1.0.6 소프트웨어를 임시 디렉토리로 다운로드한 후 runcluvfy.sh를 실행합니다.

/stage/clusterware/runcluvfy.sh stage -pre crsinst -n all -verbose > /tmp/prechecks.log

모든 사전 요구 사항을 만족하는지 확인합니다. openmotif-2.2.3-3.RHEL3 패키지에 대해 "Package existence checked failed" 에러가 뜨는 경우 무시해도 좋습니다.

전체 데이터베이스 리소스의 실행을 종료.

merlin1-> srvctl stop database -d devdb
merlin1-> srvctl stop asm -n merlin1
merlin1-> srvctl stop asm -n merlin2
merlin1-> srvctl stop nodeapps -n merlin1
merlin1-> srvctl stop nodeapps -n merlin2
merlin1-> crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora.devdb.db   application    OFFLINE   OFFLINE
ora....b1.inst application    OFFLINE   OFFLINE
ora....b2.inst application    OFFLINE   OFFLINE
ora....SM1.asm application    OFFLINE   OFFLINE
ora....N1.lsnr application    OFFLINE   OFFLINE
ora....in1.gsd application    OFFLINE   OFFLINE
ora....in1.ons application    OFFLINE   OFFLINE
ora....in1.vip application    OFFLINE   OFFLINE
ora....SM2.asm application    OFFLINE   OFFLINE
ora....N2.lsnr application    OFFLINE   OFFLINE
ora....in2.gsd application    OFFLINE   OFFLINE
ora....in2.ons application    OFFLINE   OFFLINE
ora....in2.vip application    OFFLINE   OFFLINE

Oracle Clusterware Home의 업그레이드 준비

각 노드에서 preupdate.sh 스크립트를 실행하여 Clusterware Home의 업그레이드를 준비합니다. 이 스크립트는 Oracle Clusterware 스택을 종료하고 Oracle Clusterware Home 디렉토리의 파일 권한을 변경합니다.

root 사용자로 각 노드에 로그인하여 아래와 같이 실행합니다.
# cd /stage/clusterware/upgrade
# ./preupdate.sh -crshome /u02/crs/oracle -crsuser oracle
Shutting down Oracle Cluster Ready Services (CRS):
Stopping resources. This could take several minutes.
Successfully stopped CRS resources.
Stopping CSSD.
Shutting down CSS daemon.
Shutdown request successfully issued.
Shutdown has begun. The daemons should exit soon.
Checking to see if Oracle CRS stack is down...
Oracle CRS stack is down now.

Oracle Clusterware 업그레이드

Oracle Universal Installer(OUI)는 하나의 노드에서만 실행하면 됩니다. OUI는 다른 노드에 필요한 바이너리 소프트웨어를 자동으로 설치합니다.

oracle 계정으로 merlin1에 로그인하여 아래와 같이 실행합니다.

merlin1-> /stage/clusterware/runInstaller
  1. Welcome: Next를 클릭합니다.
  2. Specify Home Details: CRS_Home 디렉토리(/u02/crs/oracle)가 올바르게 표시되고 있는지 확인합니다.
  3. Specify Hardware Cluster Installation Mode: 모든 노드가 선택되었는지 확인합니다.
  4. Product-Specific Prerequisite Checks: 점검 작업이 성공적으로 실행되었는지 확인합니다.
  5. Summary: Install을 클릭합니다.
  6. Execute Configuration scripts: root 사용자로 로그인하여 아래 스크립트를 한 번에 하나씩 실행합니다. 현재 실행 중인 스크립트가 완료되기 전까지 다음 스크립트를 실행하지 않도록 주의합니다.
    1. Execute /u02/crs/oracle/install/rootupgrade on merlin1.
    2. Execute /u02/crs/oracle/install/rootupgrade on merlin2.

merlin1에서 아래와 같이 실행합니다.

# /u02/crs/oracle/install/rootupgrade
Checking to see if Oracle CRS stack is already up...

copying ONS config file to 11.1 CRS home
/bin/cp: `/u02/crs/oracle/opmn/conf/ons.config' and `/u02/crs/oracle/opmn/conf/ons.config' are the same file
/u02/crs/oracle/opmn/conf/ons.config was copied successfully to /u02/crs/oracle/opmn/conf/ons.config
WARNING: directory '/u02/crs' is not owned by root
WARNING: directory '/u02' is not owned by root
Oracle Cluster Registry configuration upgraded successfully
Adding daemons to inittab
Attempting to start Oracle Clusterware stack
Waiting for Cluster Synchronization Services daemon to start
Cluster Synchronization Services daemon has started
Waiting for Event Manager daemon to start
Event Manager daemon has started
Cluster Ready Services daemon has started
Oracle CRS stack is running under init(1M)
clscfg: EXISTING configuration version 3 detected.
clscfg: version 3 is 10g Release 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: merlin1 merlin1-priv merlin1
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
clscfg -upgrade completed successfully
CRS stack on this node, is successfully upgraded to 11.1.0.6.0
Checking the existence of nodeapps on this node
Creating '/u02/crs/oracle/install/paramfile.crs' with data used for CRS configuration
Setting CRS configuration values in /u02/crs/oracle/install/paramfile.crs

merlin2에서 아래와 같이 실행합니다.

# /u02/crs/oracle/install/rootupgrade
Checking to see if Oracle CRS stack is already up...

copying ONS config file to 11.1 CRS home
/bin/cp: `/u02/crs/oracle/opmn/conf/ons.config' and `/u02/crs/oracle/opmn/conf/ons.config' are the same file
/u02/crs/oracle/opmn/conf/ons.config was copied successfully to /u02/crs/oracle/opmn/conf/ons.config
WARNING: directory '/u02/crs' is not owned by root
WARNING: directory '/u02' is not owned by root
Oracle Cluster Registry configuration upgraded successfully
Adding daemons to inittab
Attempting to start Oracle Clusterware stack 
Waiting for Cluster Synchronization Services daemon to start
Cluster Synchronization Services daemon has started
Waiting for Event Manager daemon to start
Waiting for Event Manager daemon to start
Event Manager daemon has started
Cluster Ready Services daemon has started
Oracle CRS stack is running under init(1M)
clscfg: EXISTING configuration version 4 detected.
clscfg: version 4 is 11 Release 1.
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: merlin2 merlin2-priv merlin2
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
clscfg -upgrade completed successfully
CRS stack on this node, is successfully upgraded to 11.1.0.6.0
Checking the existence of nodeapps on this node
Creating '/u02/crs/oracle/install/paramfile.crs' with data used for CRS configuration
Setting CRS configuration values in /u02/crs/oracle/install/paramfile.crs


merlin1-> $ORA_CRS_HOME/bin/crsctl check crs
Cluster Synchronization Services appears healthy
Cluster Ready Services appears healthy
Event Manager appears healthy
merlin1-> $ORA_CRS_HOME/bin/crsctl query crs softwareversion
Oracle Clusterware version on node [merlin1] is [11.1.0.6.0] 
merlin1-> $ORA_CRS_HOME/bin/crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [11.1.0.6.0]

merlin2-> $ORA_CRS_HOME/bin/crsctl check crs 
Cluster Synchronization Services appears healthy
Cluster Ready Services appears healthy
Event Manager appears healthy
merlin2-> $ORA_CRS_HOME/bin/crsctl query crs softwareversion
Oracle Clusterware version on node [merlin2] is [11.1.0.6.0] 
merlin2-> $ORA_CRS_HOME/bin/crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [11.1.0.6.0]
  1. merlin1의 Execute Configuration Scripts 화면으로 돌아가 "OK"를 클릭합니다.
  2. Configuration Assistants: 모든 점검이 성공적으로 완료되었는지 확인합니다. OUI는 Clusterware 설치가 완료된 후 사후 점검 작업을 수행합니다. CVU가 실패한 경우 문제를 해결하고 다시 oracle 사용자로 아래 명령을 재실행합니다:
merlin1-> /u02/crs/oracle/bin/cluvfy stage -post crsinst -n merlin1,merlin2

Performing post-checks for cluster services setup

Checking node reachability...

Node reachability check passed from node "merlin1".


Checking user equivalence...

User equivalence check passed for user "oracle".					

Checking Cluster manager integrity...

Checking CSS daemon...

Daemon status check passed for "CSS daemon".

Cluster manager integrity check passed.

Checking cluster integrity...


Cluster integrity check passed


Checking OCR integrity...


Checking the absence of a non-clustered configuration...

All nodes free of non-clustered, local-only configurations.


Uniqueness check for OCR device passed.

Checking the version of OCR...
OCR of correct Version "2" exists.

Checking data integrity of OCR...
Data integrity check for OCR passed.

OCR integrity check passed.

Checking CRS integrity...


Checking daemon liveness...

Liveness check passed for "CRS daemon".

Checking daemon liveness...

Liveness check passed for "CSS daemon".

Checking daemon liveness...

Liveness check passed for "EVM daemon".

Checking CRS health...

CRS health check passed.

CRS integrity check passed.

Checking node application existence...


Checking existence of VIP node application (required)

Check passed.

Checking existence of ONS node application (optional)

Check passed.

Checking existence of GSD node application (optional)

Check passed.

Post-check for cluster services setup was successful.
  1. End of Installation: Exit를 클릭합니다.
Oracle Clusterware를 Oracle Clusterware 11g 업그레이드하는 작업이 완료되고, 클러스터 리소스가 정상적으로 실행되고 있음을 확인할 수 있을 것입니다.

merlin1-> $ORA_CRS_HOME/bin/crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora.devdb.db   application    ONLINE    ONLINE    merlin1
ora....b1.inst application    ONLINE    ONLINE    merlin1
ora....b2.inst application    ONLINE    ONLINE    merlin2
ora....SM1.asm application    ONLINE    ONLINE    merlin1
ora....N1.lsnr application    ONLINE    ONLINE    merlin1 
ora....in1.gsd application    ONLINE    ONLINE    merlin1
ora....in1.ons application    ONLINE    ONLINE    merlin1
ora....in1.vip application    ONLINE    ONLINE    merlin1
ora....SM2.asm application    ONLINE    ONLINE    merlin2
ora....N2.lsnr application    ONLINE    ONLINE    merlin2
ora....in2.gsd application    ONLINE    ONLINE    merlin2
ora....in2.ons application    ONLINE    ONLINE    merlin2
ora....in2.vip application    ONLINE    ONLINE    merlin2

3. Oracle Database 11g Release 1 소프트웨어 설치

Oracle Home 생성

oracle 계정으로 로그인하여 양쪽 노드에서 새로운 Oracle Home을 생성해 줍니다.

mkdir -p  /u01/app/oracle/product/11.1.0/db_1

Oracle Database 소프트웨어 설치

OTN에서 Oracle Database 소프트웨어를 다운로드합니다.
merline 1에서 oracle 계정으로 로그인하여 아래와 같이 실행합니다.

merlin1-> /stage/database/runInstaller
  1. Welcome: Next를 클릭합니다.
  2. Select Installation Type:
    1. Custom을 선택합니다.
  3. Specify Home Details:
    1. Oracle Base: /u01/app/oracle.
    2. Name: OraDb11g_home1
    3. Path: /u01/app/oracle/product/11.1.0/db_1
  4. Specify Hardware Cluster Installation Mode:
    1. Cluster Installation을 선택합니다.
    2. Select All을 클릭합니다.
  5. Product-Specific Prerequisite Checks: 점검 작업이 성공적으로 실행되었는지 확인합니다.
  6. Available Product Components: 필요한 모든 컴포넌트들을 선택합니다.
  7. Privileged Operating System Groups:
    1. Database Administrator (OSDBA) Group: dba.
    2. Database Operator (OSOPER) Group: oinstall.
    3. ASM administrator (OSASM) Group: dba.
  8. Create Database:
    1. Install database Software only를 선택합니다.
  9. Summary: Install을 클릭합니다.
  10. Execute Configuration scripts: root 사용자로 로그인하여 아래 스크립트를 실행합니다.
    1. Execute /u01/app/oracle/product/11.1.0/db_1/root.sh on merlin1.
    2. Execute /u01/app/oracle/product/11.1.0/db_1/root.sh on merlin2.
  11. merlin1의 Execute Configuration Scripts 화면으로 돌아가 OK를 클릭합니다.
  12. End of Installation: Exit를 클릭합니다.

4. Oracle Database 업그레이드

데이터베이스 업그레이드를 위한 사전 점검

Database Upgrade Assistant(DBUA)를 실행하기 전에, 데이터베이스 업그레이드 사전 점검을 위해 utlu111i.sql 스크립트를 실행하고 모든 사전 요구 사항을 만족하는지 확인합니다. 업그레이드 절차가 진행되는 동안, DBUA는 cluster_database 매개변수를 true에서 false로 자동 변경합니다. 필요한 변경 작업을 모두 완료한 후 다시 한 번 utlu111i.sql 스크립트를 실행합니다.

sys 사용자로 로그인하여 아래와 같이 실행합니다.

SQL> spool /tmp/utlu111i.log
SQL> @/u01/app/oracle/product/11.1.0/db_1/rdbms/admin/utlu111i
Oracle Database 11.1 Pre-Upgrade Information Tool    08-13-2007 18:03:45        
.                                                                               
**********************************************************************          
Database:                                                                       
**********************************************************************          
--> name:          DEVDB                                                        
--> version:       10.2.0.3.0                                                   
--> compatible:    10.2.0.1.0                                                   
--> blocksize:     8192                                                         
--> platform:      Linux IA (32-bit)                                            
--> timezone file: V4                                                           
.                                                                               
**********************************************************************          
Tablespaces: [make adjustments in the current environment]                      
**********************************************************************          
--> SYSTEM tablespace is adequate for the upgrade.                              
.... minimum required size: 743 MB                                              
--> UNDOTBS1 tablespace is adequate for the upgrade.                            
.... minimum required size: 315 MB                                              
--> SYSAUX tablespace is adequate for the upgrade.                              
.... minimum required size: 458 MB                                              
--> TEMP tablespace is adequate for the upgrade.                                
.... minimum required size: 61 MB                                               
--> EXAMPLE tablespace is adequate for the upgrade.                             
.... minimum required size: 66 MB                                               
.                                                                               
**********************************************************************          
Update Parameters: [Update Oracle Database 11.1 init.ora or spfile]             
**********************************************************************          
-- No update parameter changes are required.                                    
.                                                                               
**********************************************************************          
Renamed Parameters: [Update Oracle Database 11.1 init.ora or spfile]            
**********************************************************************          
-- No renamed parameters found. No changes are required.                        
.                                                                               
**********************************************************************          
Obsolete/Deprecated Parameters: [Update Oracle Database 11.1 init.ora or spfile]
**********************************************************************          
--> "background_dump_dest" replaced by  "diagnostic_dest"                       
--> "user_dump_dest" replaced by  "diagnostic_dest"                             
--> "core_dump_dest" replaced by  "diagnostic_dest"                             
.                                                                               
**********************************************************************          
Components: [The following database components will be upgraded or installed]   
**********************************************************************          
--> Oracle Catalog Views         [upgrade]  VALID                               
--> Oracle Packages and Types    [upgrade]  VALID                               
--> JServer JAVA Virtual Machine [upgrade]  VALID                               
--> Oracle XDK for Java          [upgrade]  VALID                               
--> Real Application Clusters    [upgrade]  VALID                               
--> Oracle Workspace Manager     [upgrade]  VALID                               
--> OLAP Analytic Workspace      [upgrade]  VALID                               
--> OLAP Catalog                 [upgrade]  VALID                               
--> EM Repository                [upgrade]  VALID                               
--> Oracle Text                  [upgrade]  VALID                               
--> Oracle XML Database          [upgrade]  VALID                               
--> Oracle Java Packages         [upgrade]  VALID                               
--> Oracle interMedia            [upgrade]  VALID                               
--> Spatial                      [upgrade]  VALID                               
--> Data Mining                  [upgrade]  VALID                               
--> Expression Filter            [upgrade]  VALID                               
--> Rule Manager                 [upgrade]  VALID                               
--> Oracle OLAP API              [upgrade]  VALID                               
.                                                                               
**********************************************************************          
Miscellaneous Warnings                                                          
**********************************************************************          
WARNING: --> The "cluster_database" parameter is currently "TRUE" and must be   
set to "FALSE" prior to running the upgrade.                                    
WARNING: --> Database contains stale optimizer statistics.                      
.... Refer to the 11g Upgrade Guide for instructions to update                  
.... statistics prior to upgrading the database.                                
.... Component Schemas with stale statistics:                                   
....   SYS                                                                      
WARNING: --> Database contains schemas with objects dependent on network        
packages.                                                                       
.... Refer to the 11g Upgrade Guide for instructions to configure Network ACLs. 
WARNING: --> EM Database Control Repository exists in the database.             
.... Direct downgrade of EM Database Control is not supported. Refer to the     
.... 11g Upgrade Guide for instructions to save the EM data prior to upgrade.   
.                                                                               

PL/SQL procedure successfully completed.

SQL> spool off

오라클 사용자 환경 파일의 수정

양쪽 노드에서 ORACLE_HOME이 새로운 Oracle Database 11g 디렉토리를 참조하도록 변경해 줍니다.

merlin1-> more .profile
export PS1="`/bin/hostname -s`-> "
export EDITOR=vi
export ORACLE_SID=devdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1
export ORA_CRS_HOME=/u02/crs/oracle
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/loca
l/bin:/usr/X11R6/bin
umask 022

데이터베이스의 업그레이드

oracle 계정으로 merlin1에 로그인하여 dbua를 실행합니다.

merlin1-> . ./.profile
merlin1-> which dbua
/u01/app/oracle/product/11.1.0/db_1/bin/dbua  
merlin1-> dbua
  1. Welcome: Next를 클릭합니다.
  2. Upgrade Operations: Upgrade a Database를 선택합니다.
  3. Databases: devdb를 선택합니다.
  4. Database Upgrade Assistant: Yes를 클릭하여 기존 리스너의 마이그레이션을 실행합니다.



그림 1

  1. Database Upgrade Assistant: No 를 클릭하여 ASM을 나중에 업그레이드하기로 합니다.

 



그림 2

  1. Diagnostic Destination:
    1. Oracle Base: /u01/app/oracle
    2. Diagnostic Destination: /u01/app/oracle



그림 3

 

  1. Recovery Configuration:
    1. Specify Flash Recovery Area를 선택합니다.
    2. Flash Recovery Area: +RECOVERYDEST.
    3. Flash Recovery Area Size: 2048 MB.
  2. Recompile Invalid Objects: Recompile invalid objects at the end of upgrade를 선택합니다.
  3. Summary: Finish를 클릭합니다.



그림 4



그림 5

 

  1. Progress: OK를 클릭하여 업그레이드 결과를 확인합니다.
  2. Upgrade Results: Close를 클릭합니다.
SQL> select comp_name,version,status from dba_registry;

COMP_NAME                               VERSION    STATUS                       
--------------------------------------- ---------- ------                       
Oracle Enterprise Manager               11.1.0.6.0 VALID                        
OLAP Catalog                            11.1.0.6.0 VALID                        
Spatial                                 11.1.0.6.0 VALID                        
Oracle Multimedia                       11.1.0.6.0 VALID                        
Oracle XML Database                     11.1.0.6.0 VALID                        
Oracle Text                             11.1.0.6.0 VALID                        
Oracle Data Mining                      11.1.0.6.0 VALID                        
Oracle Expression Filter                11.1.0.6.0 VALID                        
Oracle Rule Manager                     11.1.0.6.0 VALID                        
Oracle Workspace Manager                11.1.0.6.0 VALID                        
Oracle Database Catalog Views           11.1.0.6.0 VALID                        
Oracle Database Packages and Types      11.1.0.6.0 VALID                        
JServer JAVA Virtual Machine            11.1.0.6.0 VALID                        
Oracle XDK                              11.1.0.6.0 VALID                        
Oracle Database Java Packages           11.1.0.6.0 VALID                        
OLAP Analytic Workspace                 11.1.0.6.0 VALID                        
Oracle OLAP API                         11.1.0.6.0 VALID                        
Oracle Real Application Clusters        11.1.0.6.0 VALID                        

18 rows selected.

merlin1-> srvctl config database -d devdb
merlin1 devdb1 /u01/app/oracle/product/11.1.0/db_1
merlin2 devdb2 /u01/app/oracle/product/11.1.0/db_1

merlin1-> $ORA_CRS_HOME/bin/crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora.devdb.db   application    ONLINE    ONLINE    merlin1
ora....b1.inst application    ONLINE    ONLINE    merlin1
ora....b2.inst application    ONLINE    ONLINE    merlin2
ora....SM1.asm application    ONLINE    ONLINE    merlin1
ora....N1.lsnr application    ONLINE    ONLINE    merlin1
ora....in1.gsd application    ONLINE    ONLINE    merlin1
ora....in1.ons application    ONLINE    ONLINE    merlin1
ora....in1.vip application    ONLINE    ONLINE    merlin1
ora....SM2.asm application    ONLINE    ONLINE    merlin2
ora....N2.lsnr application    ONLINE    ONLINE    merlin2
ora....in2.gsd application    ONLINE    ONLINE    merlin2
ora....in2.ons application    ONLINE    ONLINE    merlin2
ora....in2.vip application    ONLINE    ONLINE    merlin2

새로운 진단 위치를 확인합니다.

SQL> select name, value from v$parameter where name like '%dump_dest' or name like 'diag%';

NAME                 VALUE
-------------------- --------------------------------------------------
background_dump_dest /u01/app/oracle/diag/rdbms/devdb/devdb1/trace
user_dump_dest       /u01/app/oracle/diag/rdbms/devdb/devdb1/trace
core_dump_dest       /u01/app/oracle/diag/rdbms/devdb/devdb1/cdump
diagnostic_dest      /u01/app/oracle

5. Oracle ASM 업그레이드

ASM Home을 별도로 지정하는 것은 필수 사항은 아닙니다. 하지만 ASM Home을 별도로 지정함으로써 Oracle RDBMS Home과 ASM Home에 각각 다른 패치 또는 패치셋을 적용할 수 있다는 이점이 있습니다. 하나의 노드에서 여러 개의 데이터베이스 인스턴스를 실행하는 경우라면 ASM Home과 RDBMS Home을 별도로 지정하는 것이 특히 도움이 됩니다. Oracle RDBMS Home을 패치하더라도 ASM 인스턴스의 가용성을 영향을 받지 않기 때문입니다.

아직까지 ASM Home은 Oracle Database 10g Home에서 실행되고 있는 상황입니다.

merlin1-> srvctl config asm -n merlin1
+ASM1 /u01/app/oracle/product/10.2.0/db_1
merlin1-> srvctl config asm -n merlin2
+ASM2 /u01/app/oracle/product/10.2.0/db_1

ASM Home의 생성

oracle 계정으로 로그인하여 양쪽 노드에서 새로운 ASM Home을 생성해 줍니다.

mkdir /u01/app/oracle/product/11.1.0/asm 
쉘 프로파일에서 새로운 ASM Home의 설정을 반영하여 ORACLE_HOME 변수를 수정해 줍니다.

ORACLE_HOME=/u01/app/oracle/product/11.1.0/asm

ASM에 Oracle Database 11g Release 1 소프트웨어 설치

oracle 계정으로 merlin1에 로그인하여 아래와 같이 실행합니다.

merlin1-> . ./.profile 
merlin1-> /stage/database/runInstaller
  1. Welcome: Next를 클릭합니다.
  2. Select Installation Type:
    1. Enterprise Edition를 클릭합니다. .
  3. Specify Home Details:
    1. Oracle Base: /u01/app/oracle.
    2. Name: OraASM11g_home.
    3. Path: /u01/app/oracle/product/11.1.0/asm.
  4. Specify Hardware Cluster Installation Mode:
    1. Cluster Installation을 선택합니다.
    2. Select All을 클릭합니다.
  5. Product-Specific Prerequisite Checks: 점검 작업이 성공적으로 실행되었는지 확인합니다.
  6. Upgrade an Existing Database:
    1. Do you want to perform an upgrade now?: No.
  7. Select Configuration Option:
    1. Install Software Only를 선택합니다.
  8. Privileged Operating System Groups:
    1. Database Administrator (OSDBA) Group: dba
    2. Database Operator (OSOPER) Group: oinstall
    3. ASM administrator (OSASM) Group: dba
  9. Summary: Install을 클릭합니다.
  10. Execute Configuration scripts: root 사용자로 로그인하여 아래 스크립트를 실행합니다.
    1. Execute /u01/app/oracle/product/11.1.0/asm/root.sh on merlin1.
    2. Execute /u01/app/oracle/product/11.1.0/asm/root.sh on merlin2.
  11. merlin1의 Execute Configuration Scripts 화면으로 돌아가 OK를 클릭합니다.
  12. End of Installation: Exit를 클릭합니다.

ASM 업그레이드

merlin1에 oracle 사용자로 로그인하여 데이터베이스의 실행을 중단하고 DBUA를 실행합니다.

merlin1-> srvctl stop database -d devdb
merlin1-> /u01/app/oracle/product/11.1.0/asm/bin/dbua
  1. Welcome: Next를 클릭합니다.
  2. Upgrade Operations: Upgrade Automatic Storage Management Instance를 선택합니다.
  3. Summary: Finish를 클릭합니다.



그림 6



그림 7

  1. Progress: OK를 클릭하여 업그레이드 결과를 확인합니다.
  2. Upgrade Results: Close를 클릭합니다.
merlin1-> srvctl config asm -n merlin1
+ASM1 /u01/app/oracle/product/11.1.0/asm
merlin1-> srvctl config asm -n merlin2
+ASM2 /u01/app/oracle/product/11.1.0/asm
merlin1-> srvctl start database -d devdb
merlin1-> crs_stat -t 
Name           Type           Target    State     Host
------------------------------------------------------------
ora.devdb.db   application    ONLINE    ONLINE    merlin1
ora....b1.inst application    ONLINE    ONLINE    merlin1
ora....b2.inst application    ONLINE    ONLINE    merlin2
ora....SM1.asm application    ONLINE    ONLINE    merlin1
ora....N1.lsnr application    ONLINE    ONLINE    merlin1
ora....in1.gsd application    ONLINE    ONLINE    merlin1
ora....in1.ons application    ONLINE    ONLINE    merlin1
ora....in1.vip application    ONLINE    ONLINE    merlin1
ora....SM2.asm application    ONLINE    ONLINE    merlin2
ora....N2.lsnr application    ONLINE    ONLINE    merlin2
ora....in2.gsd application    ONLINE    ONLINE    merlin2
ora....in2.ons application    ONLINE    ONLINE    merlin2
ora....in2.vip application    ONLINE    ONLINE    merlin2



그림 8

Disk Group Compatibility 속성과 Database Compatibility 매개변수의 수정

마지막 단계로, Oracle Database 11g의 새로운 기능들을 활용하기 위해 database compatibility 매개변수와 disk group compatibility 속성을 11.1.0으로 변경해 주어야 합니다.

devdb1 인스턴스에서 아래와 같이 실행합니다.

SQL> show parameter compatible
NAME                     TYPE        VALUE
------------------------ ----------- -------------------------
compatible                           string      10.2.0.1.0

SQL> alter system set compatible='11.1.0' scope=spfile;
System altered.
On merlin1, restart the database,

merlin1-> srvctl stop database -d devdb
merlin1-> srvctl start database -d devdb

On ASM1 instance,

SQL> select name,compatibility,database_compatibility from 
v$asm_diskgroup;

NAME            COMPATIBILITY DATABASE_COMPATIBILI
--------------- ------------- --------------------
DG1             10.1.0.0.0    10.1.0.0.0
RECOVERYDEST    10.1.0.0.0    10.1.0.0.0

SQL> alter diskgroup dg1 set attribute 'compatible.asm'='11.1.0';

Diskgroup altered.

SQL> alter diskgroup dg1 set attribute 'compatible.rdbms'='11.1.0';

Diskgroup altered.

SQL> alter diskgroup recoverydest set attribute 'compatible.asm'='11.1.0';

Diskgroup altered.

SQL> alter diskgroup recoverydest set attribute 'compatible.rdbms'='11.1.0';

Diskgroup altered.

SQL> select name,compatibility,database_compatibility from v$asm_diskgroup;

NAME            COMPATIBILITY DATABASE_COMPATIBILI
--------------- ------------- --------------------
DG1             11.1.0.0.0    11.1.0.0.0
RECOVERYDEST    11.1.0.0.0    11.1.0.0.0


6. Oracle Database 11g 살펴 보기

이 섹션에서는 Oracle Database 11g의 몇 가지 새로운 기능에 대해 간단히 소개하고 있습니다. 11g의 신기능에 대한 자세한 정보가 필요하신 경우, Oracle Database New Features Guide 11g Release 1 (11.1)을 확인하시기 바랍니다.

Automatic Memory Management - Oracle Database 11g가 새로이 제공하는 다이내믹 매개변수 memory_target을 이용하여 메모리 관리의 자동화 수준을 더욱 개선할 수 있습니다. 관리자가 전체 인스턴스 메모리 사이즈만 설정해주면 데이터베이스가 SGA와 PGA에 메모리 리소스를 자동으로 할당하여 관리합니다. 또 v$memory_target_advice 뷰를 이용하면 메모리 튜닝에 관련한 조언을 제공받을 수 있습니다.

Interval Partitioning - 삽입된 로우가 파티션 영역을 벗어나는 경우 자동으로 파티션 테이블을 생성함으로써 파티션의 관리 편의성을 개선해 주는 기능입니다.

정수 값을 기준으로 한 파티셔닝

SQL> create table patients (
  2  patientid number not null,name varchar2(10),address varchar2(15)
  3  )
  4  partition by range (patientid)
  5  interval (100)
  6  (partition p1 values less than (100))
  7  /

Table created.

SQL> select partition_name,high_value
  2  from user_tab_partitions
  3  where table_name='PATIENTS';

PARTITION_NAME  HIGH_VALUE
--------------- ---------------
P1              100

SQL> insert into patients values (100,'ROBERT','4 BORNE AVE');

1 row created.

SQL> select partition_name,high_value
  2  from user_tab_partitions
  3  where table_name='PATIENTS';

PARTITION_NAME  HIGH_VALUE
--------------- ---------------
P1              100
SYS_P81         200

SQL> select count(*) from patients partition (SYS_P81);

  COUNT(*)
----------
         1

날짜를 기준으로 한 파티셔닝

SQL> create table userlogs (
  2  transid number,
  3  transdt date,
  4  terminal varchar2(10)
  5  )
  6  partition by range (transdt)
  7  interval (numtoyminterval(1,'YEAR'))
  8  (
  9     partition p1 values less than (to_date('01-01-2007','mm-dd-yyyy'))
 10  );

Table created.

SQL> select partition_name,high_value
  2  from user_tab_partitions
  3  where table_name='USERLOGS';

PARTITION_NAME HIGH_VALUE
-------------- --------------------------------------------------------------------------------
P1             TO_DATE(' 2007-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA


SQL> insert into userlogs values (1,'11-AUG-07','XAV0004');

1 row created.

SQL> select partition_name,high_value
  2  from user_tab_partitions
  3  where table_name='USERLOGS';

PARTITION_NAME HIGH_VALUE
-------------- --------------------------------------------------------------------------------
P1             TO_DATE(' 2007-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P42        TO_DATE(' 2008-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA


SQL> select count(*) from userlogs partition (sys_p42);

  COUNT(*)
----------
         1
Reference Partitioning - 부모 테이블에 적용된 파티셔닝 방법을 기준으로 자식 테이블의 파티셔닝을 자동 수행합니다.

SQL> create table patients (
  2  patientid number not null,name varchar2(10), address varchar2(15)
  3  )
  4  partition by range (patientid)
  5  (partition p1 values less than (100),
  6   partition p2 values less than (200))
  7  /

Table created.
SQL> alter table patients
  2  add constraint patients_pk primary key (patientid);

Table altered.

SQL> create table invoices (
  2  invoiceno number,amount number, patientid number not null,
  3  constraint invoices_fk
  4  foreign key (patientid) references patients
  5  )
  6  partition by reference (invoices_fk);

Table created.

SQL> select dbms_metadata.get_ddl('TABLE','INVOICES','VCHAN') from dual;

DBMS_METADATA.GET_DDL('TABLE','INVOICES','VCHAN')
-----------------------------------------------------------------------
  CREATE TABLE "VCHAN"."INVOICES"
   (    "INVOICENO" NUMBER,
        "AMOUNT" NUMBER,
        "PATIENTID" NUMBER NOT NULL ENABLE,
         CONSTRAINT "INVOICES_FK" FOREIGN KEY ("PATIENTID")
          REFERENCES "VCHAN"."PATIENTS" ("PATIENTID") ENABLE
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
  STORAGE(
  BUFFER_POOL DEFAULT)
  PARTITION BY REFERENCE ("INVOICES_FK")
 (PARTITION "P1"
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "USERS" NOCOMPRESS ,
 PARTITION "P2"
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "USERS" NOCOMPRESS )

SQL> insert into patients values (1,'TOBY','88 Palace Ave');

1 row created.

SQL> insert into invoices values (150,262.12,1);

1 row created.

SQL> select count(*) from invoices partition (p1);

  COUNT(*)
----------
         1

SQL> select count(*) from invoices partition (p2);

  COUNT(*)
----------
         0

SQL> insert into patients values (110,'GILY','512 HILE STREET');

1 row created.

SQL> insert into invoices values (151,500.01,110);

1 row created.

SQL> select count(*) from invoices partition (p1);

  COUNT(*)
----------
         1

SQL> select count(*) from invoices partition (p2);

  COUNT(*)
----------
         1
Table Compression - Oracle Database 11g는 압축된 테이블에 대한 DML 및 Drop Column 작업을 지원합니다. 읽기 과정에서 압축된 데이터의 압축을 풀 필요가 없으므로 I/O가 최소화되며, 따라서 압축된 데이터에 대한 쿼리 성능을 크게 개선할 수 있습니다.
SQL> create tablespace tbs1 datafile '/u01/app/oracle/oradata/db11g/tbs1_01.dbf' size 500M;

Tablespace created.

SQL> create tablespace tbs2 datafile '/u01/app/oracle/oradata/db11g/tbs2_01.dbf' size 500M;

Tablespace created.

SQL> create table mytable_compress (col1 varchar2(26),col2 varchar2(26)) tablespace tbs1 compress for all operations;

Table created.

SQL> create table mytable_nocompress (col1 varchar2(26),col2 varchar2(26)) tablespace tbs2;

Table created.

SQL> alter system flush buffer_Cache;

System altered.

SQL> alter system flush shared_pool;

System altered.

SQL> set timing on

SQL> insert into mytable_nocompress
  2  select 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  3  from (select 1 from dual connect by level <= 2000000);

2000000 rows created.

Elapsed: 00:00:8.07

SQL> commit;

Commit complete.

Elapsed: 00:00:00.07

SQL> alter system flush buffer_Cache;

System altered.

SQL> alter system flush shared_pool;

System altered.

SQL> insert into mytable_compress
  2  select 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  3  from (select 1 from dual connect by level <= 2000000);

2000000 rows created.

Elapsed: 00:00:41.79

SQL> commit;

Commit complete.

Elapsed: 00:00:00.04

SQL> select segment_name,extents from user_segments where segment_name like 'MYTABLE%';

SEGMENT_NAME                      EXTENTS
------------------------------ ----------
MYTABLE_COMPRESS                       53
MYTABLE_NOCOMPRESS                     88


SQL> select tablespace_name,bytes/1024/1024 from dba_free_space where tablespace_name like 'TBS%';

TABLESPACE_NAME                BYTES/1024/1024
------------------------------ ---------------
TBS1                                  461.9375
TBS2                                  363.9375


SQL> alter table mytable_compress drop column col2;

Table altered.

Elapsed: 00:00:21.04

결론:

본 가이드에서 소개한 것처럼, 오라클 데이터베이스의 새로운 버전이 발표될 때마다 한층 단순하고 최적화된 업그레이드 절차가 제공되고 있습니다. 상세한 설치 방법은 Oracle Database Upgrade Guide 11g Release 1에서 확인하실 수 있습니다. 이 가이드를 통해 RAC 환경으로 업그레이드하는 기본적인 방법을 확인하셨으리라 믿습니다. Oracle Database 11g로 환경을 업그레이드한 후, 차세대 데이터베이스 환경이 제공하는 강력한 기능을 체험해 보시기 바랍니다.


Vincent Chan [vkchan99@yahoo.com]은 Lockheed Martin Corporation의 수석 컨설턴트입니다. 빈센트는 Oracle Certified Master DBA 자격을 소유하고 있으며 많은 고객들을 대상으로 10여 년에 걸쳐 오라클 솔루션의 설계를 지원해 왔습니다.

E-mail this page
Printer View Printer View