oracle10g r2 real application cluster set up & fail over 구현

110
Learn Oracle From Oracle 2006 Innovative Technology Seminar Oracle10g R2 Real Application Cluster Set up & Fail over 구현 강사 : 신 종근 일시 : 2006. 05. 26

Upload: others

Post on 24-Apr-2022

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

Learn Oracle From Oracle2006 Innovative Technology Seminar

Oracle10g R2 Real Application ClusterSet up & Fail over 구현

강사 : 신 종 근일시 : 2006. 05. 26

Page 2: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

22006 Innovative Technology Seminar

ContentsContents

I. RAC Architecture

II. 각 Platform 별 RAC 구성하기

III. RAC Maintenance

IV. RAC Backup & Recovery

V. RAC Fail-Over Test

VI. dd command 를 활용한 Data Migration

VII. Error & Trouble-Shooting

VIII. QnA

Page 3: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

32006 Innovative Technology Seminar

I. RAC ArchitectureI. RAC Architecture

1.1. Server ArchitectureServer Architecture

2.2. 8i OPS Architecture8i OPS Architecture

3.3. 9i RAC Architecture9i RAC Architecture

4.4. 10g CRS Architecture10g CRS Architecture

5.5. 10g RAC Architecture10g RAC Architecture

6.6. Cluster Verification UtilityCluster Verification Utility

Page 4: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

42006 Innovative Technology Seminar

II--1. Server Architecture1. Server Architecture

Page 5: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

52006 Innovative Technology Seminar

II--2. 8i OPS Architecture2. 8i OPS Architectureoracle8i Oracle Parallel Server(OPS)의 경우(8i에서 사용)

아래의 구조를 가지는 OPS의 경우 node A 에서 DML문에 의해서 변경된 값을 node B에 접속한 유저가같은 데이터를 변경하려 할 경우, node A 는 Disk에 자신의 DML 결과를 쓰고, node B에서 그 DML 결과를메모리에 읽어서 DML문을 처리하는 방식이었다. 이를 핑(ping)이라고 부른다.당연히 디스크에 쓰고 다시 읽어서 처리해야 하는 문제점을 가지고 있었다. (Disk 동기화!!)

Node A Node B

Disk

Page 6: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

62006 Innovative Technology Seminar

II--2. 8i OPS Architecture2. 8i OPS Architecture

LCKnLCKn

Distribute Lock Manager(DLM)

CPU * nCPU * nNODE 1

LGWRLGWR DBWRDBWR

UserUser

Database Files& Control Files

RedoLogFiles

LCKnLCKn

CPU * nCPU * n

S.G.ANODE 2

LGWRLGWR DBWRDBWR

UserUserRedoLogFiles

LCKnLCKn

CPU * nCPU * n

S.G.ANODE 3

LGWRLGWR DBWRDBWR

UserUserRedoLogFiles

ArchivalDestination

S.G.A

8i OPS Architecture

Page 7: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

72006 Innovative Technology Seminar

II--3. 9i RAC Architecture3. 9i RAC Architecture

Oracle9i Oracle Real Application Clusters

RAC 시스템은 node 간에 내부 네트워크가 구성되어 있다. 그래서 node A 에서 DML 문에 의해서 변경된데이터를 node B에서 요구할 경우, node A는 Inter-Connect 네트워크로 node B에 db block을 전송한다.이를 Cache Fusion 이라고 한다. 디스크는 Shared Disk로 구성되어 있다.

Disk

Node A Node B

interconnect

Page 8: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

82006 Innovative Technology Seminar

Oracle9i RAC Architecture

Global Cache Service

USERUSER

SGA

Node 1, Instance A

USERUSERUSERUSER DBWRDBWR LGWRLGWR

DatabaseDatabaseBufferBufferCacheCache

Redo LogRedo LogBuffersBuffers

LCK0LCK0

DataDataDataData

USERUSER

SGA

Node 2, Instance B

USERUSERUSERUSER DBWRDBWR LGWRLGWR

DatabaseDatabaseBufferBufferCacheCache

Redo LogRedo LogBuffersBuffers

LCK0LCK0

RedoRedoRedoRedo RedoRedo

Control

9i Cache Fusion9i Cache Fusion

II--3. 9i RAC Architecture3. 9i RAC Architecture

Page 9: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

92006 Innovative Technology Seminar

II--3. 9i RAC Architecture3. 9i RAC ArchitectureOPS vs RAC 용어 변경

• RAC

• 9i, 10g

• Cluster Database

• Cache Transfer

• Global Cache Service

• Global Enqueue Service

• Resource mastering

• Global Resource Directory

• Global Cache Manager

• Real Application Clusters Guard

• OBSOLETE

• Global Cache Resource

• OPS

• 7, 8, 8i

• Parallel Server

• ping

• PCM locking

• Non-PCM locking

• lock mastering

• Lock DB

• DLM

• OPFS

• fixed, hashed locks

• releasable locks

Page 10: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

102006 Innovative Technology Seminar

Node1

OCR cache

OCRprocess

Clientprocess

Node2

OCR cache

OCRprocess

Node3

OCR cache

OCRprocess

Clientprocess

OCRfile

Shared storage

II--4. 10g CRS Architecture4. 10g CRS ArchitectureOCR Architecture

Page 11: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

112006 Innovative Technology Seminar

Logical Architecture

public network

operating System

CSS/CRS

Oracle RAC 10g instance 1

server 1

shared storage

redo log instance 1 …

redo log instance 3 …

control files

database files

server 2

operating system

CSS/CRS

Oracle RAC 10gInstance 2

clusterinterconnect

cache to cache

DB cache DB cache

ocr

voting

Server 3, 4, ….

II--5. 10g RAC 5. 10g RAC ArachitectureArachitecture

Page 12: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

122006 Innovative Technology Seminar

II--5. 10g RAC 5. 10g RAC ArachitectureArachitecture

Page 13: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

132006 Innovative Technology Seminar

II--5. 10g RAC 5. 10g RAC ArachitectureArachitecture

Page 14: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

142006 Innovative Technology Seminar

II--5. 10g RAC 5. 10g RAC ArachitectureArachitecture

Page 15: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

152006 Innovative Technology Seminar

RAC Instances and Services

10G

Node 2 Node 3 Node 4Node 1

Listener

OEM Listener OEM Listener OEMListener

OEM

Self-Service

CRM ERP BatchPayroll

Cluster Ready Services

RAC Instance 2

RAC Instance 3

RAC Instance 4

RAC Instance 1

Payroll Service

ERP Service

CRM ServiceCRM Service

Payroll Service

ERP Service

Self-Service

Payroll Service

CRM Service

Self-ServiceSelf-Service

Payroll Service

CRM Service

ERP ServiceSelf-Service

Batch ServiceBatch ServiceBatch ServiceBatch Service

ERP Service

II--5. 10g RAC 5. 10g RAC ArachitectureArachitecture

Page 16: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

162006 Innovative Technology Seminar

II--6. Cluster Verification Utility6. Cluster Verification Utility

Pre-Install Check !!

1. 10g RDBMS 설치전에 반드시 Pre-Install Check 를 하도록 한다.Metalink ID : 283750.1에서 해당 Check File 을 Download 한다.

2. Pre-Install 하는 방법- .profile 에 PERL 관련 환경변수를 설정한다.export PATH=/opt/perl/bin:$PATHexport PERL5LIB=/opt/perl/lib

- 아래 validate 를 실행 후 txt 파일에서 해당되는 OS Patch 를 먼저 한다.# validate 10g_rdbms_solaris.txt OR # perl validate.pl 10g_rdbms_solaris.txt

Page 17: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

172006 Innovative Technology Seminar

II--6. Cluster Verification Utility6. Cluster Verification UtilityUsing Cluster Verification Utility

** cluvfy Stage List

$> ./cluvfy stage -list:: Valid stage options and stage names are:

-post hwos : post-check for hardware & operating system-pre cfs : pre-check for CFS setup-post cfs : post-check for CFS setup-pre crsinst : pre-check for CRS installation-post crsinst : post-check for CRS installation-pre dbinst : pre-check for database installation-pre dbcfg : pre-check for database configuration

** cluvfy Component List

$> ./cluvfy comp -list:: Valid components are:

nodereach : checks reachability between nodesnodecon : checks node connectivitycfs : checks CFS integrityssa : checks shared storage accessibilityspace : checks space availabilitysys : checks minimum system requirementsclu : checks cluster integrityclumgr : checks cluster manager integrityocr : checks OCR integritycrs : checks CRS integritynodeapp : checks node applications existenceadmprv : checks administrative privilegespeer : compares properties with peers

-post hwos

-pre cfs

-post cfs

-pre crsinst

-post crsinst

-pre dbinst

-pre dbcfg

User sets up the H/W, N/W,

StorageSets up OCFS (OPT)

Install CRS

Install RAC

Configures RAC DB

CommandsStep

Page 18: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

182006 Innovative Technology Seminar

II--6. Cluster Verification Utility6. Cluster Verification Utility

cluvfy Install

1. Download ::www.oracle.com/technology/products/database/clustering/cvu/cvu_download_homepage.html

2. unzip cvupack.zipexport CV_HOME=/oh10g/ora10g2/cluvfyexport CV_JDKHOME=/usr/java14 export CV_DESTLOC=/tmp

3. 실행하기cd bin ./cluvfy comp nodecon -n node1,node2 –verbose./cluvfy stage -post hwos -n node1,node2./cluvfy comp ssa -n node1,node2 -s /dev/sda./cluvfy comp sys -n node1,node2 -p crs -osdba crs -orainv oinstall

Page 19: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

192006 Innovative Technology Seminar

II. II. 각각 Platform Platform 별별 RAC RAC 구성구성

1.1. 10g RAC 10g RAC 구성방법구성방법

2.2. Network BondingNetwork Bonding

3. 10g CRS 3. 10g CRS 구성구성

4. 10g RAC 4. 10g RAC 구성구성

5. 5. QnAQnA

Page 20: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

202006 Innovative Technology Seminar

IIII--1. 10g RAC 1. 10g RAC 구성방법구성방법

RAC with Raw-Disk

Page 21: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

212006 Innovative Technology Seminar

IIII--1. 10g RAC 1. 10g RAC 구성방법구성방법

RAC with ASM

Page 22: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

222006 Innovative Technology Seminar

public network

operating System

Clusterware

Oracle 9i RACinstance 1, 2….

server 1

shared storage

redo log instance 1 …

redo log instance 3 …

control files

database files

server 2

operating system

Clusterware

Oracle 9i RACinstance 3, 4….

clusterinterconnect

DB cache DB cache

