DBA가 되고 싶은 병아리

ASM, DB 자동/수동 구성 본문

Oracle Study/Admin I

ASM, DB 자동/수동 구성

미스틱스 2012. 3. 29. 16:42

ASM이란?

ASM은 데이터베이스 구성 시 기본이 되는 디스크를 효율적으로 관리하기 위하여 오라클 10g에서 새로 선보인 데이터베이스 서비스이다. ASM은 하나의 SMP 장비뿐만 아니라 클러스터를 구성하는 모든 노드들에 대해서도 지원이 가능하다. ASM이 관리하는 모든 디스크에 대한 업무 분산 작업을 자동적으로 처리해 줌으로써 특정 디스크에 로드가 집중되는 핫 스팟(hot spot)현상을 최소할 수 있으며 이로 인해 성능을 극대화할 수 있다. 또한 데이터가 디스크에 균등한 크기로 저장 관리되어 fragmentation 현상이 발생하지 않는다. 그리고 ASM이 관리하는 영역에서 새로운 디스크가 추가되거나 삭제될 때마다, 기존 데이터들에 대해 재구성 작업이 자동적으로 일어난다. 또한 ASM은 특정 데이터에 대한 복사본을 자기 자신의 디스크에 유지할 수 있기 때문에 소프트웨어 미러링 효과를 볼 수 있다.

 

RAC 환경에서의 ASM 인스턴스

RAC 데이터베이스처럼 ASM 인스턴스들도 자체적으로 클러스터링을 할 수 있다. 이는 이미 셋업이 되어 있는 DLM 체계를 사용해서 가능한 것이다. 일반적으로 클러스터를 이루는 하나의 노드에는 하나의 ASM 인스턴스가 뜨도록 구성한다. 그리고 RAC 구성처럼 ASM 인스턴스가 관리하는 디스크는 모든 노드에서 인식 가능하도록 구성해야 한다. 데이터베이스 인스턴스는 오직 동일 노드에 있는 ASM 인스턴스와 상호 통신하게 된다. 만약 동일 노드에 서로 다른 데이터베이스 인스턴스가 존재할 경우, 그들은 그 노드에 있는 하나의 ASM 인스턴스를 공유하게 되는 것이다.

 

특정 디스크 그룹은 서로 다른 데이터베이스 파일을 저장할 수 있다. 이처럼 RAC 환경이 아닌 상태에서 서로 다른 데이터베이스가 동일한 디스크 그룹에 접근하는 것이 가능하다. 또한 하나의 데이터베이스는 동일한 ASM 인스턴스에 의해 관리되는 여러 개의 디스크 그룹에 그 데이터베이스 파일을 저장할 수도 있다.

Scalability

ASM imposes the following limits:

  • 63 disk groups in a storage system
  • 10,000 ASM disks in a storage system
  • 4 petabyte maximum storage for each ASM disk
  • 40 exabyte maximum storage for each storage system
  • 1 million files for each disk group
  • Maximum files sizes as shown in the following table:

Disk Group Type

Maximum File Size

External redundancy

35 TB

Normal redundancy

5.8 TB

High redundancy

3.9 TB

 

 

ASM을 설치하기 위한 최소 설정

  1. ASM에 사용할 디스크가 필요합니다.
  2. 커널 버전에 맞는 ASMLib 파일이 필요합니다.

 

Partition the Disks

터미널에서 작업을 합니다. 작업 형태는 다음과 같습니다.

n->p->1->enter->enter.->w

위와 같은 형식으로 모든 파티션을 잡습니다.

 

ASMLib Installation

ASM(Automatic Storage Management) 설치하기 위해서는 위에서 언급했듯이 추가설치가 필요 합니다. Oracle사에서 제공하는 Oracle Linux에서는 Oracle ASM관련 파일이 있지만 그렇지 않은 경우는 Oracle 홈페이지인 OTN website 방문하여 커널버전에 맞는 것으로 다운로드 해야 합니다. 우선 다운로드를 하기 전에 Kernel 버전을 조사합니다.

 