•Oracle VIP failover•Bonding

•Physical Addresses (9i)•Virtual Addresses (10g)

IIII--2. Network Bonding2. Network BondingOracle RAC - Architecture

Page 23: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

232006 Innovative Technology Seminar

srvctl modify nodeapps -n racnode1 -A racnode1_vip/255.255.255.0/eth0₩|eth1

Node 1

Switch A Publiceth0

eth1

eth2

eth0

eth1

eth2

Switch B Public

Switch C Private

Node 2

IIII--2. Network Bonding2. Network BondingOracle VIP Failover (no bonding)

oifcfg getif To check which interfaces are configured as public or private

eth0 138.2.238.1 global publiceth1 138.2.238.2 global publiceth2 100.100.100.1 global cluster_interconnect

Page 24: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

242006 Innovative Technology Seminar

crs_stat -p ora.racnode1.vip > /tmp/racnode1.vip.cap

crs_profile -update ora.racnode1.vip -dir /tmp -o ci=20

NAME=ora.racnode1.vipTYPE=applicationACTION_SCRIPT=/opt/oracle/product/10.1.0/crs/bin/racgwrapACTIVE_PLACEMENT=1AUTO_START=1CHECK_INTERVAL=60DESCRIPTION=CRS application for VIP on a nodeFAILOVER_DELAY=0FAILURE_INTERVAL=0FAILURE_THRESHOLD=0HOSTING_MEMBERS=racnode1…

IIII--2. Network Bonding2. Network BondingOracle VIP Failover Times

Page 25: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

252006 Innovative Technology Seminar

IIII--2. Network Bonding2. Network BondingNetwork Bonding – Windows

Page 26: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

262006 Innovative Technology Seminar

IIII--2. 10g CRS 2. 10g CRS 구성구성 -- CRSCRS

Page 27: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

272006 Innovative Technology Seminar

IIII--2. 10g CRS 2. 10g CRS 구성구성

Page 28: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

282006 Innovative Technology Seminar

IIII--2. 10g CRS 2. 10g CRS 구성구성

Page 29: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

292006 Innovative Technology Seminar

IIII--2. 10g CRS 2. 10g CRS 구성구성

Page 30: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

302006 Innovative Technology Seminar

IIII--2. 10g CRS 2. 10g CRS 구성구성

Page 31: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

312006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성 -- DBDB

Page 32: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

322006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성

Page 33: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

332006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성 -- VIPVIP

Page 34: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

342006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성

Page 35: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

352006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성 -- ASMASM

Page 36: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

362006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성 -- GPFSGPFS

Page 37: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

372006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성 -- asmtoolasmtool

Page 38: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

382006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성 -- asmtoolasmtool

Page 39: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

392006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성 -- asmtoolasmtool

Page 40: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

402006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성

Using Oracle Object Manager

Page 41: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

412006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성

Windows raw-device 환경

** Physical Disk 가 세개 (d1, d2, d3) 이므로 raw-device 를 분산한다.주의 !! - 4G 이상 File 은 crlogdr command 로 생성되지 않으므로 Disk 관리자에서 수동으로…

## mk_sys.bat

crlogdr /d1 /s 32 /l SPFILE ## crlogdr /디스크이름 /s [Size] /l [raw-device 이름]crlogdr /d2 /s 32 /l PWDFILEcrlogdr /d1 /s 32 /l CONTROL01.CTLcrlogdr /d2 /s 32 /l CONTROL02.CTLcrlogdr /d3 /s 32 /l CONTROL03.CTLcrlogdr /d3 /s 32 /l CWMLITE01.DBFcrlogdr /d3 /s 32 /l DRSYS01.DBFcrlogdr /d3 /s 152 /l EXAMPLE01.DBFcrlogdr /d3 /s 32 /l INDX01.DBFcrlogdr /d3 /s 32 /l ODM01.DBFcrlogdr /d3 /s 82 /l TOOLS01.DBFcrlogdr /d1 /s 102 /l REDO01.LOGcrlogdr /d2 /s 102 /l REDO02.LOGcrlogdr /d3 /s 102 /l REDO03.LOGcrlogdr /d1 /s 102 /l REDO04.LOGcrlogdr /d2 /s 102 /l REDO05.LOGcrlogdr /d3 /s 102 /l REDO06.LOG...

Page 42: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

422006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성

•CRDB 완료후 crs_stat

Name Type Target State Host -------------------------------------------ora....D1.inst application ONLINE ONLINE rac1 ora....D2.inst application ONLINE ONLINE rac2 ora.GOOD.db application ONLINE ONLINE rac2 ora....SM1.asm application ONLINE ONLINE rac1 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....SM2.asm application ONLINE ONLINE rac2 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

•CRDB 완료후 ASM Process

oracle 3101 1 0 15:56:36 ? 0:00 asm_lgwr_+ASM2oracle 3105 1 0 15:56:36 ? 0:00 asm_smon_+ASM2oracle 4169 1 0 16:16:02 ? 0:01 oracle+ASM2 (LOCAL=NO)oracle 3990 1 0 16:14:17 ? 0:00 asm_pz99_+ASM2oracle 3091 1 0 15:56:36 ? 0:00 asm_lmon_+ASM2oracle 3107 1 0 15:56:37 ? 0:01 asm_rbal_+ASM2oracle 3099 1 0 15:56:36 ? 0:00 asm_dbw0_+ASM2oracle 3095 1 0 15:56:36 ? 0:01 asm_lms0_+ASM2oracle 3089 1 0 15:56:35 ? 0:00 asm_diag_+ASM2oracle 3097 1 0 15:56:36 ? 0:00 asm_mman_+ASM2oracle 3087 1 0 15:56:35 ? 0:00 asm_pmon_+ASM2oracle 3093 1 0 15:56:36 ? 0:01 asm_lmd0_+ASM2oracle 4310 1 0 16:17:24 ? 0:01 asm_pz98_+ASM2oracle 3109 1 0 15:56:38 ? 0:00 asm_lck0_+ASM2oracle 3103 1 0 15:56:36 ? 0:00 asm_ckpt_+ASM2

•CRDB 완료후 Oracle Process

$ ps -ef |grep ora_oracle 4522 1 0 16:21:03 ? 0:00 ora_qmnc_GOOD2oracle 4389 1 0 16:19:47 ? 0:00 ora_diag_GOOD2oracle 4418 1 0 16:19:51 ? 0:01 ora_lms1_GOOD2oracle 4420 1 0 16:19:51 ? 0:00 ora_mman_GOOD2oracle 4386 1 0 16:19:46 ? 0:00 ora_pmon_GOOD2oracle 4422 1 0 16:19:51 ? 0:00 ora_dbw0_GOOD2oracle 4392 1 0 16:19:48 ? 0:00 ora_lmon_GOOD2oracle 4430 1 0 16:19:53 ? 0:01 ora_smon_GOOD2oracle 4428 1 0 16:19:52 ? 0:00 ora_ckpt_GOOD2oracle 4398 1 0 16:19:50 ? 0:03 ora_lmd0_GOOD2oracle 4426 1 0 16:19:52 ? 0:00 ora_lgwr_GOOD2oracle 4416 1 0 16:19:51 ? 0:01 ora_lms0_GOOD2oracle 4432 1 0 16:19:53 ? 0:00 ora_reco_GOOD2oracle 4434 1 0 16:19:53 ? 0:01 ora_cjq0_GOOD2oracle 4436 1 0 16:19:54 ? 0:00 ora_d000_GOOD2oracle 4438 1 0 16:19:54 ? 0:00 ora_s000_GOOD2oracle 4441 1 1 16:19:57 ? 0:03 ora_lck0_GOOD2oracle 4464 1 0 16:20:17 ? 0:00 ora_asmb_GOOD2oracle 4469 1 0 16:20:22 ? 0:00 ora_rbal_GOOD2oracle 4471 1 0 16:20:23 ? 0:00 ora_o000_GOOD2oracle 4481 1 0 16:20:33 ? 0:01 ora_pz99_GOOD2oracle 4485 1 0 16:20:35 ? 0:00 ora_pz98_GOOD2oracle 4538 1 0 16:21:16 ? 0:00 ora_q000_GOOD2oracle 4548 1 0 16:21:17 ? 0:00 ora_mmnl_GOOD2oracle 4532 1 0 16:21:14 ? 0:01 ora_mmon_GOOD2

Page 43: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

432006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성

10g New BackGround Processes

MMAN:: SGA Background Process

RVWR:: Recovery Writer for writing lashback log which store s pre-image of data blocks

CTWR:: Change Tracking Writer for fast RMAN incremental backup

MMNL:: Memory Monitor Light on AWR to write out full statistics buffers to disk

MMON:: Memory Monitor for AWR, ADDM and Self-Tuning

RBAL:: Rebalancing of disk resource controlled by ASM

ARBx:: managed by RBAL and to do the actual Rebalancing ASM controlled disk resources

The number of ARBx processes invoked is directly influenced by the asm_power_limit parameter

ASMB:: Cluster Synchronization Services used by ASM to manage the disk resources

Page 44: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

442006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성Enterprise Manager상태 조회: emctl status dbconsoleEnterprise Manager시작: emctl start dbconsole그리고, web browser에서 http://`Host명`:5500/em/ 을 열면됨 가급적 필요할때만 사용 권장

Page 45: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

452006 Innovative Technology Seminar

IIII--3. 10g RAC 3. 10g RAC 구성구성

10g EM

Page 46: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

462006 Innovative Technology Seminar

III. RAC MaintenanceIII. RAC Maintenance

1.1. CacheCache--Fusion Fusion 메커니즘메커니즘

2.2. ASM(Striping) ASM(Striping) 이란이란??

3.3. RAC Design & TuningRAC Design & Tuning

Page 47: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

472006 Innovative Technology Seminar

IIIIII--1. Cache Fusion ?1. Cache Fusion ?Global Enqueue Service & Global Cache Service

싱글 인스턴스 환경과 비교하여 Real Application Cluster에서는 노드간의 동기화를 위하여 부가적인 구성요소가 필요하다. 참고로 이는 Oracle Parallel Server에서는 DLM이라고 말하던 부분이며, Real Application Cluster에서는 캐시 퓨전 기능이 추가되어 GES(Global Enqueue Service)와 GCS(Global Cache Service)의 두 가지 서비스로 나누어진다.

Global Enqueue Service

GES는 사용자가 어느 노드에 접속되었는지에 상관 없이 트랜잭션에 대한 록(lock)을 조정하는 서비스로서, 예를 들면 1번 노드에서 특정 테이블의 특정 레코드에 대하여 DML을 수행하고 커밋 또는 롤백을 하지 않았다면 싱글 인스턴스 환경에서와 마찬가지로 2번 노드에서도 해당 레코드에 대하여 DML을 수행할 수 없다. GES는 오라클 백그라운드 프로세스중에 LMD가 수행한다.

Global Cache Service

GCS는 캐시 퓨전과 함께 작동하는 서비스로서, 예를 들면 자신의 노드에 있는 캐시에서 원하는 블록을 찾지 못했을 때 다른 노드의 캐시를 확인하여 이미 다른 노드의 캐시에 원하는 블록이 올라와 있다면 디스크에 접근할 필요 없이 인터커넥트를 통하여 블록을 전달해 준다 (인터커넥트에 대해서는 뒤에서 자세히설명하기로 한다.) 이때 데이터의 일관성을 위하여 캐시에 올라온 블록에 대해서 GCS는 리소스를 할당하여 상태(모드)를 지속적으로 관리한다. GCS 리소스의 상태는 다음과 같이 3가지가 있다.

□Null(N) 모드 : 현재 해당 블록에 대하여 쓰기 또는 읽기를 수행중인 세션이 없는 상태이다.□Share(S) 모드 : 현재 해당 블록을 읽는 세션이 적어도 하나 있는 상태이다.□Exclusive(X) 모드 : 현재 해당 블록에 대하여 쓰기를 수행중인 세션이 적어도 하나 있는 상태이다.

Page 48: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

482006 Innovative Technology Seminar

[예제 1] Read with No Transfer

그러면, 지금부터 예제를 통해 캐시 퓨전이 어떻게 이루어지는지 살펴보도록 하겠다. [그림 1]은 4노드Real Application Cluster 구성을 간단하게 나타낸 그림으로, 이해를 돕기 위해 최초에 디스크에 있던 하나의 블록이 캐시 퓨전을 통해 어떻게 움직이는지 따라가보도록 하겠다. 최초에 디스크에 있던 블록의 버전을 나타내는 SCN(System Change Number)은 1008번이다.

1. 인스턴스 C에서 블록을 읽으려고 한다. 이때 자신의 캐시에 없으므로 이 블록을 마스터하고 있는 인스턴스에게 해당 블록의 상태를 확인한다. 여기서 우리가 살펴볼 블록의 마스터는 인스턴스 D라고 가정한다.

2. 마스터 노드인 인스턴스 D는 현재 어느 노드의 캐시에도 해당 블록이 올라와 있지 않으므로, 그 사실을알려주면서 요구하는 인스턴스 C에게 GCS 리소스를 S 모드로 할당한다.

3. 인스턴스 C는 S 모드로 GCS 리소스를 할당 받은 후 디스크에 접근한다.

4. 이제 자신의 캐시로 해당 블록이 올라와 있으며, 읽기만 했기 때문에 SCN은 계속 1008번이 된다.

IIIIII--1. Cache Fusion ?1. Cache Fusion ?

Page 49: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

492006 Innovative Technology Seminar

[예제 2] Read to Read Transfer

상황은 [예제 1]에서 계속 이어지며, 이제 또 다른 인스턴스 B가 같은 블록을 읽으려고 한다.

1.[예제 1]과 마찬가지로 일단 자신의 캐시에 원하는 블록이 없으므로 마스터 노드에게 가서 해당 블록의상태를 확인한다.

2. 마스터 노드인 인스턴스 D는 이미 인스턴스 C의 캐시에 해당 블록이 올라와 있기 때문에 인스턴스 C에게 현재 해당 블록을 요구하는 인스턴스 B로 블록을 보내주도록 지시한다.

3. 인스턴스 C는 인스턴스 B에게 블록을 보내주며, 이때 바로 읽기/읽기 캐시 퓨전이 일어나게 된다.

4. 인스턴스 B는 이제 원하는 블록을 캐시에 받고, GCS 리소스 모드 또한 읽기를 위해 S 모드로 할당 받는다. 이때 주목해야 할 점은, 이전 Oracle Parallel Server에서는 이와 같은 경우에 인스턴스 B 는 마스터 노드로 확인하는 과정 없이 바로 [예제 1]과 같이 디스크로부터 블록을 찾았다는 점이다. 핑(Ping)은 일어나지 않지만, 디스크를 접근하므로 성능은 Real Application Cluster에 비해 상대적으로 떨어진다..

IIIIII--1. Cache Fusion ?1. Cache Fusion ?

Page 50: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

502006 Innovative Technology Seminar

[예제 3] Read to Write Transfer

[예제 2]에서 계속 이어져, 이제 블록을 캐시로 전달 받은 인스턴스 B가 같은 블록에 대하여 업데이트를하려 한다.

1. 인스턴스 B가 블록을 업데이트하려면 일단 GCS 리소스를 X 모드로 할당 받아야 하므로 다시 마스터 노드인 인스턴스 D로 가서 리소스 모드 업그레이드를 요청한다.

2. 인스턴스 B, C 둘 다 이전에는 S 모드로 가지고 있었으므로, 인스턴스 D가 X 모드로 업그레이드하기 위해서는 인스턴스 C가 N 모드로 다운그레이드 되어야 한다. 마스터 노드는 인스턴스 C에게 다운그레이드를지시한다.

3. 인스턴스 C가 다운그레이드를 완료하면 이제 인스턴스 B에게 알려 주어 S에서 X 모드로 업그레이드를할 수 있다.

4. 인스턴스 B는 이제 원하는 X 모드로 GCS 리소스를 받았다는 사실을 마스터 노드에게 알려준다. 이때인스턴스 C도 N 모드로 다운그레이드 되었다는 사실까지 함께 알려 준다. 이것이 완료되면 비로소 인스턴스 B는 해당 블록을 업데이트할 수 있으며, [그림 3]과 같이 SCN이 1009번으로 바뀐 것으로 나타난다.

IIIIII--1. Cache Fusion ?1. Cache Fusion ?

Page 51: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

512006 Innovative Technology Seminar

[예제 4] Write to Write Transfer

[예제 3]에서 계속 이어져, 이제 인스턴스 A가 또다시 해당 블록에 대하여 업데이트를 하려고 한다.

1. 인스턴스 A는 자신의 캐시에 해당 블록이 없으므로 마스터 노드에 정보를 요구한다.

2. 마스터 노드인 인스턴스 D는 인스턴스 B가 X 모드로 GCS를 잡고 있으므로 가장 최근의 이미지를 가지고 있다는 사실을 알고 있다. 따라서 인스턴스 B에게 요구하는 인스턴스 A로 블록을 보내주도록 지시한다.

3. 인스턴스 B는 우선 GCS 리소스를 N 모드로 다운그레이드한 후 요구하는 인스턴스 A로 블록을 보낸다. 이때 바로 쓰기/쓰기 캐시 퓨전이 일어난다.

4. 인스턴스 A는 GCS 리소스를 X 모드로 업그레이드한 후 마스터 노드로 그 정보를 보내 준다. 이제 비로소 인스턴스 A는 해당 블록에 업데이트할 수 있으며, 가장 최근의 블록 이미지는 인스턴스 A에 있다. [그림4]에서는 SCN이 1013번으로 바뀐 것을 볼 수 있다.

IIIIII--1. Cache Fusion ?1. Cache Fusion ?

Page 52: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

522006 Innovative Technology Seminar

[예제 5] Write to Read Transfer

[예제 4]에서 계속 이어져, 이제 인스턴스 C에서 다시 해당 블록을 읽고자한다. [예제 3]에서 인스턴스 C는 해당 블록에 대하여N 모드로 GCS 리소스를 다운그레이드 했음을 기억하자.

1. 인스턴스 C는 해당 블록에 대하여 N 모드로 GCS 리소스를 가지고 있었으므로, 다시 읽기를 위하여 S 모드로 업그레이드하기 위해 마스터 노드에 정보를 확인한다.

2. 마스터 노드는 인스턴스 A가 가장 최근 이미지를 X 모드로 가지고 있다는 사실을 알고 있으므로 인스턴스 A에게 요구하는 인스턴스 C로 블록을 보내라고 지시한다.

3. 인스턴스 A는 X에서 S로 GCS 리소스를 다운그레이드하고 인스턴스 C로 블록을 보내 준다. 이때 바로쓰기/읽기 캐시 퓨전이 일어난다. 참고로 이 기능은 Oracle8i Oracle Parallel Server에서부터 있던 기능이다.

4. 인스턴스 C는 N에서 S로 GCS 리소스를 업그레이드하고 다시 마스터 노드에게 이 사실을 알려 준다. 이제 SCN 1013번의 블록 이미지가 인스턴스 A와 인스턴스 C의 캐시에 동시에 놓여 있으며, 이제 인스턴스C는 원하는 대로 블록을 읽을 수 있다.

IIIIII--1. Cache Fusion ?1. Cache Fusion ?

Page 53: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

532006 Innovative Technology Seminar

Where DBAs Spend Their Time

Software Maintenance 6%

Ongoing System Management 55%

Installation 6%

Others15%

Creation & Configuration 12 %

Source: IOUG 2001 DBA Survey

DataLoading 6%

IIIIII--2. ASM 2. ASM 이란이란??

Page 54: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

542006 Innovative Technology Seminar

IIIIII--2. ASM 2. ASM 이란이란??ASM Architecture

Page 55: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

552006 Innovative Technology Seminar

IIIIII--2. ASM 2. ASM 이란이란??

Page 56: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

562006 Innovative Technology Seminar

IIIIII--2. ASM 2. ASM 이란이란??

Page 57: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

572006 Innovative Technology Seminar

ASM

OracleASM

Logical Vol

Files

File System

Tablespace

Tables

Disk Group

File System

0010 0010 0010 0010 00100010 0010 0010 0010 0010Files

Logical Vol

TablespaceTables

TODAY

Disks

“The best way to lower mgmt costs is to remove complexity”

IIIIII--2. ASM 2. ASM 이란이란??

The Operational Stack

Page 58: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

582006 Innovative Technology Seminar

IIIIII--2. ASM Striping 2. ASM Striping 이란이란??SQL> create diskgroup DATA_AREA_01 NORMAL redundancy

2 failgroup controller1 disk 'D:₩Ora₩data₩asmdisks₩disk01a',3 'D:₩Ora₩data₩asmdisks₩disk03‘4 failgroup controller2 disk 'D:₩Ora₩data₩asmdisks₩disk01b',5 'D:₩Ora₩data₩asmdisks₩disk04‘6 /

Diskgroup created.