위와 같이 명령어로 조사를 하여 커널의 버전에 맞게 다운로드를 합니다. 다운로드해야 할 목록은 다음과 같습니다.

  • oracleasm-support-2.0.1-1.i386.rpm
  • oracleasmlib-2.0.1-1.i386.rpm
  • oracleasm-2.6.9-34.ELsmp-2.0.1-1.i686.rpm

오라클 사에서 제공하는 리눅스로 설치를 했을 경우 위와 같은 경로로 가면 버전에 맞는 oracle관련 파일을 찾을 수 있습니다. 다만 라이브러리 파일은 다운로드를 받아야 합니다.

 

위와 같이 설치를 진행 합니다.

오라클의 asm 서비스를 시작합니다.

 

ASM 툴을 사용해서 disk를 마킹 합니다.

Raw Device Setup

이 단계에서는 ASM에 접근하게 될 disk를 raw device로 등록합니다.

/etc/sysconfig/rawdevices 다음과 같은 줄을 root(관리자) 추가 합니다.

 

Raw device service 재기동

 

권한을 변경합니다.

위와 동일한 형태로 4개의 디스크를 추가합니다.

 

ASM 기동

Root 계정으로 "Cluster Manager" asm의 기동을 시킵니다.

 

ASM 구성

ASM은 DBCA구성을 이용하거나 수동으로 구성을 합니다.DBCA를 이용할 경우 아래와 같은 방식으로 진행 합니다.

 

 

 

 

 

Initialization Parameters for ASM Instances

수동으로 ASM을 구성을 위해 init파일을 작성을 합니다. 최소 다음의 내용을 작성해야 합니다.

 

Name

Description

INSTANCE_TYPE

Type은 반드시 ASM으로 구성해야 합니다.

 

Note: 반드시 포함되어야 하는 최소한의 옵션입니다.모든 변수에서 기본이 되는 값입니다.

ASM_POWER_LIMIT

디스크의 기본이 되는 power해당되는 값입니다.

Default: 1, Range: 0 – 11

 

See Also: "Tuning Rebalance Operations"

ASM_DISKSTRING

ASM_DISKSTRING 디스크의 순서를 생각 할 수 있습니다. Diskstring을 아래와 같이 기재하면 자동으로 인식하게 됩니다.