SQL> create diskgroup DATA_AREA_02 HIGH redundancy2 failgroup controller1 disk 'D:₩Ora₩data₩asmdisks₩disk05',3 'D:₩Ora₩data₩asmdisks₩disk06‘4 failgroup controller2 disk 'D:₩Ora₩data₩asmdisks₩disk07',5 'D:₩Ora₩data₩asmdisks₩disk08‘6 failgroup controller3 disk 'D:₩Ora₩data₩asmdisks₩disk09',7 'D:₩Ora₩data₩asmdisks₩disk10‘8 /

Diskgroup created.

SQL> create diskgroup DATA_AREA_03 EXTERNAL redundancy2 disk 'D:₩Ora₩data₩asmdisks₩disk36',3 'D:₩Ora₩data₩asmdisks₩disk37',4 'D:₩Ora₩data₩asmdisks₩disk38‘5 /

Diskgroup created.

SQL> select name, state, type, total_mb, free_mb from v$asm_diskgroup;NAME STATE TYPE TOTAL_MB FREE_MB------------------------------------------------------DATA_AREA_01 MOUNTED NORMAL 3072 2968DATA_AREA_02 MOUNTED HIGH 3072 2916DATA_AREA_03 MOUNTED EXTERN 3072 3018

Page 59: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

592006 Innovative Technology Seminar

IIIIII--2. ASM Striping 2. ASM Striping 이란이란??

## init+ASM1.ora

# Oracle ASM init.ora parameters*.instance_type='asm‘*.asm_diskgroups=EVDG,XPDG*.large_pool_size=12M*.asm_diskstring=’/dev/rdsk/c58t0d[012345]’, ’/dev/rdsk/c8t0d*’*.remote_login_passwordfile='SHARED‘

# Query ASM Disk & Files

SQL> SELECT A.NAME, F.BYTES, F.SPACE, F.TYPE 2 FROM V$ASM_ALIAS A,V$ASM_FILE F 3 WHERE A.GROUP_NUMBER = F.GROUP_NUMBER 4 AND A.FILE_NUMBER = F.FILE_NUMBER;

NAME BYTES SPACE TYPE................... ...................... ................. .......................Current.256.3 2899968 8388608 CONTROLFILECurrent.257.3 2899968 8388608 CONTROLFILESYSTEM.258.3 520101888 522190848 DATAFILEgroup_1.263.3 33555456 41943040 ONLINELOGUSERS.264.3 67117056 68157440 DATAFILETEMP.265.3 268443648 269484032 TEMPFILESYSAUX.266.3 268443648 269484032 DATAFILEgroup_1.267.3 33555456 41943040 ONLINELOGUNDOTBS1.268.3 520101888 522190848 DATAFILEspfile.269.1 3072 1048576 PARAMETERFILEspfileASMEV.ora 3072 1048576 PARAMETERFILE

Page 60: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

602006 Innovative Technology Seminar

IIIIII--2. ASM 2. ASM 이란이란??ASMCMD

Page 61: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

612006 Innovative Technology Seminar

IIIIII--3. RAC Design & Tuning3. RAC Design & TuningDB Structure

Control File, Redo Log File, Rollback Segment, Temporary Tablespace 등은 서로 다른 RAID Device로 분리한다.Redo Log File과 Rollback Segment는 RAID 1으로 구축하는 것 이 좋다.Temporary Tablespace는 Corruption이 발생되어도 Data의 손실없이 Drop후 재생성이 가능 하므로 RAID 0로 한다.Index Tablespace는 Disk Fail시 바로 재생성이 가능 하므로 RAID 0 로 하면 좋다.사용자가 정의 한 모든 Tablespace는 대부분 RAID 5 로 구축한다.System Swap Space도 최대한 분리/분산하여 I/O Bottleneck이 발생하지 않도록 한다.사용자별 Temporary Tablespace는 반드시 별도로 할당 한다.각 Node마다 Rollback Segment를 독립적으로 운영한다.Object, Temp, RBS 의 Storage는 초기생성시 Initial Size 와 Next Size를 같게 하며, 기존 Data가 존재할 때는 일정한크기별로 Initial과 Next를 적용하고, Pctincrease는 0으로 설정한다.

Application & Data Partitioning

Application Function 및 Table Access형태를 면밀히 분석한 후, 효율적인 분리/분산은 물론 적정한 Lock의 안배로성능을 최대화 한다. 즉, Query Intensive Table, Insert/Update/Delete Intensive Table에 대한 Application의 분리및 OLTP와 Batch JOB의 분리를 해야 한다.가능한 독립적인 Application은 한 Node에서만 실행되도록 한다. 이는 곧 다른 Application들에 의해 Access되는 Object에 대한 Partitioning을 의미한다.동일 Application을 Multi Node에서 운영해서는 않된다. 이는 하나의 Object를 Multi Node에서 Cross-Access하는상황을 피해야만 Pinging으로 인한 성능의 저하를 최소화 할 수 있슴을 의미한다.Synonym 및 Partition View를 적절하게 사용한다.Read Intensive Data는 Write Intensive Data로부터 다른 Tablespace로 분리한다.Table과 Index는 반드시 다른 Tablespace에 분리한다.

Page 62: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

622006 Innovative Technology Seminar

IIIIII--3. RAC Design & Tuning3. RAC Design & Tuning

Freelists & Freelist Groups- Insert 작업이 빈번한 Segment 에 대해서 최소한의 instance 개수만큼 freelist group 을 정의해야 하고,

DB 가 자동으로 관리하도록 하기 위해서는 ‘Automatic Segment free Space Management’ 기능을 사용해야 한다.

ASSM- Insert 가 굉장히 많은 OLTP System 이라면 segment space management manual & initrans 5 를 사용한다.

PreAllocating Extents- 특정 Instance 별로 Data 를 분리 할 수 있다면, Table 의 Next extent 를 특정 Instance 에 미리 할당하여

동일 Block & Extents 에 대한 경합을 줄일 수 있다.

Sequence 의 관리- Oracle Sequence 의 CACHE Option 을 적적히 사용하고, sequence 에 대한 경합을 최소화 하도록 해야 하고,

Application 단에서 해결할 수 있다면 이에 대해 고려해 보아야 한다.

Data Block Contention- 동일한 Data Block 에 대한 경합이 심할 경우, PCTFREE 등의 Option 을 이용해서 한 Block 내에 존재 할 수 있는

row 의 개수를 최소화 하도록 해야 한다. 필요한 경우 ‘Multiple Block Size Support’ 기능을 사용한다.

Tablespace Design- Segment 성격을 파악해서 유형별로 분리해야 하며, Application 에 따른 Partitioning 이 가능한지 파악해야 한다.

그리고 Locally Management Tablespace 를 사용하도록 한다.

Indexes Issues for RAC- Index block 경합을 줄이기 위한 방안을 검토해야 한다. 필요한 경우 Range Patition Table 의 Local Index 를 사용

Indexes Issues for RAC- Table Lock 을 위한 Inter-Connect 통신을 줄일 수 있는 방법을 이용하도록 한다.

Page 63: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

632006 Innovative Technology Seminar

IV. RAC Backup/RecoveryIV. RAC Backup/Recovery

1.1. 10g RAC Backup /Recovery10g RAC Backup /Recovery

2.2. 기타기타 Internal RecoveryInternal Recovery

Page 64: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

642006 Innovative Technology Seminar

IVIV--1. 10g RAC Backup/Recovery1. 10g RAC Backup/RecoveryASM Disk Group Configuration Guideline

Page 65: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

652006 Innovative Technology Seminar

IVIV--1. 10g RAC Backup/Recovery1. 10g RAC Backup/RecoveryBackup/Recovery Procedure Methods and Usage Example

1. Archive a current redo log file group.

2. Place the database in backup mode.

3. Ensure that no ASM rebalance operations are occurring.

This should report no rows. If a row is returned; i.e., a rebalance occurring, then stop the rebalance operation using the following;

And re-check v$asm_operation.

4. Back up all disks belonging to a disk group of datafile using Advanced Copy feature.

5. Take the database out of backup mode.

6. Back up all archive log files. A current control file is backed up using the auto backup feature of control file.

SQL> alter system archive log current;

SQL> alter database begin backup;

SQL> select * from v$asm_operation;

SQL> alter diskgroup DG_DATA rebalance power 0;

SQL> select * from v$asm_operation;

SQL> alter database end backup;

RAMAN> backup archive log all;

H/W Volume 복제 Solution (Flash Copy, Shadow Image, Time-Finder…

Page 66: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

662006 Innovative Technology Seminar

IVIV--1. 10g RAC Backup/Recovery1. 10g RAC Backup/RecoveryRecovery Procedure Methods- When a Datafile Disk Group is Broken

1. Shutdown an instance of database with the ABORT option.

2. Dismount a disk group of datafile.

3. Restore all disks belonging to a disk group of datafile using Advanced Copy feature.

4. Mount a disk group of datafile.

5. Startup an instance of database with the MOUNT option.

6. Perform media recovery with a complete recovery.

7. Open the database.

SQL> shutdown abort;

SQL> alter diskgroup DG_DATA dismount;

SQL> alter diskgroup DG_DATA mount;

SQL> startup mount;

RMAN> recover database;

RMAN> alter database open;

H/W Volume 복제 Solution (Flash Copy, Shadow Image, Time-Finder…

Page 67: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

672006 Innovative Technology Seminar

IVIV--1. 10g RAC Backup/Recovery1. 10g RAC Backup/RecoveryRecovery Procedure Methods- When all Disk Group is Broken

1. Shutdown an instance of database with the ABORT option.

2. Dismount a disk group of datafile.

3. Drop the other disk groups.

4. Initialize disk header of all disks belong to DG_REDO, and DG_ARCH.

5. Create a disk group of DG_REDO and a disk group of DG_ARCH.

6. Restore all disks belonging to a disk group of datafile using Advanced Copy feature.

7. Mount a disk group of datafile.

SQL> shutdown abort;

SQL> alter diskgroup DG_DATA dismount;

SQL> drop diskgroup DG_REDO including contents;

SQL> drop diskgroup DG_ARCH including contents;

$ dd if=/dev/zero of=/dev/sfdsk/redo bs=1024 count=10

$ dd if=/dev/zero of=/dev/sfdsk/arch bs=1024 count=10

SQL> create diskgroup DG_REDO external redundancy disk ‘/dev/sfdsk/redo’;SQL> create diskgroup DG_ARCH external redundancy disk ‘/dev/sfdsk/arch’;

SQL> alter diskgroup mount;

H/W Volume 복제 Solution (Flash Copy, Shadow Image, Time-Finder…

Page 68: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

682006 Innovative Technology Seminar

IVIV--1. 10g RAC Backup/Recovery1. 10g RAC Backup/RecoveryRecovery Procedure Methods- When all Disk Group is Broken

8. Copy a backup control file to work area.

9. Startup an instance of database without mount.

10. Restore the control file from a control file at work area.

11. Mount the database.

12. Perform media recovery with an incomplete recovery.

13. Open the database with the RESETLOGS option.

14. Add any temporary files to a temporary tablespace.

15. Delete some invalid entries of archive log files.

$cp /backup/control_back.20051217 /backup/ctl00.bak

RMAN> startup mount;

RMAN> restore controlfile from ‘/backup/ctl00.bak’;

SQL> alter database mount;

RMAN> recover database until sequence 127 thread 1;

RMAN> crosscheck archivelog all;

RMAN> delete expired archivelog all;

RMAN> alter database open resetlogs;

SQL> alter tablespace TEMP add tempfile ‘+DG_DATA/temp01.dbf’ size 100m reuse;

Page 69: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

692006 Innovative Technology Seminar

IVIV--2. 2. 기타기타 Internal RecoveryInternal RecoverySQL> recover database until cancel;SQL> alter database open resetlogs;

alert.logRESETLOGS is being done without consistancy checks. This may resultin a corrupted database. The database should be recreated.RESETLOGS after incomplete recovery UNTIL CHANGE 237288Resetting resetlogs activation ID 2106789969 (0x7d931051)Sat Jun 12 13:09:47 2004This instance was first to open…Sat Jun 12 13:09:51 2004Errors in file /oracle/app/oracle/admin/RAC/udump/rac1_ora_4717.trc:ORA-00600: internal error code, arguments: [kclchkblk_4], [0], [237385], [0], [237323], [], [], []Sat Jun 12 13:09:58 2004Error 600 happened during db open, shutting down databaseUSER: terminating instance due to error 600Sat Jun 12 13:09:58 2004Errors in file /oracle/app/oracle/admin/RAC/bdump/rac1_lmd0_4658.trc:ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], []Errors in file /oracle/app/oracle/admin/RAC/bdump/rac1_lms0_4660.trc:ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], []Sat Jun 12 13:09:58 2004System state dump is made for local instanceSat Jun 12 13:09:58 2004Trace dumping is performing id=[cdmp_20040612130958]

** RAC 에서 불완전 복구를 할 경우 !!# CLUSTER_DATABASE = TRUE# CLUSTER_DATABASE_INSTANCES = 2

Page 70: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

702006 Innovative Technology Seminar

V. RAC FailV. RAC Fail--Over TestOver Test

1.1. Process FailProcess Fail--Over TestOver Test

2.2. Instance / System FailInstance / System Fail--Over TestOver Test

3.3. Listener / VIP FailListener / VIP Fail--OverOver

4.4. Public Network FailPublic Network Fail--Over TestOver Test

5.5. InterInter--Connect FailConnect Fail--Over TestOver Test

6.6. DeadDead--Lock TestLock Test

7.7. TAF / CTF TestTAF / CTF Test

8.8. QnAQnA

Page 71: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

712006 Innovative Technology Seminar

기본환경 - 구성도

VV--1. Process Fail1. Process Fail--Over TestOver Test

Page 72: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

722006 Innovative Technology Seminar

VV--1. Process Fail1. Process Fail--Over TestOver Test기본 환경

1. crs_stat -t

db1:/oracle/app/oracle> crs_stat -tName Type Target State Host ------------------------------------------------------------ora....A1.inst application ONLINE ONLINE db1 ora....A2.inst application ONLINE ONLINE db2 ora.EIDBA.db application ONLINE ONLINE db2 ora....B1.inst application ONLINE ONLINE db1 ora....B2.inst application ONLINE ONLINE db2 ora.EIDBB.db application ONLINE ONLINE db2 ora....B1.lsnr application ONLINE ONLINE db1 ora....B1.lsnr application ONLINE ONLINE db1 ora.db1.gsd application ONLINE ONLINE db1 !! ora.db1.ons application ONLINE ONLINE db1 !! ora.db1.vip application ONLINE ONLINE db1 !! ora....B2.lsnr application ONLINE ONLINE db2 ora....B2.lsnr application ONLINE ONLINE db2 ora.db2.gsd application ONLINE ONLINE db2 !! ora.db2.ons application ONLINE ONLINE db2 !! ora.db2.vip application ONLINE ONLINE db2 !!

Page 73: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

732006 Innovative Technology Seminar

VV--1. Process Fail1. Process Fail--Over TestOver TestNetwork 구성

. Public IP서비스 IP 인 Public IP 는 MC/Service Guard 의 Network Redundant 기능을 이용하여Primary (lan6) Standby (lan7) 의 HA Configuration 이 되어 있다.즉 lan6 번 NIC 가 down 되면 MC/SG 가 자동으로 lan7 번 NIC 로 IP Fail-Over 가 된다.Oracle CRS 에서도 lan6 :1 의 VIP 가 lan7 :1 로 자동 F/O 가 되기 위해서는 아래의 순서로VIP 를 이중화 해주어야 한다.

## VIP 이중화

srvctl stop database -d RACsrvctl stop nodeapps -n rac1srvctl stop nodeapps -n rac2

## root 유저에서 각 Node 별로 실행한다.srvctl modify nodeapps -n rac1 -o /usr1/home/oraclei/product/10.2.0 ₩

-A rac1-vip/255.255.255.192/lan6₩|lan7srvctl modify nodeapps -n rac2 -o /usr1/home/oraclei/product/10.2.0 ₩

-A rac2-vip/255.255.255.192/lan6₩|lan7srvctl start nodeapps -n rac1srvctl start nodeapps -n rac2srvctl start database -d RAC

Page 74: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

742006 Innovative Technology Seminar

VV--1. Process Fail1. Process Fail--Over TestOver TestNetwork 구성

. Private IP Oracle 이 사용할 Inter-Connect IP 는 HP 의 APA (Auto Port Aggregation) 기능을 이용하여lan2 & lan3 번 NIC 가 Trunking 라 불리우며, OS 의 Network 상에는 lan900 이라는 이름으로이중화 (묶여있어)가 되어 있어 2 Channel 을 사용하며, F/O 나 Load Balance 기능이 아니라2 Channel 을 Full Duplex 로 사용할 뿐이다.

. HeartBeatOS 의 ClusterWare 인 MC/Service Guard 가 사용할 HeartBeat 용 Network 은 lan5 & lan1 로2 Channel 을 Full Duplex 로 Packet 전송을 한다. – Ethernet NIC

rac2 [oraclei:/usr1/home/oraclei/goodus]$ netstat –in

IPv4:Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Colllan1 1500 192.168.20.0 192.168.20.8 981 0 1886 0 0 lo0 4136 127.0.0.0 127.0.0.1 43193 0 43193 0 0 lan6:1 1500 211.233.2.192 211.233.2.230 4751 0 100 0 0 lan7* 1500 none none 0 0 0 0 0 lan6 1500 211.233.2.192 211.233.2.228 52314 0 98443 0 0 lan5 1500 192.168.30.0 192.168.30.8 977 0 1882 0 0 lan900 1500 192.168.10.0 192.168.10.8 37568 0 20863 0 0

Page 75: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

752006 Innovative Technology Seminar

VV--1. Process Fail1. Process Fail--Over TestOver TestOracle Background Process kill

1. kill –9 <ora_pmon PID>

- Oracle 자동 재 시작- TAF 의 Select Session 은 다른 Node 로 자동 Fail-Over 되어 정상적으로 Query 됨 !!- local_listener 설정이 되어 있어야 빠르게 Session Fail-Over 가 됨 !!- WAS 에서는 자동 Re-Connect 되며, Query 는 계속해서 진행됨 !!- VIP 변화 없음!!

2. kill –9 <Oracle Server Process PID>

- Node Fail-Over 없이 자동 재접속됨.- CTF 또는 TAF 의 BASIC 설정시 자동으로 Re-Connect !!- TAF 의 Pre-Connect 설정시 Backup Session 까지 2개의 Session 이 맺어진다. !!

3. alter session kill ‘SID, SERIAL#’

- 해당 Session 은 종료 되며, Fail-Over 없음.!!

Page 76: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

762006 Innovative Technology Seminar

VV--2. Instance / System Fail2. Instance / System Fail--Over TestOver TestInstance Fail-Over Test

1. srvctl stop instance –d EIDBA –I EIDBA1

- Oracle 자동 재 시작되지 않음 !! (CRS 는 정상종료에 대해서는 Re-Start 하지 않음)- TAF 의 Select Session 은 다른 Node 로 자동 Fail-Over 되어 정상적으로 Query 됨 !!- local_listener 의 Dynamic Listener 이므로 신규 Client 접속은 다른 Node 로 이루어 짐.- WAS & DB 사이에 L4 or L2 가 있는 경우에는 해당 Instance 가 down 되는 순간에는

Page 표시가 되지 않을 수 있다. 이는 L4 는 Oracle Process down 여부를 Check 하지 못하고특정 Port (1521) 에 대해서는 Monitoring 및 Balancing 이 되기 때문임.

2. System Rebooting 시 (동시)

- RAC 양쪽 Node 를 On-Line 중에 강제로 Down or Rebooting 을 하는 경우…OS Cluster S/W (MC/Service Guard, HACMP, HACMP, Sun Cluster, VCS, True-Cluster 등)가 Start 가 되면 /etc/inittab 의 respawn 명령에 따라 CRS 와 DB 는 자동으로 모든 Resource들이 Start 가 되어진다.

- VIP 는 두 Node 중 CRSD 가 먼저 Start 되는 쪽에서 양쪽의 VIP 를 띄워서 서비스가 되고,두번째 Node 가 정상적으로 Booting 이 되고, CRS 의 서비스가 Start 가 되면 자동으로 원래의Node 로 Fail-Back 이 된다.

Page 77: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

772006 Innovative Technology Seminar

VV--2. Instance / System Fail2. Instance / System Fail--Over TestOver TestDB Server 강제 Shutdown 시 $ORA_CRS_HOME/css/log/ocssd2.log

2005-09-22 02:08:52.076 [4] >WARNING: clssnmeventhndlr: Receive failure with node 1, rc=112005-09-22 02:08:52.441 [3] >TRACE: clssnm_skgxncheck: CSS daemon failed on node 12005-09-22 02:08:55.330 [8] >WARNING: clssnmPollingThread: node(1) missed(4) checkin(s)2005-09-22 02:08:56.340 [8] >WARNING: clssnmPollingThread: node(1) missed(5) checkin(s)2005-09-22 02:08:57.350 [8] >WARNING: clssnmPollingThread: Eviction started for node 1, flags 0x0001, state 3, wt4c 02005-09-22 02:09:02.402 [8] >TRACE: clssnmDoSyncUpdate: Initiating sync 152005-09-22 02:09:02.402 [4] >TRACE: clssnmHandleSync: Acknowledging sync: src[2] seq[1] sync[15]2005-09-22 02:09:02.871 [1] >USER: NMEVENT_SUSPEND [00][00][00][04]2005-09-22 02:09:06.441 [8] >TRACE: clssnmEvict: Evicting node 1, birth 10, death 0, killme 12005-09-22 02:09:06.443 [4] >USER: clssnmHandleUpdate: SYNC(15) from node(2) completed2005-09-22 02:09:06.443 [4] >USER: clssnmHandleUpdate: NODE(2) IS ACTIVE MEMBER OF CLUSTER2005-09-22 02:09:06.911 [13] >USER: NMEVENT_RECONFIG [00][00][00][04]2005-09-22 02:09:06.911 [13] >TRACE: clssgmCleanupGrocks: cleaning up grock DBDSLOT type 22005-09-22 02:09:06.912 [13] >TRACE: clssgmCleanupGrocks: cleaning up grock DGDSLOT type 22005-09-22 02:09:06.912 [13] >TRACE: clssgmCleanupGrocks: cleaning up grock DAALL_DB type 22005-09-22 02:09:06.912 [13] >TRACE: clssgmCleanupGrocks: cleaning up grock ocr_crs type 22005-09-22 02:09:06.912 [13] >TRACE: clssgmCleanupGrocks: cleaning up grock IGDSLOTALL type 22005-09-22 02:09:06.912 [13] >TRACE: clssgmCleanupGrocks: cleaning up grock RES ora.dslot.dslot.dslot2.srv type 32005-09-22 02:09:06.912 [13] >TRACE: clssgmEstablishConnections: 1 nodes in cluster incarn 152005-09-22 02:09:06.912 [7] >TRACE: clssgmPeerListener: connects done (1/1)CLSS-3000: reconfiguration successful, incarnation 15 with 1 nodesCLSS-3001: local node number 2, master node number 22005-09-22 02:09:06.985 [13] >TRACE: clssnmpostev: leave event posted, node 1

** 살아있는 2호기에서 1호기의 장애를 감지하고 1호기 노드를 eviction했음을 알 수 있음.

Page 78: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

782006 Innovative Technology Seminar

VV--2. Instance / System Fail2. Instance / System Fail--Over TestOver TestDB Server 강제 Shutdown 시 $ORA_CRS_HOME/crs/log/kblotdb2.log

2005-09-22 02:09:07.001: Processing MemberLeave2005-09-22 02:09:07.001: [MEMBERLEAVE:717] Processing member leave for kblotdb1, incarnation: 152005-09-22 02:09:07.217: [RESOURCE:717] Not failing resource ora.dslot.dslot.dslot2.srv because it was locked.2005-09-22 02:09:07.218: [RESOURCE:717] X_RES_Unavailable : Resource ora.dslot.dslot.dslot2.srv is locked(File: rti.cpp, line: 812)2005-09-22 02:09:07.351: Attempting to start `ora.kblotdb1.vip` on member `kblotdb2`2005-09-22 02:09:35.059: Start of `ora.kblotdb1.vip` on member `kblotdb2` succeeded.2005-09-22 02:09:35.194: Attempting to start `ora.dslot.dslot.cs` on member `kblotdb2`2005-09-22 02:09:35.755: Start of `ora.dslot.dslot.cs` on member `kblotdb2` succeeded.2005-09-22 02:09:35.865: Attempting to start `ora.dslot.db` on member `kblotdb2`2005-09-22 02:09:36.319: Start of `ora.dslot.db` on member `kblotdb2` succeeded.2005-09-22 02:09:36.323: [MEMBERLEAVE:717] Do failover for: kblotdb12005-09-22 02:09:36.324: [MEMBERLEAVE:717] Post recovery done evmd event for: kblotdb1

** 다음으로 CRS가 1호기에 있던 oracle VIP를 살아있는 2호기로 failover시켰음을 알 수 있음.

Page 79: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

792006 Innovative Technology Seminar

VV--3. Listener / VIP Fail3. Listener / VIP Fail--Over TestOver TestListener / VIP Fail-Over Test

1. kill -9 <Listener_Pid>

- Listener 는 자동 재시작 됨.!!- TAF 의 Select Session 은 다른 Node 로 자동 Fail-Over 되어 정상적으로 Query 됨 !!- local_listener 의 Dynamic Listener 이므로 신규 Client 접속은 다른 Node 로 이루어 짐.- WAS & DB 사이에 L4 or L2 가 있는 경우에는 해당 Instance 가 down 되는 순간에는

Page 표시가 되지 않을 수 있다. 이는 L4 는 Oracle Process down 여부를 Check 하지 못하고특정 Port (1521) 에 대해서는 Monitoring 및 Balancing 이 되기 때문임.

Page 80: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

802006 Innovative Technology Seminar

VV--4. Public Network Fail4. Public Network Fail--Over TestOver TestPublic Network Fail-Ovet Test

1. lan6 번 1 Line 절체

- Physical IP 는 lan7 로 Fail-Over !!- VIP 도 lan7:1 로 Fail-Over !!- DB Session 의 DB 접속 정상, Select Query 는 계속 실행 됨. !!- telnet session 끊어지지 않음 !!- lan6 복구(연결)시 Physical IP , VIP 는 자동복구 됨.!!

2. lan6 & lan7 번 동시 Down (line 절체)

- telnet 및 기존 DB Session 은 끊어짐 !!- VIP 는 다른 Node 로 Fail-Over !!- 신규 Session 은 다른 Node 로 접속 됨. !!

** VIP 가 정상적으로 Start 되지 않으면 DB Instance 역시 Start 되지 않는다.!!VIP와 dependency를 이루고 있는 resource들이 (listener), asm, isntance 등이 있고,이들은 vip가 정상적으로 구동이 되지 못한다면 시작이 되지 않게 된다..resource에 대한 dependency를 확인하기 위해서는 아래의 명령을 사용한다.

e.g) crs_stat -p ora.rac2.LISTENER_RAC2.lsnr | grep REQREQUIRED_RESOURCES=ora.rac2.vip