/dev/rdsk/*

/dev/rdsk/*s3,/dev/rdsk/*s4

위의 내용을 다음과 같이 간단히 할 수도 있습니다.:

/dev/rdsk/*s[34]

기본 값은 NULL이고 필수사항이 아닙니다. 기재하지 않으면 기본값으로 설정됩니다.

 

See Also: "Improving Disk Discovery Time"

ASM_DISKGROUPS

ASM instance 시작 시에 자동으로 Mount할 디스크 그룹의 목록을 기재하는 항목입니다. 기본 값은 NULL입니다. 만일 설정값에 아무 값도 없다면 no disk 상태로 마운트됩니다. 설정 값이 static이 아닌 dynamic으로 되어 있기 때문에 spfile에 기록해서 자동으로 ASM에 추가할 수도 있습니다.

 

Note: Issuing the ALTER DISKGROUP...ALL MOUNT or ALTER DISKGROUP...ALL DISMOUNT command does not affect the value of this parameter.

 

ASM의 spfile파일은 "$ORACLE_HOME/dbs/spfile+ASM.ora"로 저장이됩니다.

 

INIT파일의 작성

 

위와 같이 최소한의 값만을 넣고서 진행을 합니다.

 

ADD ASM disk Groups

 

위와 같은 형식으로 디스크 그룹을 작성합니다.

작성이 완료 되면 Mount를 해서 나머지 작업을 진행 합니다.

 

참고) 디스크 그룹을 작성하게 되면 자동으로 ASM인스턴스에 mount가 됩니다. 아래와 같이 shutdown동작을 지시하게 되면 diskgroup이 이미 mount 되어 있음을 알수 있고 startup할때도 mount되는 것을 확인 할수 있습니다.

 

여기까지 작성한 내용을 pfile로 따로 작성해서 보관합니다.

 

 

 

 

 

 

 

Manually Create Database

/etc/oratab을 다음과 같이 수정합니다.

마지막 아랫줄에 인스턴스의 이름과 home을 설정하고 저장합니다.

(vi $ORACLE_HOME/dbs/initorcl.ora)로 이동해서 다음과 같이 작성합니다.

db_domain=""

db_name=orcl

db_block_size=8192

control_files=('+DG1/control01.ctl','+DG1/control03.ctl','+DG1/control02.ctl')

undo_management=auto

undo_tablspace=undo

sga_max_size=300M

shared_pool_size=100M

audit_file_dest='/u01/app/oracle/admin/orcl/adump'

background_dump_dest='/u01/app/oracle/admin/orcl/bdump'

core_dump_dest='/u01/app/oracle/admin/orcl/cdump'

user_dump_dest='/u01/app/oracle/admin/orcl/udump'

nls_language=korean

nls_territory=korea

db_create_file_dest=+DG1

db_recovery_file_dest=+FRA

 

 

 

 

추가로 bdump폴더에 있는 alert_orcl.log를 감시하면서 database를 작성합니다.

 

 

모든 파라메터가 전체적으로 완료가 되면 데이터베이스를 작성합니다.

 

create database orcl

datafile '+DG1/system01.dbf' size 325M reuse

extent management local

sysaux

datafile '+DG1/sysaux01.dbf' size 325M reuse

undo tablespace undo

datafile '+DG1/undo01.dbf' size 200m reuse

autoextend on next 10240k maxsize unlimited

default temporary tablespace temp

tempfile '+DG1/temp01.dbf' size 20m reuse

autoextend on next 10240k maxsize unlimited

national character set UTF8

character set ko16mswin949

logfile

group 1 ('+DG1/redo01a.log') size 51200k,

group 2 ('+DG1/redo02a.log') size 51200k,

group 3 ('+DG1/redo03a.log') size 51200k;

 

위의 initorcl에서는 db_create_file_dest를 정했기 때문에 "+DG1"을 명시합니다.

추가로 다음의 sql을 실행하여 각종 database view를 생성 합니다. Login 계정은 sys as sysdba로 로그인 합니다.

 

@?/rdbms/admin/catalog.sql

 

 

@?/rdbms/admin/catproc.sql

 

 

동시에 진행하는 것도 좋기는 하지만 되도록이면 순차적으로 진행하는 것이 문제없이 create가 되고 sharde_pool_size를 크기 잡고 시작하게 되면 진행 속도가 빠르기 때문에 진행 속도를 위해서 크게 잡고 차후 조절을 해도 좋습니다.

다음은 pupbld.sql파일을 실행 합니다. 로그인 계정은 system으로 합니다.

 

 

다음은 listener를 구축하고 서비스를 확인 합니다.

 

 

위의 내용과 같이 성공적으로 시작이 되면 target database에 등록하고 관련된 내용을 입력합니다.

차후 tnsnames.ora파일을 수정하여 서비스를 정하고 네트워크 구성을 전부 완료 합니다.

Archive log 구성과 그 외의 나머지 설정은 수동 데이터베이스를 구성하는 것과 동일합니다.

'Oracle Study > Admin I' 카테고리의 다른 글

Direct NFS  (0) 2015.06.14
관리 시 유용한 기본 파라메터  (0) 2012.03.29
SQL Dictionary의 정리  (0) 2012.03.29
테이블 용량 조사하는 쿼리 예시  (0) 2012.02.03
대기 이벤트인 10046 진단이벤트  (0) 2012.02.03