Page 81: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

812006 Innovative Technology Seminar

VV--5. Inter5. Inter--Connect FailConnect Fail--Over TestOver TestInter-Connect (Heart-Beat) Fail-Over Test

1. lan2 or lan3 번 1 Line 절체

- 서비스 이상 없이 정상작동 됨.!!

2. lan2 & lan3 번 2 Line 동시 절체

- 인터페이스 down 은 syslog 에 확인 됨. !!- Cluster 상에서 Health Check Fail 발생하지 않음.- Inter-Connect 2 line 이 절체가 되어도 별도의 Heart-Beat Line 을 이용하여서비스 이상 없이 정상작동 됨. !!

3. lan2 & lan3 번 2 Line 동시 절체 와 Heart-Beat Line 절체

- 모든 Session 의 작업은 Hang 상태 임 !!- MissCount 값 (예 : 600초 – 10분) 내에 Line 을 연결하면 서비스 정상 !!- MissCount 값을 초과하면 Manual 상에서는 Master Node 가 아닌쪽이 Evict 가 되어

System Rebooting 이 됨.!!- 실제는 두 Node 중에 불규칙적으로 Rebooting 현상이 발생함.!!

Page 82: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

822006 Innovative Technology Seminar

VV--5. Inter5. Inter--Connect FailConnect Fail--Over TestOver TestIBM HACMP & 9i RAC Inter-Connect Fail-Over Test

- Cluster_interconnect를 명시적으로 지정할 경우, 1개의 interconnect만 Active 하며,interconnect의 통신 장애가 발생하면, Instance Down 또는 Hang이 발생한다.

- Cluster_interconnect를 지정하지 않을 경우, 2개의 interconnecr가 Active 하며,(Network 0 = 10.20.20.1, Network 1 = 23.34.81.134)Network 0(10.20.20.1)이 down 될 경우, Network 1(23.34.81.134)으로 fail-over 되며, Network 0(10.20.20.1)이 up 되어도 다시 Network 0으로 fail-over 되지는 않음.

- Cluster_interconnect를 지정하지 않은 상태에서,Network 0(10.20.20.1)이 up 된 후, Instance를 다시 Re-Startup 하여도, Network 0 이 여전히 down 된 것으로 인식하여, Network 1 이 Active 됨.

- Cluster_interconnect(10.20.20.1)를 명시적으로 지정할 경우, 다시 1개의 interconnect(10.20.20.1)만을 정상적으로 Active 시킴.

** Cluster_interconnects (Private Network) 이 down 되어서 재 구동을 하더라도 Oracle RAC 가cluster_interconnect 를 제대로 사용하지 못하므로, 반드시 Cluster Ware 를 Re-Start 해야 한다.

Page 83: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

832006 Innovative Technology Seminar

VV--6. Dead6. Dead--Lock TestLock TestDead-Lock Test

- 10g RAC 부터는 정확한 Row-Level Locking 을 지원하여 동일Block 의 서로 다른 Row 를동시에 Update 를 하더라도 ORA-60 의 Dead-Lock 이 발생하지 않는다.!!

SCOTT> create table lock_t (no number);SCOTT> insert into lock_t values (1);SCOTT> insert into lock_t values (2);

#Node-1SCOTT> update lock_t set no=3 where no=1;

#Node-2SCOTT> update lock_t set no=4 where no=2;

Page 84: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

842006 Innovative Technology Seminar

VV--7. TAF / CTF Test7. TAF / CTF TestTAF – BASIC

$TNS_ADMIN/tnsnames.ora

AP =(DESCRIPTION = (FAILOVER=ON) (LOAD_BALANCE=ON)

(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = vip-sc1)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = vip-sc2)(PORT = 1521))

)(CONNECT_DATA =(SERVICE_NAME = AP)(FAILOVER_MODE =(TYPE=SESSION)(METHOD=BASIC)

))

$ sqlplus ID/PWD@APSQL> select instance_name from v$instance;

RAC2SQL> select failover_type, failover_method, failed_over

From v$sessionWhere username=’ID’;

FAILOVER_TYPE FAILOVER_METHOD FAILED_OVERSESSION BASIC NO

Page 85: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

852006 Innovative Technology Seminar

VV--7. TAF / CTF Test7. TAF / CTF TestTAF – BASIC

SQL> insert into fan values (1);SQL> commit;

** Oracle Process 강제 Kill !!

$ ps –ef |grep “RAC1 (LOCAL=NO)” | awk ‘{print “kill -9 “ $2 }’ | sh –v

SQL> insert into fan values (1);

ORA-3113 : end-of-file on communication channel

** Insert 다시 시도 !!

SQL> insert into fan values (1);2번째 Node 에서 Verify Automatically Failed-Over !!

SQL> select instance_name from v$instance;RAC2

SQL> select failover_type, failover_method, failed_overFrom v$sessionWhere username=’ID’;

FAILOVER_TYPE FAILOVER_METHOD FAILED_OVERSESSION BASIC YES

Page 86: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

862006 Innovative Technology Seminar

VV--7. TAF / CTF Test7. TAF / CTF TestTAF – PRECONNECT

$TNS_ADMIN/tnsnames.ora

ERP =(DESCRIPTION = (FAILOVER=ON) (LOAD_BALANCE=ON)

(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = vip-sc1)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = vip-sc2)(PORT = 1521))

)(CONNECT_DATA =(SERVICE_NAME = ERP)(FAILOVER_MODE =(BACKUP=ERP_PRECONNECT)(TYPE=SESSION)(METHOD=PRECONNECT)

))

ERP_PRECONNECT =(DESCRIPTION = (FAILOVER=ON) (LOAD_BALANCE=ON)

(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = vip-sc1)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = vip-sc2)(PORT = 1521))

)(CONNECT_DATA =(SERVICE_NAME = ERP_PRECONNECT)

))

Page 87: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

872006 Innovative Technology Seminar

VV--7. TAF / CTF Test7. TAF / CTF TestTAF – PRECONNECT

$ sqlplus ID/PWD@APSQL> select instance_name from v$instance;

RAC2SQL> select failover_type, failover_method, failed_over

From v$sessionWhere username=’ID’;

FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER SERVICE_NAMESESSION PRECONNECT NO ERP

** Sample Data Insert !!

SQL> insert into fan values (1);SQL> commit;

** Oracle Process 강제 Kill !!

$ ps –ef |grep “RAC1 (LOCAL=NO)” | awk ‘{print “kill -9 “ $2 }’ | sh –v

SQL> insert into fan values (1);

ORA-3113 : end-of-file on communication channel

Page 88: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

882006 Innovative Technology Seminar

VV--7. TAF / CTF Test7. TAF / CTF TestTAF – PRECONNECT

** Insert 다시 시도 !!

SQL> insert into fan values (1);2번째 Node 에서 Verify Automatically Failed-Over !!

SQL> select instance_name from v$instance;RAC2

SQL> select failover_type, failover_method, failed_overFrom v$sessionWhere username=’ID’;

FAILOVER_TYPE FAILOVER_METHOD FAILED_OVERSESSION BASIC YES

** TAF 사용시에 listener.ora 에서 GLOBAL_DBNAME 이름은 삭제 할 것!!

Page 89: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

892006 Innovative Technology Seminar

VI. VI. dddd command command 를를 활용한활용한 Data MigrationData Migration

1.1. Named Pipe Named Pipe 사용하기사용하기

2.2. FileFile--System System 과과 rawraw--device device 전환하기전환하기

3.3. QnAQnA

Page 90: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

902006 Innovative Technology Seminar

VIVI--1. Named Pipe 1. Named Pipe 사용하기사용하기

전통적인 Exp Imp :: 51시간 소요

1. Export on Source-DB 2. ftp or cp DMP to Target-DB3. Import on Target-DB

Page 91: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

912006 Innovative Technology Seminar

VIVI--1. Named Pipe 1. Named Pipe 사용하기사용하기

Named Pipe 사용하기 :: 20시간 소요

1. Make TNS-Alias to Source-DB 2. Make a Named Pipe on Target-DB3. Export & Import to Named-Pipe

Page 92: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

922006 Innovative Technology Seminar

VIVI--1. Named Pipe 1. Named Pipe 사용하기사용하기

Named Pipe & Multi-Thread :: 4시간 소요

1. Make TNS-Alias to Source-DB 2. Make a Named Pipe on Target-DB3. Export & Import to Named-Pipe with Parallel

Page 93: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

932006 Innovative Technology Seminar

VIVI--1. Named Pipe 1. Named Pipe 사용하기사용하기

System 환경 – Remote export 가 지원되는 경우

- Source DB :: Linux, Oracle 9i R2 - Target DB :: Solaris, Oracle 9i R2

Named Pipe 사용예제

1. TNS_Alias 생성% vi $TNS_ADMIN/tnsnames.ora

REMOTE =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = Source_DB_IP)(PORT = 1521))

)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ORCL)

))

2. Named Pipe 생성 Target DB !!% mknod /tmp/exp_pipe p

3. Export / Import Target DB !!% exp ID/PWD@REMOTE file=/tmp/exp_p log=exp_log buffer=10240000 directy=y &% imp ID/PWD file=/tmp/exp_p log=imp_log commit=y feedback=100 indexes=n …

** Source DB 에 export 받은 공간이 없는 경우에도 사용함 !!

Page 94: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

942006 Innovative Technology Seminar

VIVI--1. Named Pipe 1. Named Pipe 사용하기사용하기

System 환경 – Remote Export 가 지원되지 않는 경우

- Source DB :: Linux, Oracle 9i R2- Target DB :: Solaris, Oracle 10g R2

10gR2 에서는 9i DB 에 Remote 로 Export 가 지원되지 않는다.

Named Pipe 사용예제 ( dd 이용 )

1. Named Pipe 생성 & rsh 환경

% mknod /tmp/exp_pipe p Source DB 생성 !!% mknod /tmp/imp_pipe p Target DB 생성 !!

% rsh TARGET “ls –l “

2. Source DB 에서 Export Source DB !!

% dd if=/tmp/exp_p bs=8k | rsh TARGET “dd of=/tmp/imp_p bs=8k” &% exp ID/PWD file=/tmp/exp_p log=exp_log buffer=10240000 directy=y …

3. Target DB 에서 Import Target DB !!

% imp ID/PWD file=/tmp/imp_p log=imp_log commit=y feedback=100 indexes=n …

** 대용량 Data 인 경우 여러 개의 Pipe 를 생성하여 각 Table 별로 parallel 하게 진행한다. ** Source DB 에 export 받은 공간이 없는 경우에도 사용함 !!

Page 95: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

952006 Innovative Technology Seminar

VIVI--2. File2. File--System System 과과 rawraw--device device 전환하기전환하기

OS 별 Reserved size

** Oracle Data File 을 raw-device & File-System 으로 전환할 때 사용하며,특히 File-System 의 Single DB 환경을 raw-device 의 RAC 환경으로 전환시에 사용한다.

** 대부분의 OS 에서 raw device File 로 전환할 경우에는 반드시 Count 값을 주어야 한다.반대의 경우로 File raw device 의 경우 count 가 없더라도 File-System 상에서정확한 DBF Size block 개수만큼 raw device 에 기록한다.

** dd command 로 Read 시에는 skip 을 , Write 시에는 seek 을 사용 !!

0Windows

0Linux / Sco

64KCompaq Tru64

4K mklv –t

0 mklv –T

IBM AIX

0HP-UX

0Sun Solaris

OS Reserved SizePlatform

Page 96: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

962006 Innovative Technology Seminar

VIVI--2. File2. File--System System 과과 rawraw--device device 전환하기전환하기

IBM AIX 사용예

IBM AIX 5L 이후 OS Version 의 Oracle 10g 에서는 LV (raw-device) 생성시에 반드시 다음의 Option 을사용하도록 Recommend 한다.

/usr/sbin/mklv -y 'rac_data01' -T O -w n -s n -r n oravg03 128

즉 해당 Volume 이 Big Volume 을 지원함과 동시에 해당 LV 의 0번째 Offset 부터 사용하여 LV I/O Performance 를 향상시키며, 10g 에서는 –T Option 을 사용하지 않고 Tablespace 를 생성하면 다음의Warning Message 가 뿌려진다.

## alert.log 내용 !!

WARNING: You are creating/reusing datafile /dev/rlvb_CT_D01.WARNING: Oracle recommends creating new datafiles on devices with zero offset. The command "/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs" can be used. Please contact Oracle customer support for more details.Completed: create tablespace CT_TS_D datafile '/dev/rlvb_CT_D01' size 4000m segment space management autoWed May 3 04:21:57 2006create tablespace CT_TS_I datafile '/dev/rlvb_CT_I01' size 1000m autoextend offWed May 3 04:21:57 2006WARNING: You are creating datafile /dev/rlvb_CT_I01.WARNING: Oracle recommends creating new datafiles on devices with zero offset. The command "/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs" can be used. Please contact Oracle customer support for more details.

Page 97: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

972006 Innovative Technology Seminar

VIVI--2. File2. File--System System 과과 rawraw--device device 전환하기전환하기

IBM AIX 사용예

만약 chlv –T O /dev/rac_data01 의 명령을 사용하여 속성을 바꾸게 되면 모든 DBF Header Block 에대한 정보가 0번 Offset 부터 사용하게 되고, 결국 Header block 정보를 읽지못해 Crash 가 되므로 절대바로 수정을 해서는 안된다.!!.

## chlv –T O /dev/rlva_CONTROL01 후...ALTER DATABASE MOUNTFri May 5 18:34:48 2006This instance was first to mountFri May 5 18:34:48 2006ORA-00202: control file: '/dev/rlva_CONTROL01'ORA-27047: unable to read the header block of fileAdditional information: 2ORA-205 signalled during: ALTER DATABASE MOUNT...Fri May 5 18:34:49 2006Reconfiguration started (old inc 2, new inc 4)List of nodes

그러나 File-System 및 기본 Option 인 –t 를 사용하게 되면 AIX LV(logical volume, raw device)의 경우처음 512 Bytes 를 LVCB(logical volume control block)라 하여, AIX LVM(Logical Volume Manager)이제어용으로 사용합니다. AIX Raw Device 를 데이타 파일로 사용시 Oracle 에서는 이 부분을 포함한 처음4096 Bytes 를 사용하지 않는다고 합니다.

즉 Raw Device 의 4097 바이트째 부터 오라클 데이타가 쓰여집니다.

Page 98: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

982006 Innovative Technology Seminar

VIVI--2. File2. File--System System 과과 rawraw--device device 전환하기전환하기

IBM AIX 사용예

위의 차이점은 아래 dbfsize 라는 command 를 통해 확인 할 수 있다.

$ dbfsize /oracle-2/IMSI/rt_test01.dbfDatabase file: /oracle-2/IMSI/rt_test01.dbfDatabase file type: file system with 4K starting offsetDatabase file size: 128000 8192 byte blocks

$dbfsize /dev/rT_TEST01Database file: /dev/rT_TEST01Database file type: raw device without 4K starting offsetDatabase file size: 128000 8192 byte blocks

해당 문서는 다음의 내용을 담고 있으며 File-System 으로 구성된 대용량 Data 를 raw-device 등으로Migration 하거나, 신규 Version-Up 을 할 경우 즉, Single DB RAC 환경으로 Migration 할 경우 실시간으로 F/S raw-device 로 전환이 가능하므로 Down-Time 없이 Data Migration 이 가능하다.

1. F/S raw-device (mklv –t)2. raw-device (mklv –t) F/S3. F/S raw-device (mklv –T)4. raw-device (mklv –T) F/S5. raw-device (mklv –t) raw-device (mklv –t)6. raw-device (mklv –T) raw-device (mklv –T)7. raw-device (mklv –t) raw-device (mklv –T)8. raw-device (mklv –T) raw-device (mklv –t)

Page 99: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

992006 Innovative Technology Seminar

VIVI--2. File2. File--System System 과과 rawraw--device device 전환하기전환하기

기본환경

. OS : AIX localhost 1 5 000B5CBF4C00. Oracle : 9.2.0.7 64bit (Archive log mode). 생성한 LV# /usr/sbin/mklv -y 't_test01' –t 'O' oravg 2# /usr/sbin/mklv -y 't_test02' –t 'O' oravg 2# /usr/sbin/mklv -y 'T_TEST01' -T O -w n -s n -r n oravg 2# /usr/sbin/mklv -y 'T_TEST02' -T O -w n -s n -r n oravg 2# chown oracle.dba /dev/rt_test0*# chown oracle.dba /dev/rT_TEST0*

SQL> create tablespace small_t datafile '/oracle-2/IMSI/small_t.dbf' size 100m;SQL> create tablespace big_t datafile '/oracle-2/IMSI/big_t.dbf' size 100m;SQL> create table test.COUNTRIES tablespace small_t

as select * from hr.COUNTRIES;SQL> create table test.DEPARTMENTS tablespace small_t

as select * from hr.DEPARTMENTS;SQL> create table test.JOB_HISTORY tablespace big_t

as select * from hr.JOB_HISTORY;SQL> create table test.locations tablespace big_t as select * from hr.locations;

SQL> select (blocks+1)*8192/4096from dba_data_fileswhere file_name=’/oracle-2/IMSI/small_t.dbf’;

:: 25602

Page 100: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

1002006 Innovative Technology Seminar

VIVI--2. File2. File--System System 과과 rawraw--device device 전환하기전환하기

1. F/S raw-device (mklv –t)- 일반 File-System DBF 를 raw-device (mklv –t) 로 Conversion !!

SQL> alter tablespace small_t offline;$ dd if=/oracle-2/IMSI/small_t.dbf of=/dev/rt_test01 bs=4096 seek=125602+0 records in25602+0 records out

SQL> alter database rename file '/oracle-2/IMSI/small_t.dbf' to '/dev/rt_test01';SQL> alter database open;

2. raw-device (mklv –t) F/S- raw-device (mklv –t) 를 일반 File-System DBF 로 Conversion !!

SQL> alter tablespace small_t offline;$ dd if=/dev/rt_test01 of=/oracle-2/IMSI/small_t01.dbf bs=4096 skip=1 count=2560225602+0 records in25602+0 records out

-rw-r----- 1 oracle dba 104865792 May 13 07:36 small_t.dbf-rw-r----- 1 oracle dba 104865792 May 13 07:42 big_t.dbf-rw-r--r-- 1 oracle dba 104865792 May 13 07:48 small_t01.dbf

SQL> alter database rename file '/dev/rt_test01' to '/oracle-2/IMSI/small_t01.dbf';SQL> alter tablespace small_t online;

Page 101: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

1012006 Innovative Technology Seminar

VIVI--2. File2. File--System System 과과 rawraw--device device 전환하기전환하기

3. F/S raw-device (mklv –T)- 일반 File-System DBF 를 Big Volume raw-device (mklv –T) 로 Conversion !!

SQL> alter tablespace big_t offline;$ dd if=/oracle-2/IMSI/big_t.dbf bs=4096 seek=1 of=/dev/rT_TEST01 bs=4096 seek=025602+0 records in25602+0 records out

SQL> alter database rename file '/oracle-2/IMSI/big_t.dbf' to '/dev/rT_TEST01';SQL> alter tablespace big_t online;

4. raw-device (mklv –T) F/S- Big Volume raw-device (mklv –T) 를 일반 File-System DBF 로 Conversion !!

SQL> alter tablespace big_t offline;$ dd if=/dev/rT_TEST01 of=/oracle-2/IMSI/big_t01.dbf bs=4096 seek=0 count=2560225602+0 records in25602+0 records out

-rw-r----- 1 oracle dba 104865792 5월 13일 11:49 big_t.dbf-rw-r--r-- 1 oracle dba 104865792 5월 13일 14:02 big_t01.dbf

SQL> alter database rename file '/dev/rT_TEST01' to '/oracle-2/IMSI/big_t01.dbf';SQL> alter tablespace big_t online;

Page 102: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

1022006 Innovative Technology Seminar

VIVI--2. File2. File--System System 과과 rawraw--device device 전환하기전환하기

5. raw-device (mklv –t) raw-device (mklv –t)- raw-device (mklv –t) 를 raw-device (mklv –t) 로 Conversion !!

SQL> alter tablespace small_t offline;

$ dd if=/dev/rt_test02 of=/dev/rt_test01 bs=8k32768+0 records in32768+0 records out

SQL> alter database rename file '/dev/rt_test02' to '/dev/rt_test01';SQL> alter tablespace small_t online;

6. raw-device (mklv –T) raw-device (mklv –T)- Big Volume raw-device (mklv –T) 를 Big Volume raw-device (mklv –T) 로 Conversion !!

SQL> alter tablespace big_t2 offline;

$ dd if=/dev/rT_TEST01 of=/dev/rT_TEST02 bs=409665536+0 records in65536+0 records out

SQL> alter database rename file '/dev/rT_TEST01' to '/dev/rT_TEST02';SQL> alter tablespace big_t2 online;

Page 103: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

1032006 Innovative Technology Seminar

VIVI--2. File2. File--System System 과과 rawraw--device device 전환하기전환하기

7. raw-device (mklv –t) raw-device (mklv –T)- raw-device (mklv –t) 를 Big Volume raw-device (mklv –t) 로 Conversion !!

SQL> alter tablespace small_t offline;

$ dd if=/dev/rt_test02 skip=1 of=/dev/rT_TEST02 bs=4096 seek=065535+0 records in65535+0 records out

SQL> alter database rename file '/dev/rt_test02' to '/dev/rT_TEST02';SQL> alter tablespace small_t online;

8. raw-device (mklv –T) raw-device (mklv –t)- Big Volume raw-device (mklv –T) 를 raw-device (mklv –T) 로 Conversion !!

SQL> alter tablespace big_t offline;

$ dd if=/dev/rT_TEST01 of=/dev/rt_test01 bs=4096 seek=165536+0 records in65535+0 records out

SQL> alter database rename file '/dev/rT_TEST01' to '/dev/rt_test01';SQL> alter tablespace big_t online;

Page 104: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

1042006 Innovative Technology Seminar

VII. Error & TroubleVII. Error & Trouble--ShootingShooting

1.1. 설치시설치시 Error Error

2.2. 기타내용기타내용

Page 105: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

1052006 Innovative Technology Seminar

VIIVII--1. 1. 설치시설치시 ErrorErrorhagsuse group 이 없어서 crdb 시Failure 발생rootpre.sh 를 실행하지 않음.UID, GID 가 다를경우!!

HACMP 의 cluster Service 이름과/etc/hosts 정보 와 hostname 의이름이 서로 맞지않으면 아래의public & private Node 이름이보여지지 않는다.

Page 106: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

1062006 Innovative Technology Seminar

VIIVII--1. 1. 설치시설치시 ErrorError

Page 107: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

1072006 Innovative Technology Seminar

VIIVII--1. 1. 설치시설치시 ErrorError

ERROR MESSAGEora-19624: operation failed,k retry possibleora-19504: failed to create fileora-27041: unable to open file

해결됨) ^^ 각 Disk의 Cylinder 0번은 Disk의 정보를 유지하기 때문에사용자 데이터로 할당해서는 안된다.따라서, 아래의 그림과 같이 1번 Cylinder부터 partitioning을 해야 한다.(정확한 원인 규명 필요- OS제약인지, Hitacii Storage의 제약인지를 규명할 필요가 있음)

Page 108: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

1082006 Innovative Technology Seminar

VIIVII--2.2. 기타내용기타내용

1. 10g RAC 에 대한 DR 의 Single DB 구성하기

. Single DB 이므로 CRS S/W 설치없이 Oracle S/W 만 설치

. Volume 복제 Solution 에 의한 Disk 복제 및 Sync - 예 : True-Copy

. Init<SID>.ora 파일의 Cluster 관련 파라미터 주석(#) 처리

. 해당 Thread & Undo Tablespace 만 사용

2. 10g DB 로 Migration 하는 경우

. 자동 Table Monitoring 및 자동통계 Gathering 기능 Disable

SQL> alter system set statistics_level=basic;SQL> exec dbms_stats.ALTER_SCHEMA_TAB_MONITORING(NULL,TRUE);SQL> exec DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB')';

3. DIAG Daemon 이 CPU 를 계속 점유하고 있는 경우

. DIAG Daemon Disabled

SQL> alter system set trace_enabled=false sid='*';

Page 109: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

1092006 Innovative Technology Seminar

VIIVII--2.2. 기타내용기타내용

** Vote Disk Mirror 하기

0) OS 및 raw-device 준비 (200M 권고)

1) stop database$ srvctl stop database -d RACDB

2) stop nodeapps$ srvctl stop nodeapps -n rac7 $ srvctl stop nodeapps -n rac8

3) stop crs# crsctl stop crs root user !!

4) add VoteDisk# crsctl add css votedisk /dev/vg07/rvoting -force # crsctl add css votedisk /dev/vg08/rvoting -force

5) start crs# crsctl start crs# crsctl query css votedisk

6) start nodeapps$ srvctl start nodeapps -n rac7 $ srvctl start nodeapps -n rac8

7) start database$ srvctl start database -d RACDB

Page 110: Oracle10g R2 Real Application Cluster Set up & Fail over 구현

감 사 합 니 다

Learn Oracle From Oracle2006 Innovative Technology Seminar