블로그 이미지
redkite

카테고리

분류 전체보기 (291)
00.SI프로젝트 산출물 (0)
00.센터 운영 문서 (0)
01.DBMS ============.. (0)
01.오라클 (117)
001.DB 관리 (19)
002.DB 마이그레이션 (8)
003.DB 백업 및 복구 (20)
004.DB 보안 (8)
005.DB 설치 (7)
006.DB 스크립트 (0)
007.DB Knowledge Bas.. (38)
008.DB 통계 및 공간 관리 (3)
009.DB Trouble Shoot.. (14)
010.교육자료 (0)
999.테스트 (0)
01.MS-SQL (15)
01.MySQL (30)
01.PostgreSql (0)
01.DB튜닝 (28)
====================.. (0)
02.SERVER ==========.. (0)
02.서버-공통 (11)
02.서버-Linux (58)
02.서버-Unix (12)
02.서버-Windows (2)
====================.. (0)
03.APPLICATION =====.. (11)
====================.. (0)
04.ETC =============.. (0)
04.보안 (5)
====================.. (0)
05.개인자료 (1)
06.캠핑관련 (0)
07.OA관련 (1)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글


Script.zip


오라클 데이터베이스를 생성할 때 보통은 DBCA를 이용한다.
그러나 DBCA만 사용해 DB를 생성하다보면, DBCA를 사용할 수 없는 상황에는 당황하게 된다.


다음은 DBCA를 이용할 수 없는 경우 오라클 데이터베이스를 생성하는 절차다.

  1. SID, ORACLE_HOME 설정

    export ORACLE_SID=testdbexport ORACLE_HOME=/path/to/oracle/home

  2. 초기화 파라미터 파일 생성 (minimal)
    $ORACLE_HOME/dbs에 init<SID>.ora 파일을 만든다.

    control_files = (/path/to/control1.ctl,/path/to/control2.ctl,/path/to/control3.ctl)
    undo_management = AUTO
    undo_tablespace = UNDOTBS1
    db_name = test
    db_block_size = 8192
    sga_max_size = 1073741824 # 1GBsga_target = 1073741824 # 1GB

  3. 패스워드 파일 생성

    $ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/pwd{sid}.ora password=oracle entries=5

  4. 인스턴스 기동

    $ sqlplus '/as sysdba'

    SQL> startup nomount

  5. CREATE DATABASE 문 실행

    create database test
    dblogfile group 1 ('/path/to/redo1.log') size 100M,
    group 2 ('/path/to/redo2.log') size 100M,
    group 3 ('/path/to/redo3.log') size 100M
    character set ko16ksc5601
    national character set al16utf16
    datafile '/path/to/system.dbf' size 500M autoextend on next 10M maxsize unlimited extent management local
    sysaux datafile '/path/to/sysaux.dbf' size 100M autoextend on next 10M maxsize unlimited
    undo tablespace undotbs1 datafile '/path/to/undotbs1.dbf' size 100M
    default temporary tablespace temp tempfile '/path/to/temp01.dbf' size 100M;

    CREATE DATABASE 문 Syntax는 다음과 같다.
    CREATE DATABASE [database name]
    [CONTROLFILE REUSE]
    [LOGFILE [GROUP integer] file specification]
    [MAXLOGFILES integer]
    [MAXLOGMEMBERS integer]
    [MAXLOGHISTORY integer]
    [MAXDATAFILES integer]
    [MAXINSTANCES integer]
    [ARCHIVELOG|NOARCHIVELOG]
    [CHARACTER SET charset]
    [NATIONAL CHARACTER SET charset]
    [DATAFILE filespec [autoextend]]
    [DEFAULT TEMPORARY TABLESPACE tablespace filespec]
    [UNDO TABLESPACE tablespace DATAFILE filespec]
    [SET TIME_ZONE [time_zone_region]];

  6. Data Dictionary View 생성 스크립트 실행

    $ORACLE_HOME/rdbms/admin/CATALOG.sql$ORACLE_HOME/rdbms/admin/CATPROC.sql

  7. SPFILE 생성

    SQL> create spfile from pfile;

  8. 추가 테이블스페이스 생성
  9. sys, system 계정 암호 변경

Posted by redkite
, |

1. 환경 - 오라클SID 선택 가능 .profile(UNIX,ksh) 비공개  설치 및 환경관리 / ORACLE 

2010/08/19 15:33  수정  삭제

복사http://geniusgx.blog.me/20112014872

전용뷰어 보기

1개의 서버 장비에 여러 개의 인스탄스를 띄워야 하는 경우

다음과 같이 오라클 UNIX 계정의 .profile을 구성하면 편리하게

관리할 수 있다.

 

-------------------- < .profile 내용 > -----------------------------

 

##########################################################
###################### 호출 함수 #########################
##########################################################

if [ "$HERE_HOME"="" ]; then
   export HERE_HOME=`echo ``pwd```
fi

unset ORACLE_SID

SetSID() {
  while true
  do
    unset TEMP
    echo ""
    echo "###########################################"
    echo "#     1) 프로젝트 개발 (DEVDB)            #"
    echo "#     2) 통합     시험 (TESTDB)           #"
    echo "#     q) 종료   (default DEVDB)           #"
    echo "###########################################"
    read "TEMP? ▣ 사용할 DB를 선택하십시오 : "
    case $TEMP in
      "1")
           ORACLE_SID=DEVDB; export ORACLE_SID
           echo " [프로젝트 개발(DEVDB)]을 선택하셨습니다."
           break
           ;;
      "2")
           ORACLE_SID=TESTDB; export ORACLE_SID
           echo " [통합시험(TESTDB)]을 선택하셨습니다."  
           break
           ;;
       "Q")
           ORACLE_SID=DEVDB; export ORACLE_SID
           echo " [프로젝트 개발(DEVDB)]을 선택하셨습니다."
           break
           ;;
       "q")
           ORACLE_SID=DEVDB; export ORACLE_SID
           echo " [프로젝트 개발(DEVDB)]을 선택하셨습니다."
           break
           ;;
        *)
           unset ORACLE_SID
           ;;
     esac
  done
}

##########################################################
###################### 함수 호출 #########################
##########################################################
if [ ! "$ORACLE_SID" ]
then
   SetSID
fi

##########################################################
##########################################################
##########################################################
export PS1='$ORACLE_SID:$PWD> '
banner $ORACLE_SID

 

umask 022

 

export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export NLS_LANG=American_America.KO16MSWIN949
export ORA_NLS10=$ORACLE_HOME/nls/data
export TNS_ADMIN=$ORACLE_HOME/network/admin

 

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export SHLIB_PATH=$ORACLE_HOME/lib32:/lib:/usr/lib

 

export PATH=$PATH:/usr/bin:/usr/sbin:/usr/local/bin:/usr/ccs/bin
export PATH=$PATH:/etc:/bin:/usr/ucb:/usr/bin/X11:/sbin
export PATH=$PATH:.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch

 

# export DISPLAY=10.182.52.156:0.0

export LANG=C
export TERM=vt100
export EDITOR=vi

 

set -o vi
stty erase ^H

 

alias   home='cd $ORACLE_HOME'

 

Posted by redkite
, |

오라클 엔진을 설치하고나면 무엇부터 해야 할지 막막한 초보 DBA에게 도움이 되지 않을까 해서

적어 본다.

 

오라클10g(RAC아닌 Single), datafile이 UNIX file system의 경우를 예로 설명한다.
Windows버전도 순서는 다르지 않다.

데이터베이스를 설치한 후 보통의 경우 다음의 순서로 작업이 진행된다.

좀 더 세부적인 작업이나 옵션이 필요하겠지만 단순화한 순서이므로 감안하길 바란다.


1. 오라클 엔진 설치(INSTALL)
   1] 오라클 엔진 설치
   2] 오라클 데이터베이스 생성
   3] listener.ora 및 tnsname.ora 설정

   4] initTESTDB.ora(spfileTESTDB.ora) 설정 변경

 

2. 스키마 및 오브젝트 생성 순서
DB 생성이 되어 있다는 가정으로 다음과 같은 순서로

스키마(SCHEMA) 및 OBJECT를 생성한다면 무난할 것이다.

   1] 데이터파일을 저장할 Directory를 생성 
      % su - oracle
      % mkdir -p /data01/TESTDB
      % mkdir -p /data02/TESTDB

 

 

   2] 테이블스페이스(TABLESPACE) 생성
      SQL> CONNECT / as sysdba
      -- 데이터용 테이블스페이스 생성
      SQL> CREATE TABLESPACE       TS_GDXX01
                  datafile       '/data01/TESTDB/TS_GDXX01_01.dbf' size 50M REUSE
                  extent management local  autoallocate
                  segment space management auto;

      -- 인덱스용 테이블스페이스 생성
      SQL> CREATE TABLESPACE       TS_GIXX01
                  datafile       '/data02/TESTDB/TS_GIXX01_01.dbf' size 50M REUSE
                  extent management local  autoallocate
                  segment space management auto;

 

   3] 사용자(USER) 생성 
      SQL> CONNECT / as sysdba
      -- 응용프로그램 접속 계정(최소권한) : US_APPL
      SQL> CREATE USER                 US_APPL
                  IDENTIFIED BY        password
                  DEFAULT TABLESPACE   TS_GDXX01
                  TEMPORARY TABLESPACE TEMP;
      SQL> GRANT ALTER SESSION, CREATE SESSION         TO US_APPL;
      SQL> GRANT CREATE SYNONYM, UNLIMITED TABLESPACE  TO US_APPL;

      -- 오브젝트 소유 계정 : US_OWNER
      SQL> CREATE USER                 US_OWNER
                  IDENTIFIED BY        password
                  DEFAULT TABLESPACE   TS_GDXX01
                  TEMPORARY TABLESPACE TEMP;

      SQL> GRANT CONNECT, RESOURCE                            TO US_OWNER;
      SQL> GRANT CREATE PUBLIC SYNONYM, UNLIMITED TABLESPACE  TO US_OWNER;
   
   4] 테이블(TABLE) 생성 
      SQL> CONNECT US_OWNER/password
      SQL> CREATE TABLE TB_GXX001  (
                  PgmID     VARCHAR2(30) NOT NULL,
                  PgmNm     VARCHAR2(50) NULL,
                  BatchType CHAR(1) NULL
                  ChngDtime VARCHAR2(14) NOT NULL,
                  CONSTRAINT IX_GXX001_PK  PRIMARY KEY (PgmID)
                             USING INDEX TABLESPACE TS_GIXX01
                 ) TABLESPACE TS_GDXX01;
   
   5] 인덱스(INDEX) 생성 
      SQL> CONNECT US_OWNER/password
      SQL> CREATE INDEX IX_GXX001 ON TB_GXX001
                  ( BatchType ASC, PrgNm ASC )
                  TABLESPACE TS_GIXX01;
   
   6] 테이블(TABLE) 권한부여(GRANT) 
      SQL> CONNECT US_OWNER/password
      SQL> GRANT INSERT, SELECT, UPDATE, DELETE ON TB_GXX001  TO US_APPL;
   
   7] 테이블(TABLE) 동의어(SYNONYM) 
      SQL> CONNECT US_OWNER/password
      SQL> CREATE PUBLIC SYNONYM TB_GXX001  FOR US_OWNER.TB_GXX001;
   
   8] 시퀀스(SEQUENCE) 생성 
      SQL> CONNECT US_OWNER/password
      SQL> CREATE SEQUENCE SQ_GXX001  START WITH 1 INCREMENT BY 1 MAXVALUE 999999 CYCLE ORDER CACHE 10;
      SQL> GRANT SELECT ON SQ_GXX001  TO US_OWNER;
      SQL> CREATE PUBLIC SYNONYM SQ_GXX001  FOR US_OWNER.SQ_GXX001 ;
   
   9] 뷰(VIEW) 생성 
      SQL> CONNECT US_OWNER/password
      SQL> CREATE VIEW VW_GXX001_LIST .... ;
      SQL> GRANT SELECT ON VW_GXX001_LIST     TO US_APPL;
      SQL> CREATE PUBLIC SYNONYM VW_GXX001_LIST FOR US_OWNER.VW_GXX001_LIST;
   
   10] 저장 프로시져(STORED PROCEDURE/FUNCTION 등) 생성 
      SQL> CONNECT US_OWNER/password
      SQL> CREATE OR REPLACE PROCEDURE SP_GXX001_LIST ....;
      SQL> CREATE OR REPLACE FUNCTION  SF_GXX001_LIST ....;
      SQL> GRANT EXCUTE ON SP_GXX001_LIST     TO US_APPL;
      SQL> GRANT EXCUTE ON SF_GXX001_LIST     TO US_APPL;
      SQL> CREATE PUBLIC SYNONYM SP_GXX001_LIST FOR US_OWNER.SP_GXX001_LIST;
      SQL> CREATE PUBLIC SYNONYM SF_GXX001_LIST FOR US_OWNER.SF_GXX001_LIST;
   
   11] 외래키(FK CONSTRAINT) 생성 
      SQL> CONNECT US_OWNER/password
      SQL> ALTER TABLE TB_GXX001  ADD ( CONSTRAINT FK__GXX001
                 FOREIGN KEY ( SubPgmID ) REFERENCES TB_GXX999 ( PgmID ) );
   
   12] 트리거(TRIGGER) 생성 
      SQL> CONNECT US_OWNER/password
      SQL> CREATE OR REPLACE TRIGGER TR_GXX001_LIST .... ;


   13] 기타 필요한 것들 생성 및 등록

         - DB LINK, M-VIEW, DBMS JOB 등록 등

Posted by redkite
, |

Oracle VM Oracle Enterprise Linux Oracle 확장 RAC 클러스터 직접 구축하기

저자: Jakub Wartak

가상 환경에서 저렴한 비용으로 완벽하게 기능하는 Oracle 확장 RAC 구현하는 방법

설명서의 정보는 Oracle 검증을 받지 않았고 Oracle에서 지원하는 것이 아니므로 사용자 본인의 결정에 따라 사용해야 하며, 정보 습득을 위한 교육용 자료로만 참고해야 합니다.

업데이트일 : 2008 10

Contents

설명서는 저자의 승인을 받아 Oracle ACE Jeffrey Hunter "Build Your Own Oracle RAC 11g Cluster on Oracle Enterprise Linux and iSCSI" 설명서를 기초로 작성된 것입니다. Linux Oracle RAC 설치하는 것이 궁금할 경우 그의 설명서를 읽어 보도록 하십시오. 설명서는 독자가 Oracle RAC 어느 정도의 경험이 있음을 전제로 작성되었습니다.

1. 소개

일반적인 Oracle RAC(Real Application Cluster) 구현은 하나 또는 여러 노드의 장애를 신속하게 복구하는 아키텍처입니다. 그러나 일반적인 시나리오에서 Oracle RAC 모든 노드는 곳의 데이터 센터에 있으므로 치명적인 데이터 센터 장애로 이어지기 쉽습니다. 시나리오에서 재난 복구를 위한 솔루션은 로컬 데이터 센터와 일부 백업 데이터 센터 간에 Oracle DataGuard 설치하여 대기 시스템(일반적으로 하나의 Oracle Database 또는 다른 RAC 클러스터) 실행하는 것입니다.

DataGuard 역할을 물론 수행하지만 전체 대기 시스템과 어레이를 패시브 노드로 전환하므로 트랜잭션에 전산 능력을 사용할 없게 되며 이로 인해 솔루션 비용이 매우 높아집니다. (대기 Oracle DataGuard 시스템은 읽기 전용 쿼리를 수행하기 위해 있고 Active DataGuard in Oracle Database 11g 사용할 경우 항상 읽기 전용 모드로 실행할 수도 있지만, 구성의 경우 애플리케이션이 일부 노드의 읽기 전용 특성을 알고 있어야 합니다.)

다행히도 부분적인 재난 복구를 위한 다른 솔루션이 있으며 그것이 바로 확장 RAC입니다. 아키텍처에서 일부 RAC 노드는 "알파 사이트"에서 작동하며 나머지 노드는 "베타 사이트"에서 작동합니다. 사이트의 노드는 액티브 모드이므로 모든 전산 리소스를 충분히 사용합니다. 그림 1에서 있는 것처럼 사이트에는 전용 SAN(Storage Area Network) 있고, 양쪽 데이터 센터(dcA dcB) 있는 시스템은 동일한 RAC 구성원이므로 데이터를 신속하게 상호 교환할 있고 다른 사이트의 스토리지에 액세스할 있습니다. , dcA 있는 RAC1 노드는 dcB 있는 SAN 어레이에 데이터를 쓰고 dcB 있는 RAC2 노드와도 통신합니다.


그림 1

설명서에서는 교육상의 목적으로 하나의 PC x86 64비트 시스템에 Oracle VM 2.1 가상화 기술을 사용하여 저렴하면서도 완벽한 기능을 갖춘 Oracle 확장 RAC 구현해 보겠습니다. 자세한 구성은 그림 2 참조하십시오. IP 네트워크 설비를 위한 Linux QoS(Quality of Source) 사용하는 스토리지 이더넷 트래픽과 상호 연결의 가장 제약 요소는 지연 대기입니다. Oracle RAC 상호 연결에서의 지연 대기와 읽기 또는 쓰기 중의 I/O 지연 대기에 민감합니다.

확장 RAC 다음 요건 하나를 만족할 경우 비용을 절감시키며 기업 애플리케이션에 대한 가용성을 극대화합니다.

  • 개의 데이터센터/건물/서버실이 지연 대기가 거의 없는 고속 네트워크를 통해 직접 연결되어 있는 경우(또는 해당 위치에 스토리지 인프라가 이미 있는 경우)
  • 회사에서 시스템 가용성을 위해 투자할 계획인 경우(RAC Data Guard보다 장애 조치 시간이 짧음)

또한 이론상으로 확장 RAC에서 스토리지 어레이는 전력 공급이 중단되어도 클러스트에서 요청을 처리할 있기 때문에 최고의 안정성을 갖출 필요는 없습니다.

설명서에서 다룬 구성에서 Oracle Database 11g Release 1(RAC 구성) 대의 Oracle Enterprise Linux 5.1 시스템 상위에서 실행됩니다. Oracle RAC 노드를 위한 스토리지는 OpenFiler에서 실행하는 개의 iSCSI 스토리지 서버에서 제공합니다. 또한 구성은 Oracle ASM(Automatic Storage Management)에서 제공하는 기능과 Oracle Database 10g 이상 버전에서 제공하는 호스트/데이터베이스 기반의 미러링 기능을 사용합니다.


그림 2

실제 하드웨어를 사용하여 확장 RAC 구현함으로써 성능을 개선하는 것이 가장 이상적이지만 아키텍처는 연구 교육용이므로 이러한 절충이 허용됩니다. Oracle VM Server 설치하는 데에는 대의 컴퓨터만 필요하지만 가상 시스템을 관리하기 위한 간편한 콘솔인 Oracle VM Manager 설치하기 위해 다른 PC 필요합니다

현재까지도 선호되는 스토리지로 FCP(Fibre Channel Protocol) 선택되고 있지만 Oracle에서는 Oracle Direct NFS 같은 성능 개선과 함께 Oracle Database 11g 데이터 파일에 대해 NFS 공유 스토리지를 지원하기 시작했습니다. 이러한 설치 특성으로 인해 스토리지 옵션으로 보다 단순한 iSCSI 접근 방식을 고수하여 실제 FCP 개념을 유지할 것입니다. 확장 RAC 시나리오에서 내결함성을 갖춘 완벽한 아키텍처를 구현하려면 dcA dcB 아닌 다른 위치에 3 보팅 디스크를 갖춰야 합니다.

설명서에 나오는 디스크 미러링 구성은 실제 시나리오에는 부적합하며 I/O 멀티패칭 또는 리던던시형의 상호 연결도 지원하지 않습니다. 또한 설명서는 Oracle RAC 11g 평가 시스템을 성공적으로 설치하기 위한 자세한 지침을 제공하지만 지침이 공식적인 Oracle 설명서를 대신하는 것은 아닙니다. 설명서 외에도 다음과 같은 Oracle 설명서를 참조하여 Oracle RAC 11g 다른 구성 옵션, 설치 관리에 대해 완벽하게 알아 두어야 합니다.

Oracle VM 설치는 다음에서 수행되었습니다.

  • Intel QuadCore Q6600 2.4GHz(4 코어)
  • 8GB DDR2 RAM
  • 3x160GB SATAII 7200 RPM 하드 디스크
  • DVD 리더

Oracle VM Manager CentOS 5.0 실행되는 워크스테이션에 설치되었습니다. Oracle Enterprise Linux 5 설치해도 되지만 시간을 절약하기 위해 기존의 CentOS 설치 워크스테이션을 사용했습니다.

  • AMD Sempron 3000+(단일 코어)
  • 1.5GB DDR RAM
  • 250GB SATA 하드 디스크
  • DVD 라이터

시작하기 전에 다음 사항을 반드시 유의하도록 하시기 바랍니다: 설명서는 교육용으로 제작된 것이므로 실제 구축은 지원되지 않으며 고려되지도 않습니다. Oracle 지원 팀에서는 설명서를 참조하여 수행하는 과정에서 발생한 문제를 해결해 드리지 않습니다.

2. 필요한 소프트웨어

확장 RAC 작성하려면 아래에서 설명한 대로 다음 소프트웨어를 다운로드해야 합니다.

Oracle VM Server 2.1 Oracle VM Manager 2.1

제품은 모두 무료로 제공됩니다. 등록 Select a Product Pack 에서 Oracle VM 선택하고 Product architecture에서 x86 64 bit 선택한 다음 Go 선택해야 합니다. Oracle VM 2.1 Media Pack 선택하고 Continue 클릭합니다. 이제 다음 항목이 표시됩니다.

  • Oracle VM server 2.1 (304MB)
  • Oracle VM manager 2.1 (534MB)

항목을 미리 준비해 놓은 디렉토리로 다운로드합니다. 개의 *.zip 파일의 압축을 풀면 개의 ISO 파일이 생성되며, 평소에 사용하는 CD 굽기 소프트웨어를 사용하여 파일을 CD 굽습니다.

  • OracleVM-Server-2.1.iso
  • OracleVM-Manager-2.1.iso

(힌트: ISO 다운로드한 컴퓨터에서 설치할 경우에는 OracleVM-Manager-2.1.iso 설치하기 위해 CD 구울 필요가 없습니다. Linux에서 다음 명령을 사용하여 /mnt/cdrom 루프백 CD 마운팅할 있습니다.)

mount -o loop,ro OracleVM-Manager-2.1.iso /mnt/cdrom"

Oracle Enterprise Linux 5.1 Update 1 "Small" 템플릿(PV_x86_64)

여기에서는 설치 CD DVD 사용하여 처음부터 Linux 시스템을 설치하지 않고 Oracle에서 제공한 VM Linux 템플릿을 사용합니다. VM Linux 템플릿은 바로 실행할 있는 전체 시스템의 디스크 이미지인 바이너리 파일입니다. Oracle VM에서 제공하는 환경은 일반적인 환경이기 때문에 시스템별로 설치를 수행하여 드라이버를 생성할 필요는 없고 대신 템플릿에서 모든 Linux 인스턴스를 복제하여 실행하면 됩니다. Oracle에서는 Oracle Database 맞게 사전 구성된 템플릿을 제공합니다.

계약에 동의하고 서명한 Product Pack 선택 목록에서 Oracle VM Templates 선택하고 from the Platform 선택 목록에서 x86_64 선택한 Go 클릭합니다. Oracle VM Templates for Oracle Enterprise Linux 5 Media Pack for x86_64 (64 bit) 링크를 클릭한 다음 Oracle Enterprise Linux 5 Update 2 템플릿 - PV Small x86_64(64bit) 다운로드하도록 선택합니다.

PV(Paravirtualized) 시스템과 HVM(Hardware Virtualized) 시스템의 주요 차이점은 Linux 커널과 Oracle VM Server 커널(Xen 하이퍼바이저) 간의 상호 작용 특성입니다. HVM 시스템은 특별한 도구 없이 Xen 기능을 사용하는 표준 x86 또는 x86_64 시스템으로서 표준 PC에서 Xen 없이 실행할 있습니다. 반면에 PV 시스템은 Xen에서 실행하고 있다는 사실을 알고 있으므로 하드웨어와 통신하지 않고 Xen 직접 통신하며, HVM 경우와 달리 실제 하드웨어를 에뮬레이션할 필요가 없습니다

Oracle Database 11g Clusterware for Linux x86 64-bit

다운로드해야 파일 이름은 다음과 같습니다:

  • linux.x64_11gR1_database.zip
  • linux.x64_11gR1_clusterware.zip

OpenFiler 2.2 for Xen 64-bit

다운로드 페이지로 이동한 openfiler-2.2-x86.img.gz (~160MB) 찾습니다. 여기서는 2.2 버전을 사용하지만 2.3 버전이 있는지 확인해 봅니다. 2.3 버전에는 iSCSI 스냅샷에 대한 LUN 매핑 iSCSI 동적 볼륨 크기 조정 등과 같은 유요한 기능이 새로 추가되었습니다. , 2.3 버전은 설명서에 대해 테스트되지는 않았습니다.

3. Oracle VM Server 설치

Oracle VM Server 부팅 CD 구운 PC 넣습니다. PC 스와핑 없이 여러 개의 Linux 인스턴스를 실행하기에 충분한 CPU RAM 갖추고 있어야 합니다. 다음 설명에 따라 Oracle VM 설치합니다.

  1. "Oracle VM Server"라는 제목의 부팅 화면이 나타나면 <ENTER> 눌러 설치를 시작합니다.
  2. 그런 다음 설치하기 전에 CD 테스트하도록 선택할 있습니다. 손상되거나 잘못 구어진 CD 인해 설치가 중단되지 않도록 OK 눌러 CD 테스트하는 것이 좋습니다.
  3. 언어 선택 창에서 English 선택하고 OK 눌러 계속합니다. 그런 다음 키보드 모델을 선택하거나 기본 모델을 사용합니다.
  4. 원할 경우 파티셔닝 대화 상자에 액세스하여 기존의 파티션을 삭제할 있습니다. 기존의 파티션에 데이터가 들어 있을 있으므로 주의하십시오. 직접 만든 장비의 성능을 최대화하기 위해 개의 디스크로 구성된 RAID0 어레이를 만들 것입니다. GRUB 부트 로더는 RAID0에서 부팅할 없으므로 전용 부트 파티션을 만들어야 합니다.
    1. 모든 디스크에서 모든 파티션을 지웁니다.
    2. sda에서 ext3 파일 시스템을 포함하는 256MB/부트 파티션을 만듭니다( 번째 SATA 디스크). 여기에는 VM Server 하이퍼바이저를 부팅하는 필요한 initrd 이미지와 커널이 포함됩니다. 작성 "Force to be primary partition" 선택하여 x86 기본 파티션이 되도록 합니다. 이름을 sda1 지정합니다.
    3. sda 1GB 정도의 스왑 파티션을 만듭니다. (참고: Oracle VM dom0 기본적으로 최대 512MB 메모리를 사용하도록 구성되고 메모리를 많이 사용하는 애플리케이션이 없으므로 단지 스왑용으로 GB 스토리지를 할애할 필요는 없습니다. Dom0 기본적으로 실제 I/O 수행하고 하드웨어 작업을 처리하는 작업만 담당합니다. 하지만 domU[실제 VM] 필요에 따라 적절한 크기의 개별 스왑 공간이 필요합니다.)
    4. sda에서 Fill all available space 옵션 선택하여 "소프트웨어 RAID 파티션" 만들고, 이름을 sda3으로 지정합니다.
    5. sdb에서 Fill all available space 옵션 선택하여 "소프트웨어 RAID 파티션" 만들고, 이름을 sdb1 지정합니다.
    6. sdc에서 Fill all available space 옵션 선택하여 "소프트웨어 RAID 파티션" 만들고 이름을 sdc1 지정합니다. .
    7. 디스크가 여러 개일 경우 스토리지 성능이 극대화될 있도록 디스크에 RAID 파티션을 만듭니다.
    8. RAID 버튼을 클릭하여 소프트웨어 RAID 어레이를 만듭니다. RAID0 선택한 어레이에 포함시킬 모든 소프트웨어 RAID 파티션을 선택합니다( 시나리오의 경우: sda3, sdb1, sdc1). 파일 시스템이 "ext3"이고 마운트 지점이 "/"인지 확인합니다. (참고: 기본 RAID0 스트라이프는 256kB입니다.) Oracle VM 설치 프로그램을 사용하여 소프트웨어 RAID 어레이를 만드는 동안에는 값을 변경할 없습니다. 하지만 원할 경우 설치 전에 Alt-F2 눌러 번째 가상 콘솔로 전환하여 기존 어레이를 내리고 mdadm 사용하여 RAID 어레이를 다시 만들 있습니다. , 실제로 테스트해 보지는 않았습니다!)
    9. 변경 사항을 적용하고 OK 버튼을 눌러 파티션 변경을 저장합니다.
    10. 다음 화면에서는 부트 로더(GRUB) 설치할 위치를 선택해야 합니다. MBR(마스터 부트 레코드) 배치하십시오.
    11. 이제 관리 인터페이스로 사용할 이더넷 인터페이스를 결정해야 합니다. 예에서는 "eth0"(처음으로 검색된 이더넷 PCI 네트워크 카드) 사용합니다. 네트워크 카드를 선택했으면 올바른 IP 주소를 설정해야 합니다.
      1. "Enable IPv4 support" 옵션과 "Activate on boot" 옵션만 선택하십시오.
      2. "IPv4" 필드에 IP 주소를 입력하여 구성합니다. 시나리오에서는 "10.99.1.2" 사용합니다. 올바른 접두어/넷마스크(: "255.255.255.0" 경우 "24") 입력해야 합니다.
      3. OK 클릭하여 구성을 적용합니다.
      4. IPv4 게이트웨이와 DNS 네임 서버를 묻는 메시지가 표시됩니다(: "10.99.1.1").
      5. Hostname Configuration에서 manual 모드를 선택하고 해당 서버를 위한 알기 쉬운 호스트 이름(: "quadovm") 입력합니다.
    12. 네트워킹을 구성하면 다음을 선택하라는 메시지가 표시됩니다
      1. 시간대(해당 시간대 선택).
      2. Oracle VM Agent 암호 - Oracle VM Manager에서 Oracle VM Server 관리하는 사용할 암호이므로 신중하게 지정하고 공개되지 않도록 관리합니다.
      3. 루트 암호 - Oracle VM Server 대한 기본 관리 암호이므로 신중하게 지정해야 합니다. .

이제 설치가 완료될 때까지 기다립니다. CD 트레이가 자동으로 배출됩니다. 다시 부팅하면 Oracle VM Server 표시됩니다. 다음 위치에서 루트 사용자로 로그인할 있습니다

  • 직접 콘솔 또는 KVM에서 로그인
  • 워크스테이션에서 ssh -l root 10.99.1.2 사용하여 SSH 통해 로그인. 참고: Oracle VM Server Xen dom0 도메인에 대해 512MB RAM 제공합니다. 시스템에 설치된 RAM 이보다 경우에도 마찬가지입니다. 이는 정상적인 동작이며 나머지 메모리는 게스트 VM 사용됩니다. 다음을 실행하여 실제 사용 가능한 메모리를 확인할 있습니다.

[root@quadovm ~]# xm info | grep mem
total_memory : 8182
free_memory : 7537
[root@quadovm ~]#

4. Oracle VM Manager 설치

Oracle VM Manager 설치는 비교적 간단합니다. Oracle VM Manager ISO CD 넣으면 설치 프로그램이 시작됩니다.

[root@xeno ~]# cd /mnt/cdrom
[root@xeno cdrom]# sh runInstaller.sh
[..]
Welcome to Oracle VM Manager

Please enter the choice: [1|2]

  1. Install Oracle VM Manager
  2. Uninstall Oracle VM Manager

"1" 선택하면 설치가 계속 진행됩니다. 워크스테이션에 Oracle VM Manager만을 위한 2GB 여유 공간이 있어야 합니다. 설치는 비교적 간단합니다.

 

Starting Oracle VM Manager installation ...

 

 

Checking the supported platforms ... Done

 

 

Checking the prerequisite packages are installed ... Done

 

 

Checking the available disk space ... Done

 

 

Installing the oracle-xe-univ package (rpm) ... Done

 

 

Oracle Database 10g Express Edition Configuration ------------------------------------------------- This will configure on-boot properties of Oracle Database 10g Express Edition. The following questions will determine whether the database should be starting upon system boot, the ports it will use, and the passwords that will be used for database accounts. Press <Enter> to accept the defaults. Ctrl-C will abort.

 

 

 

 

 

Specify the HTTP port that will be used for Oracle Application Express [8080]: We chose the default tomcat 8080 port, but you can always pick any other port in this case. Specify a port that will be used for the database listener [1521]: <ENTER>

 

 

Specify a password to be used for database accounts. Note that the same password will be used for SYS and SYSTEM. Oracle recommends the use of different passwords for each database account. This can be done after initial configuration: Confirm the password: Here we pick an unbreakable password. Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]: <ENTER>

 

 

Starting Oracle Net Listener...Done Configuring Database...Done Starting Oracle Database 10g Express Edition Instance...Done Installation Completed Successfully. To access the Database Home Page go to http://127.0.0.1:8080/apex

 

 

 

 

 

Installing the ovs-manager package (rpm) ... Done

 

 

Set default schema to 'OVS'. Please enter the password for OVS: <ENTER PASSWORD HERE> Please re-enter the password for OVS: <ENTER PASSWORD HERE> Again, we pick a secret password for the VM Manager schema. Creating the Oracle VM Manager database schema ...Done

 

 

Installing the oc4j package (rpm) ... Done The default password for oc4jadmin is oracle. You can change the default password after the installation completes. To access the OC4J Home Page and change the password go to http://127.0.0.1:8888/em Starting OC4J ... Done OC4J logfiles can be found in /var/log/ovm-manager/oc4j.log.

 

 

Deploying Oracle VM Manager application to OC4J container. Please enter the password for oc4jadmin: oracle Please enter the Oracle Net Listener Port , default is [1521] ? <ENTER> Creating connection pool ...

 

 

Deploying Oracle VM Manager application to OC4J container. Please enter the password for oc4jadmin: Please enter the Oracle Net Listener Port , default is [1521] ? <ENTER> Creating connection pool ... Done Creating data source ... Done Deploying application ... Done Deploying application help ... Done Configuring Oracle VM Manager DataCollector ... Done

 

 

Configuring SMTP server ... Please enter the outgoing mail server (SMTP) hostname: localhost Setting the SMTP hostname server to localhost ... Done

 

 

Configuring e-mail address for Oracle VM Manager account 'admin'... Please enter an e-mail address for the admin account : localuser


 

"localuser" 메일 전송을 위한 본인의 로컬 사용자 이름으로 대체합니다. 지침에 따라 http://127.0.0.1:8888/OVS 이동하여 Oracle VM Manager 액세스합니다. 다시 부팅한 /etc/init.d/oracle-xe 스크립트와 /etc/init.d/oc4j 스크립트를 사용하여 Oracle VM Manager 시작하고 중지할 있습니다.

5. VM(Virtual Machine) 설정

먼저 Oracle VM Server(quadvm) Oracle VM Manager 새로운 "스풀" 마스터로 등록해야 합니다. 스풀은 하나 이상의 물리적인 서버를 포함하는 논리적인 독립 영역입니다.

Servers Pools 탭으로 이동한 Create Server Pool에서 quadvm Oracle VM Server 서버 마스터, VM 서버, 유틸리티 마스터가 되도록 정보를 입력하고 스풀에 대해 spool1 같은 알기 쉬운 이름을 지정합니다.


그림 3

다음 화면에서 "admin" 사용자를 선택합니다.


그림 4

모든 항목을 확인하여 새로운 스풀을 만듭니다.


그림 5


그림 6

VM(Virtual Machine) 만들기

앞에서도 말했듯이 가상화를 사용하면 템플릿 이미지를 복사하여 시스템을 복제할 있습니다. 다음은 이를 수행하는 방법입니다.

템플릿 업로드하기

먼저 VM 템플릿과 OpenFiler VM Server 보내야 합니다.

[vnull@xeno OracleVM]$ scp -r OVM_EL5U1_X86_64_PVM_4GB root@10.99.1.2:/root/ root@10.99.1.2's password: vm.cfg 100% 318 0.3KB/s 00:00 system.img 100% 6144MB 8.8MB/s 11:41 README 100% 158 0.2KB/s 00:00 [vnull@xeno OracleVM]$ cd ~/ISO [vnull@xeno ISO]$ scp openfiler-2.2-x86_64.img.gz root@10.99.1.2:/root root@10.99.1.2's password: openfiler-2.2-x86_64.img.gz 100% 175MB 10.9MB/s 00:16 [vnull@xeno ISO]$

그런 다음 나중에 VM Server 서브에이전트에서 자동으로 검색할 있도록 VM 템플릿을 해당 디렉토리로 옮겨야 합니다.

[root@quadovm ~]# ls -al OVM_EL5U1_X86_64_PVM_4GB/ total 6297632 drwxr-xr-x 2 root root 4096 May 6 14:04 . drwxr-x--- 4 root root 4096 May 6 13:52 .. -rw-r--r-- 1 root root 158 May 6 14:04 README -rwxr-xr-x 1 root root 6442450945 May 6 14:04 system.img -rw-r--r-- 1 root root 318 May 6 13:52 vm.cfg [root@quadovm ~]# mv OVM_EL5U1_X86_64_PVM_4GB /OVS/seed_pool/ [root@quadovm ~]#

Resources 가서 Import 누릅니다. Internal Virtual Machine Template 선택합니다.


그림 7

템플릿 정보를 입력합니다. 템플릿 이름 OVM_EL5U1_X86_64_PVM_4GB 자동으로 검색되어야 하며 자동으로 검색되지 않을 경우 로그아웃한 다시 로그온하십시오.


그림 8

가져오기 작업을 확인합니다.


그림 9

템플릿이 표시되어야 하며 템플릿을 선택하고 Approve 버튼을 클릭합니다.


그림 10

OEL 템플릿을 기반으로 RAC VM 만들기

로그아웃하고 다시 로그인하여 Virtual Machines -> Create Virtual Machine으로 이동한 Create Virtual Machine based on Virtual Machine template 선택합니다.


그림 11

"spool1" 서버 풀을 선택합니다.


그림 12

Source탭에서 방금 추가한 템플릿을 선택합니다. 1개가 있어야 합니다.


그림 13

Virtual Machine Info 탭에서 원하는 VM 이름(: rac1), 암호 하나의 인터페이스를 입력합니다.


그림 14

요약 화면에서 모든 항목을 다시 확인한 Confirm 클릭합니다.


그림 15

기본 VM 화면에 새로 추가한 rac1 VM Creating 상태로 표시되어야 합니다. Oracle VM에서 템플릿을 시스템으로 복사하고 있습니다.


그림 16

"rac2" 노드에 대해 단계를 반복합니다. 단계에서 Oracle RAC 설치에 사용할 있는 대의 Linux 시스템이 있어야 합니다. 시스템을 Oracle 소프트웨어 설치를 위해 메모리와 공간을 늘리도록 다시 구성합니다.

Virtual Machines으로 가서 "rac1" 또는 "rac2" 클릭합니다. General Information에서 Edit 갑니다. RAM 크기를 1,024MB에서 2,048MB 변경합니다.


그림 17

Virtual Disk 탭으로 가서 Create New Virtual Disk 클릭합니다. 여기서 번째 시스템에 대해 추가 디스크에서 필요한 공간을 지정합니다. 다음 값을 사용합니다.

가상 디스크 이름: oracle_software

가상 디스크 크기(MB): 8,192

작성을 마치면 Virtual Disks 화면에 8GB 디스크가 생성되었다는 메시지가 나타납니다.


그림 18

OpenFiler VM 만들기

이제 iSCSI 스토리지 장치(OpenFiler) 만들어 보겠습니다. 단계는 Oracle VM Manager 없이 수동으로 수행해야 하므로 OpenFilers VM Manager 콘솔에서 관리하지 않습니다

[root@quadovm ~]# cd /OVS/running_pool/ [root@quadovm running_pool]# ls 132_rac1 134_rac2 [root@quadovm running_pool]# mkdir 60_iscsi1 62_iscsi2 [root@quadovm running_pool]# gzip -d /root/openfiler-2.2-x86_64.img.gz [root@quadovm running_pool]# cp /root/openfiler-2.2-x86_64.img 60_iscsi1/ [root@quadovm running_pool]# cp /root/openfiler-2.2-x86_64.img 62_iscsi2/

앞에서도 보았듯이 OpenFiler Xen 장치는 하나의 이미지 파일로 다운로드할 있지만 Xen에서 VM 부팅하려면 커널과 initrd 이미지가 필요하며 이들은 이미 파일 내에 있습니다. 문제를 해결하려면 제공된 이미지에서 initrd 커널 이미지를 추출하여 dom0에서 처음 512바이트(MBR - Master Boot Record) 건너뛰어야 합니다. 그런 다음 내부 파일 시스템을 루프백 마운트하고 필요한 부분을 복사합니다.

[root@quadovm running_pool]# losetup -o 512 /dev/loop4 /root/openfiler-2.2-x86_64.img [root@quadovm running_pool]# mount -o ro /dev/loop4 /mnt [root@quadovm running_pool]# cp /mnt/boot/initrd* /mnt/boot/vmlinuz* 60_iscsi1/ [root@quadovm running_pool]# cp /mnt/boot/initrd* /mnt/boot/vmlinuz* 62_iscsi2/ [root@quadovm running_pool]# umount /mnt [root@quadovm running_pool]# losetup -d /dev/loop4

시스템, 커널, initrd 이미지를 준비했으면 이제 iSCSI LUN 저장할 전용 디스크가 필요합니다. 패딩이 0 파일을 작성하면 되며 OpenFiler VM에서 파일을 실제 디스크로 사용하게 됩니다.

[root@quadovm running_pool]# dd if=/dev/zero of=60_iscsi1/volume1.img bs=1M count=12000 12000+0 records in 12000+0 records out 12582912000 bytes (13 GB) copied, 83.3836 seconds, 151 MB/s [root@quadovm running_pool]# [root@quadovm running_pool]# dd if=/dev/zero of=62_iscsi2/volume1.img bs=1M count=12000 12000+0 records in 12000+0 records out 12582912000 bytes (13 GB) copied, 88.5499 seconds, 142 MB/s [root@quadovm running_pool]#

이제 Xen 구성 파일을 만드는 단계만 남았습니다. 단계는 번째 SSH 세션에 대해 60_iscsi1 62_iscsi2 변경하여 수행해야 합니다.

[root@quadovm running_pool]# cd 60_iscsi1 [root@quadovm 60_iscsi1]# cat > vm.cfg name = "iscsi1" kernel = "/OVS/running_pool/60_iscsi1/vmlinuz-2.6.16.29-0.11.smp.gcc3.4.x86_64.xen.domU" ramdisk = "/OVS/running_pool/60_iscsi1/initrd-2.6.16.29-0.11.smp.gcc3.4.x86_64.xen.domU.img" disk = [ 'tap:aio:/OVS/running_pool/60_iscsi1/openfiler-2.2-x86_64.img,xvda,w', 'tap:aio:/OVS/running_pool/60_iscsi1/volume1.img,xvdb,w' ] root = "/dev/xvda1 ro" vif = ['bridge=xenbr0','bridge=sanbr0'] memory = 768 <CTRL+D> [root@quadovm 60_iscsi1]# xm create -c vm.cfg Using config file "./vm.cfg". Started domain iscsi1 Bootdata ok (command line is root=/dev/xvda1 ro ) Linux version 2.6.16.29-0.11.smp.gcc3.4.x86_64.xen.domU (conary.rpath.com@rpl:1-xen) (gcc version 3.4.4) #1 SMP Wed Dec 6 02:05:30 EST 2006 [..] Registering block device major 202 xvda: xvda1 xvdb: unknown partition table [..] Welcome to Openfiler NAS/SAN Appliance 2.2 Press 'I' to enter interactive startup. [..many errors please ignore them..]

위에서 다음과 같은 사실을 확인할 있습니다.

  1. OpenFiler에서 해당 시스템 디스크를 xvdaand 표시하고 디스크(아직 파티션으로 초기화하지 않음) xvdb 표시합니다.
  2. 번째 이더넷 인터페이스가 xenbr0 브릿지에 연결되고 번째 이더넷 인터페이스가 sanbr0 연결되도록 구성했습니다.
  3. OpenFiler 최대 768MB RAM 할당했습니다.

VM(Virtual Machine) 구성하기

제공된 Xen 이미지는 미리 구성되어 있지 않으므로 직접 구성해야 합니다. iscsi1 루트로 로그인한 다음 새로운 OpenFiler iscsi1 VM 템플릿에 맞게 네트워킹을 다시 구성합니다. 먼저 /etc/hosts, /etc/resolv.conf sysconfig 이더넷 구성 파일을 설정합니다. 마지막으로 모든 네트워킹을 다시 시작하여 VM 재시작 없이 새로운 설정을 적용합니다.

Openfiler NAS/SAN Appliance Powered by rPath Linux To administer this appliance, please use a web browser from another system to navigate to

 

 

For further information and commercial support, please visit http://www.openfiler.com

localhost login: root [root@localhost ~]# cd /etc [root@localhost etc]# echo -e "10.99.1.101\tiscsi1">> hosts [root@localhost sysconfig]# cd sysconfig [root@localhost sysconfig]# cat > network NETWORKING=yes GATEWAY=10.99.1.1 HOSTNAME=iscsi1 <CTRL+D> [root@localhost sysconfig]# cat >network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet USERCTL=no IPV6INIT=no NETMASK=255.255.255.0 IPADDR=10.99.1.101 <CTRL+D> [root@localhost sysconfig]# cat >network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet USERCTL=no IPV6INIT=no NETMASK=255.255.255.0 IPADDR=10.98.1.101 MTU=9000 <CTRL+D> [root@localhost sysconfig]# echo "nameserver10.99.1.1" > /etc/resolv.conf [root@localhost sysconfig]# service network restart Shutting down interface eth0: [ OK ] Shutting down interface eth1: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface : [ OK ] Bringing up interface eth0: [ OK ] Bringing up interface eth1: [ OK ] [root@localhost sysconfig]#

인터페이스의 IP 주소를 확인합니다.

[root@localhost sysconfig]# ip a ls 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:16:3e:14:53:73 brd ff:ff:ff:ff:ff:ff inet 10.99.1.101/24 brd 10.99.1.255 scope global eth0 inet6 fe80::216:3eff:fe14:5373/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:16:3e:68:4f:c7 brd ff:ff:ff:ff:ff:ff inet 10.98.1.101/24 brd 10.98.1.255 scope global eth1 inet6 fe80::216:3eff:fe68:4fc7/64 scope link valid_lft forever preferred_lft forever 4: sit0: <NOARP> mtu 1480 qdisc noop link/sit 0.0.0.0 brd 0.0.0.0 [root@localhost sysconfig]# [root@localhost sysconfig]# ip ro ls | grep ^default default via 10.99.1.1 dev eth0 [root@localhost sysconfig]# [root@localhost sysconfig]# ping -c 1 iscsi1 PING iscsi1 (10.99.1.101) 56(84) bytes of data. 64 bytes from iscsi1 (10.99.1.101): icmp_seq=0 ttl=64 time=0.019 ms

--- iscsi1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.019/0.019/0.019/0.000 ms, pipe 2 [root@localhost sysconfig]#

혼동을 피하기 위해 iscsi1 다시 로그인하여 새로운 호스트 이름이 표시되도록 명령 프롬프트를 변경합니다.

OpenFiler 암호가 설정되지 않은 상태로 제공되므로 이제 루트에 대한 암호를 변경합니다.

[root@iscsi1 ~]# passwd Changing password for user root. New UNIX password: BAD PASSWORD: it's WAY too short Retype new UNIX password: passwd: all authentication tokens updated successfully. [root@iscsi1 ~]#

iscsi2 OpenFiler 템플릿에서 다른 SSH 세션 로그인을 루트로 사용하여, iscsi1 대해 수행했던 것과 동일한 절차를 수행합니다.

[root@quadovm ~]# cd /OVS/running_pool/62_iscsi2/ [root@quadovm 62_iscsi2]# cat > vm.cfg name = "iscsi2" kernel = "/OVS/running_pool/62_iscsi2/vmlinuz-2.6.16.29-0.11.smp.gcc3.4.x86_64.xen.domU" ramdisk = "/OVS/running_pool/62_iscsi2/initrd-2.6.16.29-0.11.smp.gcc3.4.x86_64.xen.domU.img" disk = [ 'tap:aio:/OVS/running_pool/62_iscsi2/openfiler-2.2-x86_64.img,xvda,w', 'tap:aio:/OVS/running_pool/62_iscsi2/volume1.img,xvdb,w' ] root = "/dev/xvda1 ro" vif = ['bridge=xenbr0','bridge=sanbr0'] <CTRL+D> [root@quadovm 62_iscsi2]# [root@quadovm 62_iscsi2]# xm create -c vm.cfg Using config file "./vm.cfg". Started domain iscsi2 Bootdata ok (command line is root=/dev/xvda1 ro ) Linux version 2.6.16.29-0.11.smp.gcc3.4.x86_64.xen.domU (conary.rpath.com@rpl:1-xen) (gcc version 3.4.4) #1 SMP Wed Dec 6 02:05:30 EST 2006 [..] INIT: version 2.85 booting Welcome to Openfiler NAS/SAN Appliance 2.2 Press 'I' to enter interactive startup. [..]

localhost login: root [root@localhost ~]# cd /etc [root@localhost etc]# echo -e "10.99.1.102\tiscsi2" >> hosts [root@localhost etc]# cd sysconfig/ [root@localhost sysconfig]# cat > network NETWORKING=yes GATEWAY=10.99.1.1 HOSTNAME=iscsi2 <CTRL+D> [root@localhost sysconfig]# cat > network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet USERCTL=no IPV6INIT=no NETMASK=255.255.255.0 IPADDR=10.99.1.102 <CTRL+D> [root@localhost sysconfig]# cat > network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet USERCTL=no IPV6INIT=no NETMASK=255.255.255.0 IPADDR=10.98.1.102 MTU=9000 <CTRL+D> [root@localhost sysconfig]# echo "nameserver 10.99.1.1" > /etc/resolv.conf [root@localhost sysconfig]# service network restart Shutting down interface eth0: [ OK ] Shutting down interface eth1: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: [ OK ] Bringing up interface eth1: [ OK ] [root@localhost sysconfig]#

IP 네트워킹을 확인합니다.

[root@localhost sysconfig]# ip a ls 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:16:3e:3c:bd:4a brd ff:ff:ff:ff:ff:ff inet 10.99.1.102/24 brd 10.99.1.255 scope global eth0 inet6 fe80::216:3eff:fe3c:bd4a/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:16:3e:15:b7:51 brd ff:ff:ff:ff:ff:ff inet 10.98.1.102/24 brd 10.98.1.255 scope global eth1 inet6 fe80::216:3eff:fe15:b751/64 scope link valid_lft forever preferred_lft forever 4: sit0: <NOARP> mtu 1480 qdisc noop link/sit 0.0.0.0 brd 0.0.0.0 [root@localhost sysconfig]# ip ro ls | grep ^def default via 10.99.1.1 dev eth0 [root@localhost sysconfig]# passwd Changing password for user root. New UNIX password: BAD PASSWORD: it's WAY too short Retype new UNIX password: passwd: all authentication tokens updated successfully.

이후에 혼동되지 않도록 다시 로그인합니다. 이제 네트워크 브라우저에서 다음으로 이동할 있습니다.

  • http://10.99.1.101:446/ (iscsi1)
  • http://10.99.1.102:446/ (iscsi2)

참고: iSCSI 스토리지 장치에 대해 단계를 번씩 수행합니다.

먼저 라이센스에 동의하는지를 묻는 메시지가 표시되고 동의하면 다음 자격 증명을 사용하여 로그인할 있습니다

  • 로그인: openfiler
  • 암호: password

: OpenFiler 루트 암호는 인터페이스 암호와 동일하지 않지만 관리를 용이하게 하기 위해 동일하게 유지할 있습니다.


그림 19

Volumes 탭으로 Physical Storage Mgmt.에서 /dev/xvdb (사용자가 만든 12GB 번째 이미지 데이터 파일) 클릭합니다.


그림 20

Volume Group Mgmt.에서 "물리적 볼륨"(LVM) 유형으로 하나의 x86 파티션을 만듭니다.


그림 21

Volume Group Mgmt. 다시 가서 /dev/xvdb1 물리적 볼륨(LVM 용어로 "PV") 포함하는 "racdata1" / "racdata2"이라는 볼륨 그룹을 만듭니다.


그림 22

볼륨을 만들고 나면 하나의 볼륨 그룹이 나타납니다. Create New Volumes 탭으로 갑니다..


그림 23

이제 개의 iSCSI LUN 만들어야 합니다.

  • ocr (320MB)
  • voting (320MB)
  • asmdata1 ( 예에서는 최대 11GB 여유 공간)


그림 24

이러한 LUN 만들고 나면 "racdata1" / "racdata2"라는 이름의 스토리지 할당 볼륨 그룹을 나타내는 그래프를 있습니다.


그림 25

Services -> Enable/disable iSCSI target 활성화합니다.


그림 26

General -> Local Networks으로 가서 Network Access Configuration 아래에 "san1" 만들어 10.98.1.0/24 네트워크(SAN 네트워크)로부터의 iSCSI 연결을 허용합니다.


그림 27

Volumes -> 기존 볼륨 목록에서 iSCSI LUN으로 전환한 모든 iSCSI LUN 편집합니다. "iSCSI host access" 섹션 아래에서, san1 네트워크에서 iSCSI LUN 액세스할 있도록 확인합니다. update 클릭하여 저장합니다.

이제 Oracle RAC에서 사용하기 위한 LUN 내보내는 개의 iSCSI 시스템이 만들어졌습니다.

확장 RAC 맞게 RAC VM 다시 구성하기

eth0 외의 물리적 이더넷 어댑터가 없을 경우 Oracle VM 물리적 인터페이스 없이 브릿지를 만들 없기 때문에 수동으로 어댑터를 에뮬레이션해야 합니다. 특히 iSCSI 트래픽을 위한 SAN 네트워크와 RAC Cache Fusion 위한 Interconnect 네트워크를 추가할 있습니다.

이더넷 브릿지를 추가로 생성하기 위해서는 /etc/rc.d/rc.local 간단히 다음을 추가하면 됩니다. Oracle VM 다시 시작하지 않으려면 이러한 명령을 수동으로 실행해야 합니다

[root@quadovm ~]# cat >> /etc/rc.d/rc.local brctl addbr sanbr0 brctl addbr ibr0 ip link set dev sanbr0 up ip link set dev ibr0 up <CTRL+D> [root@quadovm ~]#

이제 성능상의 이유로 SAN 브릿지와 Interconnect 브릿지의 MTU 항상 9000 되도록 해야 합니다. Xen에서 netfront netback 네트워크 가상화 드라이버를 동기화할 때까지 MUT 설정을 연기해야 하기 때문에 이러한 방법으로 시도할 있습니다.

 

[root@quadovm ~]# cat > fixbrmtu.sh #!/bin/sh

bridge=$1 if [ "$bridge" != "sanbr0" -a "$bridge" != "ibr0" ]; then logger -t fixbrmtu -p syslog.notice Skipping MTU fix for bridge=$bridge exit 0 fi

logger -t fixbrmtu -p syslog.notice Fixing MTU for bridge=$bridge

while : ; do cd /sys/class/net/$bridge/brif || exit 1 err=0 for iface in *; do ip link set dev $iface mtu 9000 > /dev/null 2>&1 if [ $? -ne 0 ]; then err=$[err+1] fi done if [ $err -eq 0 ]; then break fi sleep 1 done

ip link set dev $bridge mtu 9000 exit 0 <CTRL+D> [root@quadovm ~]# chmod 700 fixbrmtu.sh

다음에는 vi 통해 /etc/xen/scripts/vif-bridge 파일을 수정하고 "success" 바로 다음 굵은체 행을 추가합니다.

log debug "Successful vif-bridge $command for $vif, bridge $bridge." if [ "$command" = "online" ] then success (/root/fixbrmtu.sh "$bridge") & fi

Oracle VM 루트로 로그온한 상태에서 /OVS/running_pool/ 전환한 rac1 rac2 대해 vm.cfg 편집하고 vif 행을 다음과 같이 변경합니다.

vif = ['bridge=xenbr0', 'bridge=ibr0', 'bridge=sanbr0']

, 다음과 같은 방법으로 RAC VM 브릿지에 연결되도록 있습니다.

  • xenbr0 eth0 연결(Oracle VM 서버의 번째 물리적 이더넷을 통해 연계. brctl show 명령을 사용하여 이를 확인할 있음) - Oracle VM 클라이언트를 위한 공용 인터페이스
  • ibr0 eth1 연결 - Cache Fusion 위한 Interconnect 네트워크
  • sanbr0 eth2 연결 - iSCSI SAN 네트워크

참고: 추가 인터페이스는 Oracle VM Manager에서 표시되지 않습니다.

이제 rac1 rac2 대해 VM 시작합니다.

[root@quadovm 134_rac2]# xm create vm.cfg Using config file "./vm.cfg". Started domain 134_rac2 [root@quadovm 134_rac2]#

실행되는 가상 시스템을 확인합니다. 문제가 없으면 다음과 비슷한 화면이 나타납니다.

[root@quadovm ~]# xm list Name ID Mem VCPUs State Time(s) 132_rac1 7 2048 1 -b---- 12.8 134_rac2 8 2048 1 r----- 7.2 Domain-0 0 512 4 r----- 287.6 iscsi1 5 768 1 -b---- 4.8 iscsi2 6 768 1 -b---- 4.8 [root@quadovm ~]#

기본적으로 Oracle VM 템플릿은 다음 자격 증명에 적합하게 구성되어 있습니다.

  • 사용자: root
  • 암호: ovsroot

rac1 노드를 다시 구성하여 시작한 로컬 콘솔을 통해 노드에 연결합니다.

 

[root@quadovm ~]# xm console 132_rac1 rtc: IRQ 8 is not free. i8042.c: No controller found.

Enterprise Linux Enterprise Linux Server release 5.1 (Carthage) Kernel 2.6.18-53.1.13.9.1.el5xen on an x86_64

localhost.localdomain login: root Password: <type "ovsroot"> Last login: Wed Feb 20 14:21:42 from ca-ostest246.us.oracle.com [root@localhost ~]#

네트워크 구성 유틸리티를 실행합니다.

[root@localhost ~]# export TERM=linux [root@localhost ~]# system-config-network-tui

system-config-network-tuiis 사용하고 손쉽고도 간단하게 네트워킹을 구성할 있습니다. 공용 인터페이스(Oracle VM 외부에서 있는 IP 네트워크에 대한 관리 인터페이스) 구성 작업은 "eth0" 선택하고 IP 주소, 넷마스크, 게이트웨이 등을 설정하는 단계로 구성됩니다.


그림 28


그림 29

"eth0" 성공적으로 구성했으면 "eth1"(Interconnect) 구성할 있습니다. <New device> 선택하여 인터페이스를 만든 다음 Ethernet IP 네트워킹을 설정하면 됩니다. eth2(SAN) 대해 단계를 반복합니다.


그림 30


그림 31


그림 32

완료했으면 네트워크 구성(DNS 분석기, 호스트 이름 MTU 변경 설정) 마칩니다.

[root@localhost ~]# echo 'nameserver 10.99.1.1' > /etc/resolv.conf [root@localhost ~]# cat > /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=rac1 <CTRL+D> [root@localhost ~]# echo "MTU=9000" >> /etc/sysconfig/network-scripts/ifcfg-eth1 [root@localhost ~]# echo "MTU=9000" >> /etc/sysconfig/network-scripts/ifcfg-eth2 [root@localhost ~]# service network restart Shutting down interface eth0: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: [ OK ] Bringing up interface eth1: [ OK ] Bringing up interface eth2: [ OK ] [root@localhost ~]#

/etc/hosts 파일을 다음과 같이 저장합니다.

127.0.0.1 localhost.localdomain localhost

# eth0: public network 10.99.1.91 rac1 10.99.1.92 rac2

# eth1: interconnect 10.97.1.1 rac1-priv 10.97.1.2 rac2-priv

# VIPs 10.99.1.201 rac1-vip 10.99.1.202 rac2-vip

# eth2: iSCSI SAN 10.98.1.101 iscsi1 10.98.1.102 iscsi2

# PUB for openfilers 10.99.1.101 iscsi1-pub 10.99.1.102 iscsi2-pub

시스템에 적합한 시간대를 설정합니다( 예의 경우 폴란드 시간대).

[root@localhost ~]# ln -sf /usr/share/zoneinfo/Europe/Warsaw /etc/localtime

rac1에서 로그아웃한 다시 로그인하면 셸에 "root@rac1"라고 나타납니다. 또한 게이트웨이와의 연결을 확인합니다. rac2 대해 적합한 IP 주소를 사용하여 동일한 작업을 수행해야 한다는 것을 잊지 마십시오.

기본적으로 Oracle VM 템플릿에는 iSCSI 이니시에이터 유틸리티의 사용자 공간 부분이 제공되지 않습니다. Oracle Enterprise Linux ISO 이미지(3~4GB)에서 부분을 얻을 있지만, 신속하게 진행하기 위해 대신 여기 에서 워크스테이션으로 다운로드할 있습니다.

그런 다음 워크스테이션에서 iSCSI 이니시에이터의 사본을 RAC 노드 모두에 업로드합니다.

[vnull@xeno RPMS_el51]$ scp iscsi-initiator-utils*.rpm root@10.99.1.91:. root@10.99.1.91's password: iscsi-initiator-utils-6.2.0.865-0.8.el5.x86_64.rpm 100% 528KB 528.2KB/s 00:00 [vnull@xeno RPMS_el51]$ scp iscsi-initiator-utils*.rpm root@10.99.1.92:. root@10.99.1.92's password: iscsi-initiator-utils-6.2.0.865-0.8.el5.x86_64.rpm 100% 528KB 528.2KB/s 00:00 [vnull@xeno RPMS_el51]$

이제 iSCSI 이니시에이터를 설치하고, 기본 구성으로 설정한 RAC 노드에서 활성화합니다. rac2 대한 InitiatorAlias 변경하는 것을 잊지 마십시오.

[root@rac1 ~]# rpm -Uhv iscsi-initiator-utils-6.2.0.865-0.8.el5.x86_64.rpm Preparing... ########################################### [100%] 1:iscsi-initiator-utils ########################################### [100%] [root@rac1 ~]# rm iscsi-initiator-utils-6.2.0.865-0.8.el5.x86_64.rpm rm: remove regular file `iscsi-initiator-utils-6.2.0.865-0.8.el5.x86_64.rpm'? y [root@rac1 ~]# [root@rac1 ~]# echo "InitiatorAlias=rac1" >> /etc/iscsi/initiatorname.iscsi [root@rac1 ~]# service iscsid start Turning off network shutdown. Starting iSCSI daemon: [ OK ] [ OK ] [root@rac1 ~]# chkconfig iscsid on [root@rac1 ~]# chkconfig iscsi on

RAC 노드에서 필요 없는 서비스를 비활성화합니다

[root@rac1 ~]# chkconfig --level 0123456 bluetooth off [root@rac1 ~]# chkconfig --level 0123456 cups off [root@rac1 ~]# chkconfig --level 0123456 ip6tables off [root@rac1 ~]# chkconfig --level 0123456 iptables off [root@rac1 ~]# chkconfig --level 0123456 o2cb off [root@rac1 ~]# chkconfig --level 0123456 o2cb off [root@rac1 ~]# chkconfig --level 0123456 ocfs2 off [root@rac1 ~]# chkconfig --level 0123456 sendmail off [root@rac1 ~]# reboot

RAC 노드에 대해 추가 로컬 하드 디스크에서 Oracle 소프트웨어 마운트 위치(/u01) 위한 파티션을 준비합니다.

[root@rac1 ~]# fdisk /dev/hdd Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable.

 

The number of cylinders for this disk is set to 1044. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1044, default 1): <ENTER> Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044): <ENTER> Using default value 1044

Command (m for help): p

Disk /dev/hdd: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System /dev/hdd1 1 1044 8385898+ 83 Linux

Command (m for help): w The partition table has been altered!

Calling ioctl() to re-read partition table. Syncing disks. [root@rac1 ~]# [root@rac1 ~]# mkfs.ext3 -j /dev/hdd1 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 1048576 inodes, 2096474 blocks 104823 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2147483648 64 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 29 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@rac1 ~]# [root@rac1 ~]# mkdir /u01 [root@rac1 ~]# echo -e '/dev/hdd1\t\t/u01\t\t\text3\tdefaults,noatime\t1 2' >> /etc/fstab [root@rac1 ~]# mount /u01

동적 장치 관리를 설정하여 iSCSI SAN 위한 적절한 이름 지정 방식을 만듭니다. 먼저 RAC 노드에서 실행하여 /etc/udev/rules.d/55-openiscsi.rulesfile 만듭니다.

[root@rac1 ~]# cat > /etc/udev/rules.d/55-openiscsi.rules # /etc/udev/rules.d/55-openiscsi.rules KERNEL=="sd*", BUS=="scsi", PROGRAM="/etc/udev/scripts/iscsidev.sh %b", SYMLINK+="iscsi/%c{1}/lun%c{2}/part%n", OWNER="oracle", MODE="0640", GROUP="disk" <CTRL+D> [root@rac1 ~]#

udevd 현재의 실제 장치에 대한 파일만 포함하는 동적 장치 디렉토리를 제공합니다. 또한 /dev 디렉토리에서 장치 노드 파일을 만들거나 제거하고, 시스템에 장착된 새로운 장치에 대해 커널로부터 이벤트를 받아 작동합니다. 이벤트가 발생할 때마다 새로운 장치 속성에 대해 규칙 파일이 점검됩니다. 이를 기준으로 symlink 만들고, 소유권과 액세스 권한을 변경하며, 외부 프로그램을 실행할 있습니다.

규칙 파일은 새로운 모든 SCSI 장치에 대해 다음을 실행하여 작성된 iscsidev.sh 스크립트를 시작합니다.

[root@rac2 ~]# mkdir -p /etc/udev/scripts [root@rac2 ~]# cat > /etc/udev/scripts/iscsidev.sh #!/bin/sh #iscsidev.sh BUS=${1} HOST=${BUS%%:*} LUN=`echo ${BUS} | cut -d":" -f4` file="/sys/class/scsi_host/host${HOST}/device/session*/iscsi_session*/targetname" target_name=`echo $(cat ${file}) | cut -d":" -f2`

if [ -z "${target_name}" ]; then exit 1 fi

echo "${target_name} ${LUN}" <CTRL+D> [root@rac2 ~]# chmod 755 /etc/udev/scripts/iscsidev.sh

스크립트는 전달된 SCSI 장치가 실제 iSCSI이며 이에 대한 정보를 udev 반환하는지를 결정합니다. iSCSI 이니시에이터를 구성하면 iSCSI 대상 검색을 수행하여 RAC 실행되는 스토리지 어레이에 연결할 있습니다.

[root@rac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.98.1.101 10.98.1.101:3260,1 iqn.2006-01.com.openfiler:racdata1.asm1 10.98.1.101:3260,1 iqn.2006-01.com.openfiler:racdata1.ocr 10.98.1.101:3260,1 iqn.2006-01.com.openfiler:racdata1.voting [root@rac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.98.1.102 10.98.1.102:3260,1 iqn.2006-01.com.openfiler:racdata2.asm1 10.98.1.102:3260,1 iqn.2006-01.com.openfiler:racdata2.ocr 10.98.1.102:3260,1 iqn.2006-01.com.openfiler:racdata2.voting [root@rac1 ~]# iscsiadm -m discovery -l 10.98.1.101:3260 via sendtargets 10.98.1.102:3260 via sendtargets [root@rac2 ~]# iscsiadm -m node | sort 10.98.1.101:3260,1 iqn.2006-01.com.openfiler:racdata1.asm1 10.98.1.101:3260,1 iqn.2006-01.com.openfiler:racdata1.ocr 10.98.1.101:3260,1 iqn.2006-01.com.openfiler:racdata1.voting 10.98.1.102:3260,1 iqn.2006-01.com.openfiler:racdata2.asm1 10.98.1.102:3260,1 iqn.2006-01.com.openfiler:racdata2.ocr 10.98.1.102:3260,1 iqn.2006-01.com.openfiler:racdata2.voting [root@rac1 ~]#

이제 RAC 노드에서 스토리지에 로그인합니다.

[root@rac1 ~]# iscsiadm -m node -L all Login session [iface: default, target: iqn.2006-01.com.openfiler:racdata2.asm1, portal: 10.98.1.102,3260] Login session [iface: default, target: iqn.2006-01.com.openfiler:racdata2.ocr, portal: 10.98.1.102,3260] Login session [iface: default, target: iqn.2006-01.com.openfiler:racdata1.voting, portal: 10.98.1.101,3260] Login session [iface: default, target: iqn.2006-01.com.openfiler:racdata1.ocr, portal: 10.98.1.101,3260] Login session [iface: default, target: iqn.2006-01.com.openfiler:racdata1.asm1, portal: 10.98.1.101,3260] Login session [iface: default, target: iqn.2006-01.com.openfiler:racdata2.voting, portal: 10.98.1.102,3260] [root@rac1 ~]#

이제 iSCSI LUN 분할해야 합니다. 검색된 모든 iSCSI 장치에서 LUN별로 파티션을 하나 만들 것입니다. ((경고! 스크립트는 모든 iSCSI LUN 파티션 테이블을 지우는 위험한 스크립트입니다!)

다음 스크립트를 저장하십시오.

#!/bin/sh [ -d /dev/iscsi ] || exit 100 for LUN in `find /dev/iscsi -type l`; do echo $LUN dd if=/dev/zero of=$LUN bs=512 count=1 echo -en "0,\n;\n;\n;\n" | sfdisk -q $LUN done

노드에서만 실행 권한을 부여하고 실행합니다.

[root@rac2 ~]# chmod 700 partit.sh [root@rac2 ~]# ./partit.sh [..lots of partitioning output..]

rac2에서 수행한 변경을 번째 노드에서 있습니다.

[root@rac1 ~]# partprobe

후에 fdisk -l 사용하여 파티션을 검사할 있습니다.

iSCSI 조정

성능을 최적화하기 위해 iSCSI 스토리지를 조정해야 합니다. iSCSI 프로토콜이 TCP 기반으로 하므로 작업은 주로 TCP/IP 스택 조정과 연관됩니다. OpenFilers(iscsi1 iscsi2)에서 /etc/init.d/iscsi-target 편집하고 MEM_SIZE 변수를 1073741824 설정합니다. 이렇게 하면 iscsi1 iscsi2에서 iSCSI 대상을 시작하기 전에 TCP 네트워크 버퍼를 올바르게 설정할 있습니다.

그런 다음 기존 /etc/ietd.conf to /etc/ietd.conf.old 백업하고 여기에 다음을 추가합니다.

MaxConnections 1 InitialR2T No ImmediateData Yes MaxRecvDataSegmentLength 16776192 MaxXmitDataSegmentLength 16776192 MaxBurstLength 16776192 FirstBurstLength 16776192 MaxOutstandingR2T 16 Wthreads 16 DataDigest None HeaderDigest None

변경을 마친 iscsi1 iscsi2 다시 부팅합니다.
참고: 파일은 iSCSI LUN 새로 추가되거나, 다시 구성되거나, 삭제될 때마다 다시 생성됩니다.
이제 iSCSI 성능을 최적화하기 위해 RAC 노드를 다시 구성해야 합니다. rac1 rac2 노드에서 /etc/sysctl.conf 편집하고 다음 매개 변수를 적절히 변경합니다.

net.core.rmem_max = 1073741824 net.core.wmem_max = 1073741824 net.ipv4.tcp_rmem = 1048576 16777216 1073741824 net.ipv4.tcp_wmem = 1048576 16770216 1073741824 net.ipv4.tcp_mem = 1048576 16770216 1073741824

RAC에서 /etc/iscsi/iscsid.conf(iSCSI 이니시에이터 구성) 변경하고 마지막으로 다시 부팅하여 변경을 적용합니다. iSCSI 클라이언트 재시작과 함께 sysctl -p 수행할 있습니다.

[root@rac2 ~]# cat > /etc/iscsi/iscsid.conf node.startup = automatic node.session.timeo.replacement_timeout = 120 node.conn[0].timeo.login_timeout = 15 node.conn[0].timeo.logout_timeout = 15 node.conn[0].timeo.noop_out_interval = 10 node.conn[0].timeo.noop_out_timeout = 15 node.session.initial_login_retry_max = 4 node.session.cmds_max = 128 node.session.queue_depth = 128 node.session.iscsi.InitialR2T = No node.session.iscsi.ImmediateData = Yes node.session.iscsi.FirstBurstLength = 16776192 node.session.iscsi.MaxBurstLength = 16776192 # the default is 131072 node.conn[0].iscsi.MaxRecvDataSegmentLength = 16776192 # the default is 32768 discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 16776192 node.conn[0].iscsi.HeaderDigest = None node.session.iscsi.FastAbort = No <CTRL+D> [root@rac2 ~]# reboot

참고: OpenFiler 대한 이번 변경과 앞의 변경을 통해 기본 순차 쓰기(sequential-write) iSCSI 성능이 극대화되었으며 이는 블록 크기를 1MB 지정한 dd 명령을 통해 iSCSI LUN에서 직접 테스트했습니다. 성능은 사용하는 하드웨어, 소프트웨어 버전 기타 요소에 따라 시스템마다 다를 있습니다.

6. Oracle 소프트웨어 설치 준비하기

Oracle Database Oracle Clusterware rac1 VM에서 압축을 풉니다.

[root@rac1 ~]# cd /u01/install/ [root@rac1 install]# unzip linux.x64_11gR1_database.zip [root@rac1 install]# unzip linux.x64_11gR1_clusterware.zip

RAC 노드에서 oracle 계정의 암호를 변경하고 Database Clusterware 위한 디렉토리를 설정합니다

[root@rac1 ~]# passwd oracle Changing password for user oracle. New UNIX password: BAD PASSWORD: it is WAY too short Retype new UNIX password: passwd: all authentication tokens updated successfully. [root@rac1 ~]# mkdir -p /u01/app/oracle [root@rac1 ~]# chown -R oracle:oinstall /u01/app [root@rac1 ~]# chmod -R 775 /u01/app [root@rac1 ~]# [root@rac1 ~]# mkdir -p /u01/app/crs [root@rac1 ~]# chown -R oracle:oinstall /u01/app/crs [root@rac1 ~]# chmod -R 775 /u01/app/crs

rac1 rac2에서 oracle 사용자 .bash_profile 스크립트를 다음과 같이 편집합니다. , RAC 노드에서 ORACLE_SID 개별적으로 설정해야 합니다.

# ~oracle .bash_profile

# Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi

alias ls="ls -FA"

# User specific environment and startup programs export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1 export ORA_CRS_HOME=/u01/app/crs export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin

# Each RAC node must have a unique ORACLE_SID. export ORACLE_SID=erac1

export PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin export ORACLE_TERM=xterm export TNS_ADMIN=$ORACLE_HOME/network/admin export ORA_NLS10=$ORACLE_HOME/nls/data export LD_LIBRARY_PATH=$ORACLE_HOME/lib export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib export CLASSPATH=$ORACLE_HOME/JRE export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib export THREADS_FLAG=native export TEMP=/tmp export TMPDIR=/tmp

Oracle SSH 사용자 동격 설정

"사용자 동격" RSH/SSH 사용하여 로컬 사용자 계정이 암호 없이 클러스터의 다른 모든 노드에 액세스할 있도록 하는 방법입니다. 사용자 동격은 주로 Oracle 설치 프로그램에서 암호를 묻지 않고 나머지 노드에 설치를 수행하기 위해 사용됩니다. 명령줄은 예는 SSH 기반의 인증을 사용하여 간편하게 사용자 동격을 설정하는 방법을 설명합니다.

[root@rac1 ~]# su - oracle [oracle@rac1 ~]$ mkdir -p ~/.ssh [oracle@rac1 ~]$ chmod 700 ~/.ssh [oracle@rac1 ~]$ /usr/bin/ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/oracle/.ssh/id_rsa): <ENTER> Enter passphrase (empty for no passphrase): <ENTER> Enter same passphrase again: <ENTER> Your identification has been saved in /home/oracle/.ssh/id_rsa. Your public key has been saved in /home/oracle/.ssh/id_rsa.pub. The key fingerprint is: cb:a6:d0:4a:cc:39:9d:78:70:24:f7:5b:99:14:7e:53 oracle@rac1 [oracle@rac1 ~]$ [oracle@rac1 ~]$ ssh rac1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys The authenticity of host 'rac1 (10.99.1.91)' can't be established. RSA key fingerprint is 1e:8c:1f:f7:dc:2e:10:75:0f:08:01:13:a8:49:31:0c. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac1,10.99.1.91' (RSA) to the list of known hosts. oracle@rac1's password: [oracle@rac1 ~]$ ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys The authenticity of host 'rac2 (10.99.1.92)' can't be established. RSA key fingerprint is 1e:8c:1f:f7:dc:2e:10:75:0f:08:01:13:a8:49:31:0c. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'rac2,10.99.1.92' (RSA) to the list of known hosts. oracle@rac2's password: [oracle@rac1 ~]$ scp .ssh/authorized_keys rac2:.ssh/ oracle@rac2's password: authorized_keys 100% 786 0.8KB/s 00:00 [oracle@rac1 ~]$ chmod 600 ~/.ssh/authorized_keys

그래픽 인터페이스의 설치 프로그램에 대한 X11 워크스테이션 주소와 함께 암호를 묻지 않도록 셸을 설정합니다.

[oracle@rac1 ~]$ exec /usr/bin/ssh-agent $SHELL [oracle@rac1 ~]$ /usr/bin/ssh-add Identity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa) [oracle@rac1 ~]$ [oracle@rac1 ~]$ export DISPLAY=10.99.1.1:0

동일한 세션에서 SSH 사용자 동격이 예상한 대로 작동하는지 확인해 봅니다.

[oracle@rac1 ~]$ ssh rac1 date Sat May 10 13:16:43 CEST 2008 [oracle@rac1 ~]$ ssh rac2 date Sat May 10 13:16:45 CEST 2008 [oracle@rac1 ~]$

워크스테이션에서 그래픽 인터페이스의 설치 구성 유틸리티에 대해 RAC 노드로부터의 원격 X11 연결을 허용하도록 X11 환경을 구성해야 합니다.

[vnull@xeno ~]$ xhost +10.99.1.91 10.99.1.91 being added to access control list [vnull@xeno ~]$ xhost +10.99.1.92 10.99.1.92 being added to access control list [vnull@xeno ~]$

사용자와 해당 노드 간의 모든 방화벽을 통해 rac1 rac2 시스템에서 트래픽을 전달할 있어야 합니다(일반적으로 TCP 포트 6000).

ASMLib 구성

ASMLIB I/O 작업 스토리지 관리를 위한 효율적인 메커니즘으로서 선택 사항입니다. Linux에서 ASMLIB 주로, 표준 UNIX I/O 호출을 생략하고 해당 작업을 수행하는 전용 커널 부분을 제공함으로써 컨텍스트 전환과 이에 따른 CPU 사용량을 최소화하도록 도와 줍니다. 그러나 시나리오에서의 역할은 장치 관리를 용이하게 하는 것입니다.

노드에서 ASMLib 구성을 수행합니다.

[root@rac1 ~]# /etc/init.d/oracleasm configure Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting <ENTER> without typing an answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: oracle Default group to own the driver interface []: oinstall Start Oracle ASM library driver on boot (y/n) [n]: y Scan for Oracle ASM disks on boot (y/n) [y]: y Writing Oracle ASM library driver configuration: done Initializing the Oracle ASMLib driver: [ OK ] Scanning the system for Oracle ASMLib disks: [ OK ] [root@rac1 ~]#

ASMLIB 관리에 개의 iSCSI LUN 추가합니다. rac1에서만 수행하십시오

[root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL1ASM1 /dev/iscsi/racdata1.asm1/lun0/part1 Marking disk "VOL1ASM1" as an ASM disk: [ OK ] [root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL2ASM1 /dev/iscsi/racdata2.asm1/lun0/part1 Marking disk "VOL2ASM1" as an ASM disk: [ OK ] [root@rac1 ~]# [root@rac1 ~]# /etc/init.d/oracleasm listdisks VOL1ASM1 VOL2ASM1 [root@rac1 ~]#

rac2에서 새로운 ASM 디스크를 다시 검사합니다.

[root@rac2 ~]# /etc/init.d/oracleasm scandisks Scanning the system for Oracle ASMLib disks: [ OK ] [root@rac2 ~]# /etc/init.d/oracleasm listdisks VOL1ASM1 VOL2ASM1 [root@rac2 ~]#

7. Oracle Clusterware 설치

Oracle Clusterware 데이터베이스와 RAC 관련 헬퍼 애플리케이션을 포함하는 핵심 구성 요소입니다. 이를 통해 DBA 하나 또는 여러 개의 Oracle 인스턴스를 클러스터에 등록하고 호출할 있습니다. 일상적인 작업을 수행하는 동안 Oracle Clusterware 클러스터에 구성된 모든 노드에 특별한 ping 작업을 통해 "하트비트"라는 메시지를 보냅니다. 어떤 노드에 대해 하트비트가 실패하면 공유 디스크에 있는 Oracle Clusterware 구성 파일을 검사하여 실제 노드 실패인지 네트워크 실패인지를 식별합니다.

Oracle Clusterware 설치하면 Oracle Database 소프트웨어(다음 단원 참조) 설치하는 사용되는 Oracle Universal Installer(OUI) 자동으로 이러한 노드를 인식합니다. 단원에서 수행할 Oracle Clusterware 설치와 마찬가지로 Oracle Database 소프트웨어 또한 노드에서만 실행해야 합니다. OUI RAC 클러스터에 구성된 모든 노드에 소프트웨어 패키지를 복사합니다.

번째 노드를 NFS 서버로

보팅 디스크를 위한 번째 위치를 데이터 센터와 지리적으로 독립시킬 것이므로 RAC 노드에서 번째 위치에 연결하는 어떤 스토리지 프로토콜을 어떻게 사용할지를 고려해야 합니다. 번째 iSCSI 어레이/서버를 사용할 있지만, 실제로 보팅 디스크용으로 스토리지의 MB 사용하기 위해 iSCSI 스토리지를 구입하는 것은 비용 낭비입니다. 다행히도 Oracle Clusterware 원격 UNIX/Linux 서버에 설치할 있는 NFS 스토리지에 보팅 디스크를 설정할 있는 옵션을 제공합니다

여기서는 자신의 관리 워크스테이션을 보팅 디스크 파일을 포함하는 3 NFS 위치로 사용합니다. 파일은 하나의 디스크로 사용됩니다
해당 워크스테이션에 CRS 보팅 의사(pseudo) 디스크 파일을 포함하는 NFS 내보내기를 만드십시오.

[root@xeno ~]# mkdir /votedisk [root@xeno ~]# echo '/votedisk *(rw,sync,all_squash,anonuid=500,anongid=500)' >> /etc/exports [root@xeno ~]# service portmap start Starting portmap: [ OK ] [root@xeno ~]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ] [root@xeno ~]# chkconfig --level 0123456 nfs on [root@xeno ~]# chkconfig --level 0123456 portmap on [root@xeno ~]# dd if=/dev/zero of=/votedisk/third_votedisk.crs bs=1M count=320 320+0 records in 320+0 records out 335544320 bytes (336 MB) copied, 1.32737 seconds, 253 MB/s [root@xeno ~]#

RAC 노드에서 다음을 수행합니다. bash 명령에 fstab 행을 입력합니다

[root@rac1 ~]# echo -e '10.99.1.1:/votedisk\t/votedisk\tnfs\t rw,bg,hard,intr,rsize=32768,wsize=32768,tcp,noac,vers=3,timeo=600\t0\t0' >> /etc/fstab [root@rac1 ~]# service portmap start Starting portmap: [ OK ] [root@rac1 ~]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ] [root@rac1 ~]# chkconfig --level 0123456 nfs on [root@rac1 ~]# mkdir /votedisk [root@rac1 ~]# mount /votedisk [root@rac1 ~]# ls -al /votedisk total 328024 drwxr-xr-x 2 oracle dba 4096 May 27 19:36 . drwxr-xr-x 26 root root 4096 May 27 20:40 .. -rw-r--r-- 1 oracle dba 335544320 May 27 19:36 third_votedisk.crs [root@rac1 ~]#

기본 설치

우선 시스템의 비호환성을 검토해야 합니다. 전체 시스템에서 누락된 라이브러리, 커널 매개 변수 등이 있는지 확인할 있도록 Oracle에서는 runcluvfy.sh라는 특별한 도구를 Clusterware 함께 제공합니다. 자세한 내용은 Jeff Hunter "Build Your Own Oracle RAC Cluster on Oracle Enterprise Linux and iSCSI"에서 20 단원을 참조하십시오. 이제 다음과 같이 설치해야 합니다.

[root@rac1 clusterware]# cd /u01/install/clusterware/rpm/ [root@rac1 rpm]# rpm -Uhv cvuqdisk-1.0.1-1.rpm Preparing... ########################################### [100%] 1:cvuqdisk ########################################### [100%] [root@rac1 rpm]#

그런 다음 rac2 노드로 이를 전송해야 합니다.

[root@rac1 rpm]# scp cvuqdisk-1.0.1-1.rpm root@10.99.1.92:. The authenticity of host '10.99.1.92 (10.99.1.92)' can't be established. RSA key fingerprint is 1e:8c:1f:f7:dc:2e:10:75:0f:08:01:13:a8:49:31:0c. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.99.1.92' (RSA) to the list of known hosts. root@10.99.1.92's password: cvuqdisk-1.0.1-1.rpm 100% 7273 7.1KB/s 00:00 [root@rac1 rpm]#

... and install it on rac2 too:

[root@rac2 ~]# rpm -Uhv cvuqdisk-1.0.1-1.rpm Preparing... ########################################### [100%] 1:cvuqdisk ########################################### [100%] [root@rac2 ~]#

다음을 사용하여 Clusterware 위한 사전 요구 사항 보고서를 작성할 있습니다.

[oracle@rac1 clusterware]$ ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose

보고서를 검토합니다

Check: Membership of user "oracle" in group "oinstall" [as Primary] Node Name User Exists Group Exists User in Group Primary Comment ---------------- ------------ ------------ ------------ ------------ ------------ rac2 yes yes yes no failed rac1 yes yes yes no failed Result: Membership check for user "oracle" in group "oinstall" [as Primary] failed.

Administrative privileges check failed.

[..]

Check: Package existence for "glibc-2.5-12" Node Name Status Comment ------------------------------ ------------------------------ ---------------- rac2 failed rac1 failed Result: Package existence check failed for "glibc-2.5-12".

Check: Package existence for "glibc-2.5-12" Node Name Status Comment ------------------------------ ------------------------------ ---------------- rac2 glibc-2.5-18 passed rac1 glibc-2.5-18 passed Result: Package existence check passed for "glibc-2.5-12".

oinstall 그룹의 누락된 oracle "glibc-2.5-12" 대한 번째 오류는 무시해도 됩니다. runclvfy.sh에서 생성하는 모든 알림과 오류를 해결하도록 하십시오. 이러한 오류가 나중에 심각한 문제로 이어질 있습니다.

다음의 CVU 실행 검사는 하드웨어 운영 체제 설정을 확인합니다

[oracle@rac1 clusterware]$ ./runcluvfy.sh stage -post hwos -n rac1,rac2 -verbose

"No errors"라는 메시지가 나타나야 합니다.

이제 Clusterware 설치 프로그램을 실행합니다.

[oracle@rac1 clusterware]$ export DISPLAY=10.99.1.1:0

[oracle@rac1 clusterware]$ ./runInstaller


그림 33

Clusterware 설치 프로그램이 실행됩니다.


그림 34

대상 디렉토리로 /u01/app/oraInventory 설정했는지 확인합니다.


그림 35

Clusterware 홈을 /u01/app/crs 설정합니다. CRS 설치와 Database 소프트웨어어 설치를 독립적으로 수행할 것입니다


그림 36

Clusterware 시스템에 문제나 비호환 요소가 있는지 확인합니다. 모두 문제가 없어야 합니다.


그림 37

Edit 버튼을 클릭한 다음과 같이 네트워크 어댑터를 지정합니다.

  • eth0 공용으로 지정합니다.
  • eth1 전용(RAC Cache Fusion/Interconnect)으로 지정합니다
  • eth2 CRS에서 사용할 없어야 합니다. iSCSI 위한 SAN 인터페이스입니다


그림 38

OCR 미러하도록 지정합니다. 개의 iSCSI 스토리지 장치 간에 OCR 미러할 있습니다. 기본 OCR 위치로 /dev/iscsi/racdata1.ocr/lun0/part1 입력합니다. 백업 OCR 위치로 /dev/iscsi/racdata2.ocr/lun0/part1 입력합니다


그림 39

보팅 디스크에 대해 "Normal redundancy" 선택합니다. 쿼럼 요구 사항을 만족하기 위해 개의 보팅 디스크가 필요합니다.

  • /dev/iscsi/racdata1.voting/lun0/part1
  • /dev/iscsi/racdata2.voting/lun0/part1
  • /votedisk/voting_disk_file.crs ("xeno" 워크스테이션에서 NFS 마운트 위치의 파일)

참고: 여기서 보팅 디스크를 하나만 설정했을 경우 설명서의 뒷부분에서 나머지 디스크를 수동으로 추가하는 방법을 보여 드리겠습니다.


그림 40

보팅 디스크를 구성하고 나면 요약 창이 나타납니다. 설정을 검토하고 Install 누릅니다.


그림 41

설치하는 어느 정도의 시간이 걸립니다.


그림 42

설치가 성공적으로 완료되면 설치 마무리 스크립트를 실행하라는 메시지가 표시됩니다

Clusterware 설치 확인

가지 유틸리티를 사용하여 Clusterware 성공적으로 설치되었는지 확인할 있습니다. 여기서는 crs_stat crsctl 사용하여 설치를 확인합니다:

[oracle@rac1 clusterware]$ $ORA_CRS_HOME/bin/crs_stat -t -v Name Type R/RA F/FT Target State Host ---------------------------------------------------------------------- ora.rac1.gsd application 0/5 0/0 ONLINE ONLINE rac1 ora.rac1.ons application 0/3 0/0 ONLINE ONLINE rac1 ora.rac1.vip application 0/0 0/0 ONLINE ONLINE rac1 ora.rac2.gsd application 0/5 0/0 ONLINE ONLINE rac2 ora.rac2.ons application 0/3 0/0 ONLINE ONLINE rac2 ora.rac2.vip application 0/0 0/0 ONLINE ONLINE rac2 [oracle@rac1 clusterware]$ $ORA_CRS_HOME/bin/crsctl check crs Cluster Synchronization Services appears healthy Cluster Ready Services appears healthy Event Manager appears healthy [oracle@rac1 clusterware]$

노드에서 모두 온라인 상태이면 Oracle Database 11g 설치로 진행해도 됩니다

8. Oracle Database 소프트웨어 설치

먼저 시스템을 확인해야 합니다.

[oracle@rac1 clusterware]$ ./runcluvfy.sh stage -pre dbinst -n rac1,rac2 -r 11gR1

Clusterware에서처럼 glibc 대한 메시지가 나타나지만 최신 버전이므로 경고를 무시해도 됩니다.

설치 프로그램의 압축을 풉니다.

[root@rac1 ~]# cd /u01/install/ [root@rac1 install]# ls clusterware linux.x64_11gR1_clusterware.zip linux.x64_11gR1_database.zip [root@rac1 install]# rm -rf clusterware linux.x64_11gR1_clusterware.zip [root@rac1 install]# unzip linux.x64_11gR1_database.zip [root@rac1 install]# rm linux.x64_11gR1_database.zip

Run it:

[oracle@rac1 ~]$ cd /u01/install/database/

[oracle@rac1 database]$ ./runInstaller

설치 창이 나타나면 Custom 선택하여 RAC 데이터베이스를 위한 개별 구성 요소를 선택합니다.


그림 43

Oracle 베이스에 대해 /u01/app/oracle 선택하고 NamPath 기본값인 Software Location으로 둡니다.


그림 44

Cluster Installation 선택하고 rac1(이미 선택되어 있음) 노드와 rac2 노드를 활성화합니다.


그림 45

설치 프로그램에서 해당 환경을 확인합니다. 현재 구성에서 스왑 공간이 충분하지 않을 있으나 문제가 되지는 않으므로 넘어가도 됩니다. 또한 커널 rmem_default 매개 변수 공지도 무시해도 됩니다.


그림 46

In Product Components에서 필요한 구성 요소를 선택합니다. 구성 요소를 적게 선택할수록 설치 시간이 적게 걸립니다. 예에서는 Enterprise Edition에서 "Real Application Testing" "Partitioning"만을 선택했습니다.


그림 47

Privileged Operating Systems Groups 프롬프트에서 모두 "dba" 그룹을 선택했는지 확인합니다. 정식 구현에서는 보안상의 이유로 이러한 그룹을 분리해야 합니다.


그림 48

나중에 데이터베이스를 만들 것이므로 Install database software only 선택합니다.


그림 49

모든 항목을 다시 확인한 Install 클릭합니다.


그림 50

설치가 수행됩니다. iSCSI 스토리지 최적화를 아직 수행하지 않았으므로 하드웨어에 따라 최대 1시간 정도 걸릴 있습니다.


그림 51

설치가 끝나면 노드에서 설치 스크립트를 실행하라는 메시지가 나타납니다

NetCA: RAC 맞게 Oracle TNS 서비스 구성하기

netca 실행합니다.

[oracle@rac1 ~]$ cd /u01/app/oracle/product/11.1.0/db_1/bin/ [oracle@rac1 bin]$ ./netca

Cluster 선택합니다.


그림 52

리스너를 구성할 것입니다.


그림 53

Add 선택합니다.


그림 54

기본 이름인 "LISTENER" 사용합니다.


그림 55

"TCP" 프로토콜만 선택합니다.


그림 56

리스너는 Oracle 기본 설정인 TCP 포트 1521에서 실행되어야 합니다.


그림 57

리스너는 하나면 충분합니다.


그림 58

종료합니다.

이제 리스너가 데이터를 제대로 수신하는지 확인합니다.

[root@rac2 ~]# ps -ef | grep lsnr | grep -v 'grep' | awk '{print $9}' LISTENER_RAC2 [root@rac2 ~]# /u01/app/crs/bin/crs_stat ora.rac2.LISTENER_RAC2.lsnr NAME=ora.rac2.LISTENER_RAC2.lsnr TYPE=application TARGET=ONLINE STATE=ONLINE on rac2

[root@rac2 ~]#

DBCA: Database Creation

[oracle@rac1 ~]$ cd /u01/app/oracle/product/11.1.0/db_1/bin/ [oracle@rac1 bin]$ ./dbca

Real Application Clusters 선택합니다.


그림 59

Create a Database 선택합니다.


그림 60

노드가 모두 선택되었는지 확인합니다.


그림 61

Custom Database 선택하여 데이터베이스 생성 프로세스의 유연성을 높입니다.


그림 62

데이터베이스 이름을 지정합니다. 설명서의 목적에 따라 "erac.world"라고 이름을 지정하겠습니다. "erac" SID 접두어가 자동으로 붙습니다. SID 각각 "erac1" .. "eracN" 형식으로 추가됩니다.


그림 63

Oracle Enterprise Manager 설치할 것인지를 결정합니다. 설치하려면 적절히 구성합니다.


그림 64

테스트를 위해 중요한 모든 Oracle 계정에 대해 간단한 암호를 선택할 있습니다.


그림 65

확장 RAC 구성을 하려면 스토리지 옵션으로 ASM 선택해야 합니다.


그림 66

모든 ASM 인스턴스에 대해 공유하지 않는 PFILE 사영할 것입니다. 공유 SPFILE 사용하도록 선택하여 중앙에서 ASM 구성할 있지만 경우 중요한 파일을 어느 스토리지 어레이에 저장해야 하는지와 같은 문제가 발생합니다


그림 67

Create Diskgroup Window 창에서 Change Disk Discovery Path 클릭하면 팝업 창이 열립니다. iSCSI LUN 찾도록 Disk Discovery Path 다시 구성해야 합니다. "/dev/iscsi/*/*/part1" 입력합니다. 이렇게 하면 ASM에서 모든 iSCSI LUN 번째 파티션만 고려합니다.


그림 68

이제 서로 다른 스토리지 노드에 있는 개의 iSCSI LUN에서 NORMAL 리던던시(미러링) "DATA1" ASM 디스크 그룹을 만듭니다. LUN 서로 다른 스토리지 노드에 있고 이들을 미러링할 것이므로 개의 페일 그룹을 갖는 DISKGROUP 만들 있습니다. 나중에 배울 것이지만 구성은 하나의 전체 스토리지 어레이가 손실되어도 안전합니다.


그림 69

새로운 +DATA1 디스크 그룹에서 Oracle-Managed Files 선택합니다.


그림 70

개발을 위해 Flashbacks and Archiving 비활성화해도 됩니다.


그림 71

필요 없는 모든 데이터베이스 구성 요소(: Oracle Text, Oracle XML DB) 비활성화합니다. 이렇게 하면 데이터베이스 작성 시간을 상당히 단축할 있습니다.

Initialization Parameters에서 인스턴스에서 사용할 메모리 크기( 크기) 구성할 있습니다. 값은 나중에 memory_target 매개 변수를 변경하여 수정할 있습니다. 필요에 따라 다른 데이터베이스 매개 변수를 사용자 정의합니다.


그림 72

Oracle Database 11g 새로운 보안 옵션을 많이 제공하며 이들은 기본적으로 활성화됩니다. 이러한 옵션을 모두 사용하도록 합니다.


그림 73

Enable automatic maintenance tasks 선택했는지 확인합니다.


그림 74

Database Storage에서 REDO 로그 컨트롤 파일 등과 관련된 매개 변수를 조정할 있습니다. 테스트에는 기본값이 적합합니다.


그림 75

새로운 실험을 위해 기존 DB 삭제한 DB 새로 작성하는 속도를 높이는 데이터베이스 스크립트를 생성하려면 Create Database; 선택합니다.


그림 76

어떤 옵션이 설치되는지를 보여 주는 요약 화면이 나타납니다. 데이터베이스를 작성하는 시간은 설치한 옵션과 사용하는 스토리지에 따라 어느 정도 시간이 걸릴 있습니다. 마지막으로 작성한 데이터베이스에 대한 간단한 요약 화면이 나타납니다.


그림 77

시작 인스턴스 {erac1, erac2}에서 데이터베이스를 사용할 있습니다.


그림 78

확장 Oracle RAC 맞게 데이터베이스 조정

Oracle Database 11g 확장 RAC 클러스터를 위해 유용한 개의 솔루션을 제공합니다. ASM 11g 기능을 사용한 확장 RAC 대한 자세한 내용은 Nitin Vengurlekar 등이 Oracle Automatic Storage Management, Under-the-Hood & Practical Deployment Guide(Oracle Press 2008) 또는 Oracle Storage Administrators Guide 참조하십시오.

선호 읽기(Preferred reads)

Oracle Database 11g "선호 읽기(preferred reads)"라는 새로운 기능을 제공합니다. 기능을 사용하여 DBA 로컬 읽기에 대해 페일 그룹을 지정할 있습니다. 일반적으로 페일 그룹은 지리적으로 데이터베이스 인스턴스에 가까이 있습니다. 선호 읽기 기능은 ASM 인스턴스 전용인 ASM_PREFERRED_READ_FAILURE_GROUPS 매개 변수를 설정하여 활성화할 있습니다.

먼저 어떤 페일 그룹과 디스크 그룹을 사용할 있는지 확인해야 합니다

[oracle@rac1 ~]$ ORACLE_SID=+ASM1 sqlplus / as sysdba [..] SQL> col inst format 9 SQL> col path format a36 SQL> col diskgroup format a8 SQL> col diskname format a10 SQL> col failgroup format a10 SQL> col PR format a2

SQL> SELECT inst_id inst, path, g.name diskgroup,d.name diskname, failgroup, preferred_read PR 2 FROM v$asm_disk d JOIN gv$asm_diskgroup g ON(d.group_number=g.group_number) 3 WHERE mount_status='CACHED' ORDER BY 1;

inst PATH DISKGROU DISKNAME FAILGROUP PR ---- ------------------------------------ -------- ---------- ---------- -- 1 /dev/iscsi/racdata1.asm1/lun0/part1 DATA1 DATA1_0000 DATA1_0000 U 1 /dev/iscsi/racdata2.asm1/lun0/part1 DATA1 DATA1_0002 DATA1_0001 U 2 /dev/iscsi/racdata2.asm1/lun0/part1 DATA1 DATA1_0002 DATA1_0001 U 2 /dev/iscsi/racdata1.asm1/lun0/part1 DATA1 DATA1_0000 DATA1_0000 U

4 rows selected.

SQL>

PR 열의 "U" 디스크 그룹에 정의된 읽기 페일 그룹이 없음을 의미합니다. 따라서 특정 페일 그룹에 대해 ASM 선호 읽기를 지정할 있습니다. ASM_PREFERRED_READ_FAILURE_GROUPS 구문은 diskgroup_name.failure_group_name,...'입니다.

SQL> ALTER SYSTEM SET ASM_PREFERRED_READ_FAILURE_GROUPS='DATA1.DATA1_0000' SID='+ASM1';

System altered.

SQL> ALTER SYSTEM SET ASM_PREFERRED_READ_FAILURE_GROUPS='DATA1.DATA1_0001' SID='+ASM2';

System altered.

SQL>

erac1 노드의 ASM 경우 DATA1_0000(/dev/iscsi/racdata1.asm1/lun0/* LUN 포함하는 iscsi1)으로부터 읽고 erac2 노드의 경우 DATA1_0001 페일 그룹으로부터 읽는다고 했습니다. ASM 인스턴스에서 GV$ASM_DISK 쿼리를 수행하여 매개 변수가 적용되었는지 확인할 있습니다.

SQL> SELECT path, g.name diskgroup, d.name diskname, failgroup, mode_status 2 FROM v$asm_disk d JOIN v$asm_diskgroup g ON(d.group_number=g.group_number) 3 WHERE mount_status='CACHED';

INST PATH DISKGROU DISKNAME FAILGROUP PR ---- ------------------------------------ -------- ---------- ---------- -- 1 /dev/iscsi/racdata1.asm1/lun0/part1 DATA1 DATA1_0000 DATA1_0000 N 1 /dev/iscsi/racdata2.asm1/lun0/part1 DATA1 DATA1_0002 DATA1_0001 Y 2 /dev/iscsi/racdata2.asm1/lun0/part1 DATA1 DATA1_0002 DATA1_0001 Y 2 /dev/iscsi/racdata1.asm1/lun0/part1 DATA1 DATA1_0000 DATA1_0000 N

4 rows selected.

SQL>

읽기 집중 트래픽이 생성된 다음 쿼리를 사용하여 시스템이 올바른 스토리지 어레이에서 읽는지를 확인할 있습니다.

SQL> SELECT inst_id, failgroup, sum(reads), sum(writes) FROM GV$ASM_DISK GROUP BY inst_id, failgroup;

INST_ID FAILGROUP SUM(READS) SUM(WRITES) ---------- ---------- ---------- ----------- 1 1 DATA1_0000 16976 3778 1 DATA1_0001 3800 2344 2 2 DATA1_0000 2865 2217 2 DATA1_0001 17401 2217

6 rows selected.

SQL>

Oracle erac1 노드의 경우 DATA1_0000 페일 그룹에서 읽고, erac2 노드의 경우 DATA1_0001 페일 그룹에서 읽는 것을 확인할 있습니다.

참고: ASM 인스턴스에서 SPFILE 대신 IFILE 사용하여 ASM_PREFERRED_READ_FAILURE_GROUPS 설정할 경우(: 클러스터로 연결된 파일 시스템이 없는 RAC 클러스터) 설정을 /u01/app/oracle/admin/+ASM/pfile/init.ora 파일에도 추가하여 설정을 영구적으로 적용합니다.

빠른 디스크 재동기화

Oracle Database 11g 페일 그룹 동기화를 수행하는 필요한 시간을 상당히 단축시킵니다. 여기서 11g 10g 주요 차이점은 10g에서는 오류가 발생한 디스크가 디스크 그룹에서 완전히 삭제되는 반면, 11g에서는 Oracle 수정되거나 쓰여진 범위만 업데이트하는 동기화 방식을 구현한다는 것입니다. 빠른 디스크 재동기화(빠른 미러 재동기화) 기능을 사용하려면 ASM 디스크 그룹이 11.1 수준의 호환성을 갖춰야 합니다. 빠른 디스크 재동기화 기능을 사용하는 방법에 대한 자세한 내용은 Oracle Database Storage Administrator's Guide 11g Release 1 4장을 참조하십시오.

확장 RAC 위한 OCR 미러 보팅(Voting) 디스크 확인

설치가 끝났으면 클러스터에 문제가 없는지 확인해야 합니다.

[root@rac1 ~]# cd /u01/app/crs/bin [root@rac1 bin]# ./crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora.erac.db application ONLINE ONLINE rac1 ora....c1.inst application ONLINE ONLINE rac1 ora....c2.inst 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 [root@rac1 bin]#

11g에서는 보팅 디스크를 온라인으로 관리할 있습니다. Clusterware 설치할 보팅 디스크를 추가하지 않았을 경우 여기서 iSCSI 스토리지 #2 NFS 보팅 디스크 개를 수동으로 추가해 보겠습니다.

[root@rac1 bin]# ./crsctl query css votedisk 0. 0 /dev/iscsi/racdata1.voting/lun0/part1 Located 1 voting disk(s). [root@rac1 bin]# ./crsctl add css votedisk /dev/iscsi/racdata2.voting/lun0/part1 Now formatting voting disk: /dev/iscsi/racdata2.voting/lun0/part1. Successful addition of voting disk /dev/iscsi/racdata2.voting/lun0/part1. [root@rac1 bin]# ./crsctl add css votedisk /votedisk/third_votedisk.crs Now formatting voting disk: /votedisk/third_votedisk.crs. Successful addition of voting disk /votedisk/third_votedisk.crs. [root@rac1 bin]#

보팅 디스크 구성을 확인합니다.

[root@rac1 bin]# ./crsctl query css votedisk 0. 0 /dev/iscsi/racdata1.voting/lun0/part1 1. 0 /dev/iscsi/racdata2.voting/lun0/part1 2. 0 /votedisk/third_votedisk.crs Located 3 voting disk(s). [root@rac1 bin]# ./crsctl check crs Cluster Synchronization Services appears healthy Cluster Ready Services appears healthy Event Manager appears healthy [root@rac1 bin]#

Oracle Clusterware 로그(/u01/app/crs/log/rac1/alertrac1.log) 다음과 비슷한 내용이 기록됩니다.

2008-05-31 17:07:32.302 [cssd(4506)]CRS-1605:CSSD voting file is online: /dev/iscsi/racdata2.voting/lun0/part1. Details in /u01/app/crs/ log/rac1/cssd/ocssd.log. [cssd(4506)]CRS-1601:CSSD Reconfiguration complete. Active nodes are rac1 rac2 . 2008-05-31 17:08:07.341 [cssd(4506)]CRS-1605:CSSD voting file is online: /votedisk/third_votedisk.crs. Details in /u01/app/crs/log/rac1/ cssd/ocssd.log. [cssd(4506)]CRS-1601:CSSD Reconfiguration complete. Active nodes are rac1 rac2.

또한 OCR OCRmirror 통해 보호되고 있는지 확인합니다.

[root@rac1 bin]# ./ocrcheck Status of Oracle Cluster Registry is as follows : Version : 2 Total space (kbytes) : 327188 Used space (kbytes) : 3848 Available space (kbytes) : 323340 ID : 2120916034 Device/File Name : /dev/iscsi/racdata1.ocr/lun0/part1 Device/File integrity check succeeded Device/File Name : /dev/iscsi/racdata2.ocr/lun0/part1 Device/File integrity check succeeded

Cluster registry integrity check succeeded

[root@rac1 bin]#

아무런 문제가 없으면 이제 Oracle RAC 장애 조치 기능을 중점적으로 테스트해 있습니다.

9. 장애 조치(Failover) 기능 테스트

설명서에서 베타 버전을 사용한 orajdbcstat 무료 GPL-d Java 애플리케이션으로서, 이를 통해 여러분은 장애 발생 클라이언트에서 인스턴스 간에 어떻게 전환하는지를 간편하게 살펴볼 있으며 성능을 측정할 수도 있습니다.

ERAC1에서의 인스턴스 실패

우선 유휴 데이터베이스에서 orajdbcstat 실행합니다.

[vnull@xeno orajdbcstat]$ ./orajdbcstat.sh -d ERAC -i ERAC1 -i ERAC2 1 ------ ------conntime------ -----------stmt------------------- tns rac# tcpping jdbc rac# ins sel upd del plsql 15:35:22 ERAC 2 0 49 1 3 0 2 2 0 15:35:22 +ERAC1 1 0 45 1 19 0 2 2 0 15:35:22 +ERAC2 2 0 60 2 4 0 2 14 0 15:35:23 ERAC 1 0 44 1 3 0 2 3 0 15:35:23 +ERAC1 1 0 65 1 2 0 2 3 0 15:35:23 +ERAC2 2 0 46 2 3 0 3 2 0 [..utility still running, output trimmed for clarity..]

출력에서 스레드("ERAC" TNS 설명자) 1번으로 인스턴스에 연결되었음을 있습니다. "conntime"에는 장애 조치 기능을 통해 RAC 인스턴스 TNS 설명자에 새로 연결되는 시간 측정이 표시됩니다. "tcpping" 현재 구현되지 않았습니다. "stmt" 아래에서는 FCF(Fast Connection Failover) 풀의 연결(현재 RAC 인스턴스 번호 간단한 SQL 시간 측정) 모니터링할 있습니다. 명령줄의 마지막 "1" orajdbcstat 1초마다 통계를 출력하도록 지정합니다.

다음 명령을 수행하여 RAC 인스턴스 #1 제거를 시뮬레이션합니다

[oracle@rac1 ~]$ srvctl stop instance -d erac -i erac1 -o abort [oracle@rac1 ~]$

orajdbcstat 사용하는 SSH 세션에서 다음과 같은 출력이 나타납니다. 자세한 설명은 예제 밑에 나와 있습니다.

15:36:55 ERAC 1 0 45 1 3 0 1 3 0 15:36:55 +ERAC1 1 0 42 1 43 0 2 2 0 15:36:55 +ERAC2 2 0 49 2 3 0 4 2 0 ------ ------conntime------ -----------stmt--------------- tns rac# tcpping jdbc rac# ins sel upd del plsql 15:36:56 ERAC 2 0 49 1->X [ E!17008 ] 15:36:56 +ERAC1 -1 E!01092 E!01092 1->X [ E!17008 ] 15:36:56 +ERAC2 2 0 67 2 17 0 4 2 0 15:36:57 ERAC 2 0 46 X->2 [ E!17008 ] 15:36:57 +ERAC1 -1 E!12521 E!12521 X [ E!17008 ] 15:36:57 +ERAC2 2 0 67 2 17 0 4 2 0 15:36:58 ERAC 2 0 46 X->2 [ E!17008 ] 15:36:58 +ERAC1 -1 E!12521 E!12521 X [ E!17008 ] 15:36:58 +ERAC2 2 0 67 2 17 0 4 2 0 15:36:59 ERAC 2 0 46 X->2 [ E!17008 ] 15:36:59 +ERAC1 -1 E!12521 E!12521 X [ E!17008 ] 15:36:59 +ERAC2 2 0 67 2 17 0 4 2 0 15:37:00 ERAC 2 0 46 X->2 [ E!17008 ] 15:37:00 +ERAC1 -1 E!12521 E!12521 X [ E!17008 ] 15:37:00 +ERAC2 2 0 67 2 17 0 4 2 0 15:37:01 ERAC 2 0 56 2 12 0 7 3 0 15:37:01 +ERAC1 -1 E!12521 E!12521 X [ E!17008 ] 15:37:01 +ERAC2 2 0 51 2 131 0 5 3 0 15:37:02 ERAC 2 0 59 2 178 0 17 29 0 15:37:02 +ERAC1 -1 E!12521 E!12521 X [ E!17008 ] 15:37:02 +ERAC2 2 0 73 2 121 0 203 36 0 ------ ------conntime------ -----------stmt--------------- tns rac# tcpping jdbc rac# ins sel upd del plsql 15:37:03 ERAC 2 0 68 2 2 0 3 2 0 15:37:03 +ERAC1 -1 E!12521 E!12521 X [ E!17008 ] 15:37:03 +ERAC2 2 0 45 2 3 0 2 3 0 15:37:04 ERAC 2 0 48 2 7 0 3 2 0 15:37:04 +ERAC1 -1 E!12521 E!12521 X [ E!17008 ] 15:37:04 +ERAC2 2 0 86 2 2 0 3 4 0 15:37:05 ERAC 2 0 47 2 2 0 3 2 0 15:37:05 +ERAC1 -1 E!12521 E!12521 X [ E!17008 ] 15:37:05 +ERAC2 2 0 53 2 3 0 3 3 0 15:37:06 ERAC 2 0 48 2 3 0 2 2 0 15:37:06 +ERAC1 -1 E!12521 E!12521 X [ E!17008 ] 15:37:06 +ERAC2 2 0 46 2 10 0 2 10 0 15:37:07 ERAC 2 0 48 2 2 0 3 3 0 15:37:07 +ERAC1 -1 E!12521 E!12521 X [ E!17008 ] 15:37:07 +ERAC2 2 0 83 2 10 0 3 2 0 15:37:08 ERAC 2 0 48 2 3 0 2 2 0 15:37:08 +ERAC1 -z E!12521 E!12521 X [ E!17008 ] 15:37:08 +ERAC2 2 0 50 2 2 0 3 2 0 15:37:09 ERAC 2 0 48 2 2 0 2 2 0 15:37:09 +ERAC1 -1 E!12521 E!12521 X [ E!17008 ] 15:37:09 +ERAC2 2 0 44 2 3 0 2 3 0 [..utility still running, output trimmed for clarity..]

다음과 같은 상황이 발생했습니다.

  • 15:36:56 ERAC1 대한 모든 연결이 오류를 반환하기 시작하고 ERAC1 FCF 풀의 모든 연결이 정상적으로 작동하지 않습니다. 데이터베이스의 FCF (ERAC TNS 설명자)에서 오류가 감지되어 장애 조치가 시작됩니다.
  • 15:36:57(장애 발생 1) FCF 풀이 RAC#2 인스턴스("X->2") 재연결을 시작합니다.
  • 15:37:00부터 15:37:01 사이에(장애 발생 4~5) FCF 연결이 활성화된 ERAC2 인스턴스로 다시 설정됩니다

"E!NNNNN" 문자열은 SQL 연결 ORA-NNNNN 오류가 발생했음을 나타냅니다. 오류를 판독하려면 oerrutility 사용하십시오. 복구 (ERAC1 인스턴스 시작) 다음과 같이 출력됩니다.

15:47:37 ERAC 2 0 64 2 3 0 2 3 0 15:47:37 +ERAC1 -1 E!01033 E!01033 X [ E!17008 ] 15:47:37 +ERAC2 2 0 57 2 8 0 13 1 0 15:47:38 ERAC 2 0 54 2 3 0 3 2 0 15:47:38 +ERAC1 1 0 481 X->1 [ E!17008 ] 15:47:38 +ERAC2 2 0 52 2 3 0 2 4 0 ------ ------conntime------ -----------stmt--------------- tns rac# tcpping jdbc rac# ins sel upd del plsql 15:47:39 ERAC 2 0 54 2 3 0 3 2 0 15:47:39 +ERAC1 1 0 167 1 14 0 4 2 0 15:47:39 +ERAC2 2 0 56 2 8 0 27 3 0

수동적인 개입 없이 ERAC1 FCF 풀에서 인스턴스가 실행되어 다시 작동되기 시작했음을 감지한 것을 있습니다.

치명적인 사이트 오류

확장 RAC 클러스터를 구축하는 목적은 치명적인 사이트 오류(RAC 노드 SAN 제거) 대처하는 것입니다. 워크스테이션에서 orajdbcstat 다시 실행합니다.

------ ------conntime------ -----------stmt--------------- tns rac# tcpping jdbc rac# ins sel upd del plsql 17:24:18 ERAC 1 0 46 2 11 0 2 2 0 17:24:18 +ERAC1 1 0 45 1 4 0 3 2 0 17:24:18 +ERAC2 2 0 46 2 4 0 3 3 0 17:24:19 ERAC 1 0 45 2 2 0 4 3 0 17:24:19 +ERAC1 1 0 44 1 15 0 3 2 0 17:24:19 +ERAC2 2 0 44 2 3 0 3 3 0

FCF 풀이 RAC#2 인스턴스를 사용하는 것을 확인할 있으므로 #2 사이트(iscsi2 rac2 노드) 전체를 제거합니다.

[root@quadovm ~]# xm list

Name ID Mem VCPUs State Time(s) 132_rac1 1 2048 1 -b---- 1845.0 134_rac2 6 2048 1 r----- 152.2 Domain-0 0 512 4 r----- 665.3 iscsi1 3 768 1 -b---- 194.0 iscsi2 5 768 1 -b---- 44.3 [root@quadovm ~]# xm destroy 134_rac2 && date && xm destroy iscsi2 && date Sat May 31 17:25:55 CEST 2008 Sat May 31 17:25:56 CEST 2008 [root@quadovm ~]#

이제 orajdbcstat 세션으로 돌아갑니다.

17:25:56 ERAC 2 0 44 2 3 0 3 2 0 17:25:56 +ERAC1 1 0 79 1 8 0 3 2 0 17:25:56 +ERAC2 2 0 44 2 11 0 3 2 0 17:25:57 ERAC 2 0 44 2 3 0 3 2 0 17:25:57 +ERAC1 1 0 79 1 8 0 3 2 0 17:25:57 +ERAC2 2 0 44 2 11 0 3 2 0 17:25:58 ERAC 2 0 44 2 3 0 3 2 0 17:25:58 +ERAC1 1 0 79 1 8 0 3 2 0 17:25:58 +ERAC2 -1 E!12170 E!12170 2 11 0 3 2 0 17:25:59 ERAC 2 0 44 2 3 0 3 2 0 17:25:59 +ERAC1 1 0 79 1 8 0 3 2 0 17:25:59 +ERAC2 -1 E!12170 E!12170 2 11 0 3 2 0 ------ ------conntime------ -----------stmt--------------- tns rac# tcpping jdbc rac# ins sel upd del plsql 17:26:00 ERAC 2 0 44 2 3 0 3 2 0 17:26:00 +ERAC1 1 0 79 1 8 0 3 2 0 17:26:00 +ERAC2 -1 E!12170 E!12170 2 11 0 3 2 0 17:26:01 ERAC 2 0 44 2 3 0 3 2 0 17:26:01 +ERAC1 1 0 79 1 8 0 3 2 0 17:26:01 +ERAC2 -1 E!12170 E!12170 2 11 0 3 2 0 17:26:02 ERAC 2 0 44 2 3 0 3 2 0 17:26:02 +ERAC1 1 0 79 1 8 0 3 2 0 17:26:02 +ERAC2 -1 E!12170 E!12170 2 11 0 3 2 0 17:26:03 ERAC 2 0 44 2 3 0 3 2 0 17:26:03 +ERAC1 1 0 79 1 8 0 3 2 0 17:26:03 +ERAC2 -1 E!12170 E!12170 2->X [ E!03113 ] 17:26:04 ERAC -1 E!12170 E!12170 2 3 0 3 2 0 17:26:04 +ERAC1 1 0 43 X [ E!03113 ] 17:26:04 +ERAC2 -1 E!12170 E!12170 2->X [ E!03113 ] 17:26:05 ERAC -1 E!12170 E!12170 2 3 0 3 2 0 17:26:05 +ERAC1 1 0 43 X->1 [ E!03113 ] 17:26:05 +ERAC2 -1 E!12170 E!12170 2->X [ E!03113 ] 17:26:06 ERAC -1 E!12170 E!12170 2 3 0 3 2 0 17:26:06 +ERAC1 1 0 43 X->1 [ E!03113 ] 17:26:06 +ERAC2 -1 E!12170 E!12170 2->X [ E!03113 ]

ERAC1 인스턴스를 포함하여 확장 RAC 전체가 차단되고 있음을 확실하게 있습니다. ERAC1 인스턴스(주로 DBWR LGWR) 현재 사용할 없는 iscsi2 iSCSI 스토리지에 쓰기를 계속 재시도하고 있기 때문입니다. TCP iSCSI 연결에서 iSCSI 시간이 초과되면 Oracle 소프트웨어(Clusterware, ASM, Database) I/O 오류가 발생합니다.

rac1 rac2에서 iSCSI 스택이 120 동안 재시도하도록 앞에서 구성했습니다(/etc/iscsi/iscsid.conf node.session.timeo.replacement_timeout 매개 변수). 지정한 120 동안 커널은 I/O 작업을 재시도하고 스토리지에서 filedescriptor(fd) 사용하는 모든 애플리케이션은 중단된 상태로 나타납니다. 자세한 내용은 dmesg 명령의 출력 ASM 경고 로그 파일에서 확인할 있습니다

시간 경과 :

17:28:17 ERAC -1 E!12571 E!12571 X [ E!03113 ] 17:28:17 +ERAC1 1 0 43 X->1 [ E!03113 ] 17:28:17 +ERAC2 -1 E!12571 E!12571 X [ E!03113 ] 17:28:18 ERAC -1 E!12571 E!12571 X [ E!03113 ] 17:28:18 +ERAC1 1 0 75 X [ E!03113 ] 17:28:18 +ERAC2 -1 E!12571 E!12571 X [ E!03113 ] 17:28:19 ERAC -1 E!12571 E!12571 X [ E!03113 ] 17:28:19 +ERAC1 1 0 91 X->1 29 0 23 23 0 17:28:19 +ERAC2 -1 E!12571 E!12571 X [ E!03113 ] 17:28:20 ERAC -1 E!12571 E!12571 X [ E!03113 ] 17:28:20 +ERAC1 1 0 43 1 8 0 4 1 0 17:28:20 +ERAC2 -1 E!12571 E!12571 X [ E!03113 ] 17:28:21 ERAC -1 E!12571 E!12571 X [ E!03113 ] 17:28:21 +ERAC1 1 0 42 1 8 0 4 2 0 17:28:21 +ERAC2 -1 E!12571 E!12571 X [ E!03113 ] 17:28:22 ERAC -1 E!12571 E!12571 X->1 4 0 8 9 0 17:28:22 +ERAC1 1 0 42 1 7 0 2 2 0 17:28:22 +ERAC2 -1 E!12571 E!12571 X [ E!03113 ] ------------conntime------ -----------stmt--------------- tns rac# tcpping jdbc rac# ins sel upd del plsql 17:28:23 ERAC 1 0 45 1 3 0 3 3 0 17:28:23 +ERAC1 1 0 43 1 2 0 3 2 0 17:28:23 +ERAC2 -1 E!12571 E!12571 X [ E!03113 ] 17:28:24 ERAC 1 0 43 1 2 0 2 2 0 17:28:24 +ERAC1 1 0 43 1 2 0 2 2 0 17:28:24 +ERAC2 -1 E!12571 E!12571 X [ E!03113 ] 17:28:25 ERAC 1 0 44 1 19 0 3 2 0 17:28:25 +ERAC1 1 0 43 1 2 0 3 2 0 17:28:25 +ERAC2 -1 E!12571 E!12571 X [ E!03113 ] 17:28:26 ERAC 1 0 44 1 3 0 2 3 0 17:28:26 +ERAC1 1 0 43 1 2 0 1 2 0 17:28:26 +ERAC2 -1 E!12571 E!12571 X [ E!03113 ] 17:28:27 ERAC 1 0 43 1 3 0 1 2 0 17:28:27 +ERAC1 1 0 42 1 2 0 3 2 0 17:28:27 +ERAC2 -1 E!12571 E!12571 X [ E!03113 ] 17:28:28 ERAC 1 0 43 1 8 0 3 2 0 17:28:28 +ERAC1 1 0 43 1 4 0 3 2 0 17:28:28 +ERAC2 -1 E!12571 E!12571 X [ E!03113 ]

다음과 같은 상황이 이루어집니다.

  • 17:28:17부터 17:28:19 사이(장애 발생 2 14 ) ERAC1 TNS에서 새로운 연결을 재설정할 있게 됩니다.
  • 17:28:19(장애 발생 2 16 ) ERAC1 FCF 풀이 정상적으로 작동합니다.
  • 17:28:19부터 17:28:22까지(장애 발생 2 16 ) 마스터 ERAC FCF 풀이 ERAC1 장애 조치 전환을 시도합니다.
  • 17:28:22(장애 발생 2 19 ) 마스터 ERAC FCF 풀이 ERAC1 성공적으로 장애 조치를 전환합니다. 이제 모든 연결이 정상적으로 작동합니다. DATA1_0001 페일 그룹에서 디스크 마운트 상태를 CACHED에서 MISSING으로 변경합니다.

SQL> col path format a36 SQL> col diskgroup format a10 SQL> col failgroup format a10 SQL> SELECT path, dg.name diskgroup, failgroup, mount_status, mode_status FROM v$asm_disk d JOIN v$asm_diskgroup dg ON (d.group_number=dg.group_number) ORDER BY 1;

PATH DISKGROUP FAILGROUP MOUNT_S MODE_ST ------------------------------------ ---------- ---------- ------- ------- /dev/iscsi/racdata1.asm1/lun0/part1 DATA1 DATA1_0000 CACHED ONLINE DATA1 DATA1_0001 MISSING OFFLINE SQL>

지연 대기의 영향 성능 저하

경고: 이러한 테스트는 설명서를 위한 것이며 실제 상황을 위한 테스트가 아니므로 확장 RAC 클러스터 성능을 실제로 측정하기 위한 테스트로 사용할 없습니다. .

확장 RAC 구성의 가장 중요한 요소는 RAC 노드와 스토리지 어레이 간의 거리입니다. 비용이 많이 드는 하드웨어 없이 대기 지연 시뮬레이션과 관련된 문제를 해결하기 위해 Linux에서 기본적으로 제공하는 네트워크 트래픽 형성 기능(QoS-Quality of Source) 사용할 것입니다. SAN iSCSI 기반으로 하므로 이더넷 레이어에서 간단하게 대기 지연, 패킷 순서 재지정 패킷 삭제를 시험해 있습니다. 이는 NFS 현재 개발되고 있는 FcoE에도 적용됩니다. 목표는 RAC 노드 간의 상호 연결을 위한 것입니다.

시나리오에서는 dom0 내부 Xen 네트워크 장치가 VM 간에 지연을 발생하도록 구성할 것입니다. Linux 트래픽을 형성하는 유틸리티는 "tc"(Traffic Control)입니다. 세부적으로 들어가기 시작하면 문제가 발생합니다. 표준 Oracle VM Server dom0 커널은 250HZ 실행되며 이는 dom0 커널에서 시간과 관련된 모든 작업이 4ms 간격으로 수행됨을 의미합니다. Linux netem 대기열 관리 원칙에 따라 발생하는 대기 지연은 커널의 속도(HZ) 따라 결정되므로 1ms 대기 지연을 시뮬레이션하려면 속도(HZ) 설정을 변경해야 합니다. 적어도 1,000HZ 변경해야 1ms 대기 지연을 시뮬레이션할 있습니다.

커널을 구성하는 것은 다소 까다로운 작업이 있으므로 여기에서 실행 준비가 완료된 dom0 커널 RPM 다운로드하여 사용하는 것이 좋습니다. dom0 Xen 커널을 빌드하는 절차는 "Oracle VM Server 2.1 Xen dom0 위한 커널 작성하기" 섹션 뒷부분에 간단하게 설명되어 있으며, 커널을 새로 설치하는 절차도 나와 있습니다.

Xen 네트워크 인터페이스에서 대기 지연이 발생하도록 구성하는 간단한 스크립트의 이름은 qosracinit.pl이며 dom0에서 실행되었습니다. 스크립트는 여기에서 다운로드할 있습니다.

여러분의 환경에 따라 변수를 변경한 실행합니다.

[root@quadovm ~]# ./qosracinit.pl > /tmp/qos && bash /tmp/qos [root@quadovm ~]#

대기 지연을 피하기 위해 QoS 규칙을 삭제하려면 다음을 실행하면 됩니다

[root@quadovm ~]# ./qosracinit.pl clear > /tmp/qos && bash /tmp/qos [root@quadovm ~]#

테스트는 Dominic Giles Swingbench 2.3 Order Entry 벤치마크를 사용하여 수행되었습니다. Swingbench RAC 환경을 손쉽게 설치할 있는 방법입니다. "Min Think" "Max Think" 시간은 설치의 가능한 트랜잭션 처리 능력을 사용하기 위해 0으로 설정되었습니다. "Think" 시간은 다음 트랜잭션을 지연하는 필요한 시간입니다.

15개의 JDBC 연결로 구성된 개의 부하 생성자(minibench) 개별 RAC 노드에서 부하를 생성했습니다. 부하 생성자는 "xeno" 워크스테이션에서 실행되었습니다. SOE 사용자에 대해 보고된 실제 데이터베이스 크기는 다음과 같습니다

SQL> conn soe/soe Connected. SQL> select sum(bytes)/1024/1024 mb from user_segments;

MB ---------- 2250.72656 SQL>

주요 매개 변수는 다음과 같은 값으로 설정되었습니다.

  • sga_target=1G
  • db_cache_size = 512M
  • pga_aggregate_target=256M
  • memory_target = 0 (disabled)

하한 db_cache_size 설정은 Oracle 데이터베이스에서 상호 연결 SAN 부하를 발생시켜 대기 지연되도록 설정되었습니다.

지연 대기 없음

우선 Vm 간의 실제 지연 대기를 측정합니다. (참고: 모든 ping 테스트는 Swingbench 완전 부하 상태에서 수집되었습니다.)

[oracle@rac2 ~]$ ping -c 10 -i 0.2 -q -s 1200 10.97.1.1; ping -c 10 -i 0.2 -q -s 1200 10.98.1.101; ping -c 10 -i 0.2 -q -s 1200 10.98.1.102 PING 10.97.1.1 (10.97.1.1) 1200(1228) bytes of data.

--- 10.97.1.1 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 1816ms rtt min/avg/max/mdev = 0.067/0.091/0.113/0.018 ms PING 10.98.1.101 (10.98.1.101) 1200(1228) bytes of data.

--- 10.98.1.101 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 1804ms rtt min/avg/max/mdev = 0.083/0.106/0.132/0.020 ms PING 10.98.1.102 (10.98.1.102) 1200(1228) bytes of data.

--- 10.98.1.102 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 1799ms rtt min/avg/max/mdev = 0.079/0.108/0.193/0.034 ms [oracle@rac2 ~]$

테스트는 RAC2 노드와 다음 간의 지연 대기를 보여 줍니다.

  • 10.97.1.1(상호 연결을 통한 RAC1)
  • 10.98.1.101(SAN 통한 iscsi1 openfiler)
  • 10.98.1.102(SAN 통한 iscsi2 openfiler)

1,200바이트 ICMP 에코 패킷을 사용합니다. 확장 RAC 대해 평균 왕복 시간이 중요한 요소이므로 이를 확인할 것입니다. 아래에서 있듯이 벤치마킹 결과는 ~5460TPM입니다.

[oracle@rac1 ~]$ sqlplus -s / as sysdba @tpm 6356 5425 4924 5162 5430 Average = 5459.4

PL/SQL procedure successfully completed.

[oracle@rac1 ~]$

그런 다음 지연 대기를 발생시키고 테스트 시스템에 대한 영향을 살펴 봅니다. 이에 사용되는 tpm.sql 스크립트의 내용은 다음과 같습니다.

set termout on set echo off set serveroutput on DECLARE val1 NUMBER; val2 NUMBER; diff NUMBER; average NUMBER := 0; runs NUMBER := 5; BEGIN FOR V IN 1..runs LOOP SELECT SUM(value) INTO val1 FROM gv$sysstat WHERE name IN ('user commits','transaction rollbacks');

DBMS_LOCK.SLEEP(60);

SELECT SUM(value) INTO val2 FROM gv$sysstat WHERE name IN ('user commits','transaction rollbacks');

diff := val2-val1; average := average + diff; DBMS_OUTPUT.PUT_LINE(diff); END LOOP; DBMS_OUTPUT.PUT_LINE('Average = ' || average/runs); END; /

exit

1ms 지연 대기

앞에서 것처럼 우선 실제 평균 왕복 시간을 측정합니다

[oracle@rac2 ~]$ ping -c 10 -i 0.2 -q -s 1200 10.97.1.1; ping -c 10 -i 0.2 -q -s 1200 10.98.1.101; ping

-c 10 -i 0.2 -q -s 1200 10.98.1.102 PING 10.97.1.1 (10.97.1.1) 1200(1228) bytes of data.

--- 10.97.1.1 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 1809ms rtt min/avg/max/mdev = 2.693/3.482/3.863/0.389 ms PING 10.98.1.101 (10.98.1.101) 1200(1228) bytes of data.

--- 10.98.1.101 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 1854ms rtt min/avg/max/mdev = 2.481/3.850/6.621/1.026 ms PING 10.98.1.102 (10.98.1.102) 1200(1228) bytes of data.

--- 10.98.1.102 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 1812ms rtt min/avg/max/mdev = 0.080/0.135/0.233/0.051 ms [oracle@rac2 ~]$

위의 출력을 봤을 , Linux 출력 네트워크 대기열에 1ms 추가된 실제 평균 왕복 시간이 3.5 – 3.8ms 정도 증가했음을 있습니다. 이는 발신되는 ICMP 에코 요청 패킷이 1ms 동안 지연되고 그에 따라 응답측으로부터의 응답도 1ms만큼 지연되기 때문입니다.나머지 2초는 시스템 부하가 찼을 과부하 시스템에서 Xen 일정 예약 컨텍스트 전환으로 인해 발생합니다. (참고: 현재 4개의 VM 시뮬레이션하고 있으며 실제로는 IO 작업이 dom0에서 수행되며 5번째 VM 4x CPU 시스템에서 실행됩니다.)

[oracle@rac1 ~]$ sqlplus -s / as sysdba @tpm 5173 5610 5412 5094 5624 Average = 5382.6

PL/SQL procedure successfully completed. [oracle@rac1 ~]$

3ms 지연 대기

[oracle@rac2 ~]$ ping -c 10 -i 0.2 -q -s 1200 10.97.1.1; ping -c 10 -i 0.2 -q -s 1200 10.98.1.101; ping

-c 10 -i 0.2 -q -s 1200 10.98.1.102

PING 10.97.1.1 (10.97.1.1) 1200(1228) bytes of data.

--- 10.97.1.1 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 1819ms rtt min/avg/max/mdev = 6.326/7.631/9.839/0.881 ms PING 10.98.1.101 (10.98.1.101) 1200(1228) bytes of data.

--- 10.98.1.101 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 1806ms rtt min/avg/max/mdev = 6.837/7.643/8.544/0.426 ms PING 10.98.1.102 (10.98.1.102) 1200(1228) bytes of data.

--- 10.98.1.102 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 1801ms rtt min/avg/max/mdev = 0.076/0.149/0.666/0.172 ms [oracle@rac2 ~]$

위에서 있듯이 시스템에 대한 Xen 일정 예약 과부하로 인해 1.5-2ms 추가되었습니다(7.5[ms] – 2x3[ms] = 1.5[ms]).

[oracle@rac1 ~]$ sqlplus -s / as sysdba @tpm 5489 4883 5122 5512 4965 Average = 5194.2

PL/SQL procedure successfully completed.

[oracle@rac1 ~]$

테스트에서 지연 대기 없이 5200TPM 5460TPM 성능 저하를 있습니다

10. 문제 해결 기타 정보

섹션에서는 확장 RAC 구조를 구현하는 동안 발생할 있는 다양한 문제에 대해 다룹니다.

RAC 연결 ORA-12545 오류 방지하기

경우에 따라 새로 구성한 RAC 클라이언트에 연결할 ORA-12545 오류("Connect failed because target host or object does not exist") 발생합니다. 문제를 해결하려면 인스턴스에 대해 개별적으로 LOCAL_LISTENER 매개 변수를 변경하십시오

 

SQL> ALTER SYSTEM SET local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.99.1.91)(PORT=1521))' SID='erac1';

System altered.

SQL> ALTER SYSTEM SET local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.99.1.92)(PORT=1521))' SID='erac2'; System altered.

또는 DNS 설정하고 여기에 RAC 노드를 등록하거나, RAC 호스트 이름을 IP 주소로 변환하도록 클라이언트를 다시 구성할 수도 있습니다. 예를 들어, UNIX 유사 JDBC 클라이언트에서 /etc/hosts 주소를 추가합니다.

10.99.1.191 vmrac1-vip vmrac1 10.99.1.192 vmrac2-vip vmrac2

Oracle VM Server 2.1 Xen dom0 커널 빌드하기

dom0 커널을 직접 컴파일하려면 Oracle VM 다음 RPM 업로드해야 합니다

[vnull@xeno Downloads]$ scp -r RPMS_OVM21_kernel_compile root@10.99.1.2:. root@10.99.1.2's password: m4-1.4.5-3.el5.1.i386.rpm 100% 133KB 133.2KB/s 00:00 rpm-build-4.4.2-37.el5.0.1.i386.rpm 100% 547KB 547.5KB/s 00:00 kernel-2.6.18-8.1.6.0.18.el5.src.rpm 100% 48MB 9.6MB/s 00:05 kernel-headers-2.6.18-8.el5.i386.rpm 100% 723KB 723.5KB/s 00:00 glibc-devel-2.5-12.i386.rpm 100% 2034KB 2.0MB/s 00:00 elfutils-0.125-3.el5.i386.rpm 100% 164KB 163.7KB/s 00:00 glibc-headers-2.5-12.i386.rpm 100% 605KB 604.6KB/s 00:00 patch-2.5.4-29.2.2.i386.rpm 100% 64KB 64.0KB/s 00:00 redhat-rpm-config-8.0.45-17.el5.0.1.noarch.rpm 100% 52KB 52.5KB/s 00:00 libgomp-4.1.1-52.el5.i386.rpm 100% 69KB 69.3KB/s 00:00 cpp-4.1.1-52.el5.i386.rpm 100% 2673KB 2.6MB/s 00:01 gcc-4.1.1-52.el5.i386.rpm 100% 5067KB 5.0MB/s 00:00 elfutils-libs-0.125-3.el5.i386.rpm 100% 105KB 105.2KB/s 00:00 [vnull@xeno Downloads]$

그런 다음 설치 패키지를 복사하여 OracleVM Server 설치합니다.

[root@quadovm RPMS_OVM21_kernel_compile]# rpm -Uhv *.rpm [..] [root@quadovm ~]# cd /usr/src/redhat/SPECS/ [root@quadovm SPECS]# vi kernel-2.6.spec

kernel-2.6.spec 다음 변수를 설정해야 합니다.

  • %define buildboot 0
  • %define buildxenovs 1

[root@quadovm SPECS]# rpmbuild -bp --target=`uname -m` kernel-2.6.spec Building target platforms: i686 Building for target i686 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.29959 + umask 022 [..] [root@quadovm SPECS]# cd ../BUILD/kernel-2.6.18/linux-2.6.18.i686/ [root@quadovm linux-2.6.18.i686]# grep HZ .config # CONFIG_HZ_100 is not set CONFIG_HZ_250=y # CONFIG_HZ_1000 is not set CONFIG_HZ=250 CONFIG_MACHZ_WDT=m CONFIG_NO_IDLE_HZ=y [root@quadovm linux-2.6.18.i686]# vi .config

.config 다음과 같이 편집하여 HZ 1,000Hz 설정되었는지 확인합니다.
# CONFIG_HZ_100
설정하지 않음
# CONFIG_HZ_250
설정하지 않음
CONFIG_HZ_1000=y
CONFIG_HZ=1000

Makefile 편집하여 커널을 차별화한 다시 빌드합니다

[root@quadovm linux-2.6.18.i686]# vi Makefile change EXTRAVERSION to e.g.: -8.1.6.0.18.el5xen_vnull03 [root@quadovm linux-2.6.18.i686]# make oldconfig [..] [root@quadovm linux-2.6.18.i686]# make config [..disable KERNEL DEBUG!...] [root@quadovm linux-2.6.18.i686]# make rpm scripts/kconfig/conf -s arch/i386/Kconfig [..]

새로 빌드한 커널은 /usr/src/redhat/RPMS/i386 디렉토리에 있어야 합니다

새로운 커널 설치하기

새로운 커널을 설치하는 절차는 대부분 동일하지만 여기서 컴파일한 커널은 설치 프로그램을 사용하지 않으므로 일부 커널 설치 절차를 수동으로 수행해야 합니다.

[root@quadovm ~]# rpm -ihv kernel-2.6.188.1.6.0.18.el5xen_vnull03-1.i386.rpm Preparing... ########################################### [100%] 1:kernel ########################################### [100%] [root@quadovm ~]# depmod -a 2.6.18-8.1.6.0.18.el5xen_vnull03 [root@quadovm ~]# mkinitrd /boot/initrd-2.6.18-8.1.6.0.18.el5xen_vnull03.img 2.6.18-8.1.6.0.18.el5xen_vnull03

이제 새로운 커널에서 부팅하도록 GRUB 부트 로더를 변경해야 합니다.

[root@quadovm ~]# cd /boot/grub [root@quadovm grub]# vi menu.lst

먼저 menu.lst file: default=0에서 기본값이 "0"으로 설정되어 있는지 확인합니다. 설정은 기본적으로 menu.lst에서 번째 커널 항목을 부팅합니다. 다음 GRUB 커널 구성 항목을 앞에 항목으로 넣습니다.

title Oracle VM Server vnull03 root (hd0,0) kernel /xen.gz console=ttyS0,57600n8 console=tty dom0_mem=512M module /vmlinuz-2.6.18-8.1.6.0.18.el5xen_vnull03 ro root=/dev/md0 module /initrd-2.6.18-8.1.6.0.18.el5xen_vnull03.img

치명적인 사이트 오류 신속 복구

여기에서는 장애 시뮬레이션 iscsi2 어레이와 rac2 노드를 정상적으로 작동시키는 간단한 절차를 설명합니다 (참고: 시나리오에서는 iscsi2 LUN 있는 OCRmirror 손실되었습니다.)

  1. iscsi2 시스템의 전원을 켭니다(: /OVS/running_pool/64_iscsi2 xm create vm.cfg 실행).
  2. rac1 노드에서 iscsi2 대한 iSCSI 연결을 감지하도록 설정합니다. /var/log/messages에서 "iscsid: connection4:0 is operational after recovery (314 attempts)" 같은 메시지가 있는지 확인합니다.
  3. ALTER DISKGROUP DATA1 ONLINE ALLon +ASM1 인스턴스를 수행합니다
  4. 누락된 페일 그룹이 이제 동기화됩니다.

PATH DISKGROUP FAILGROUP MOUNT_S MODE_ST ------------------------------------ ---------- ---------- ------- ------- /dev/iscsi/racdata1.asm1/lun0/part1 DATA1 DATA1_0000 CACHED ONLINE /dev/iscsi/racdata2.asm1/lun0/part1 DATA1 DATA1_0001 CACHED SYNCING

  1. 잠깐 후에 ASM 페일 그룹이 정상적으로 작동됩니다(MODE_STATUS=ONLINE).
  2. 보팅 디스크가 CSS 데몬에 의해 자동으로 온라인 상태로 됩니다.
  3. Ocrcheck에서 OCR mirror 하나가 동기화되지 않았다고 나타냅니다

[root@rac1 bin]# ./ocrcheck Status of Oracle Cluster Registry is as follows : Version : 2 Total space (kbytes) : 327188 Used space (kbytes) : 3848 Available space (kbytes) : 323340 ID : 2120916034 Device/File Name : /dev/iscsi/racdata1.ocr/lun0/part1 Device/File integrity check succeeded Device/File Name : /dev/iscsi/racdata2.ocr/lun0/part1 Device/File needs to be synchronized with the other device

Cluster registry integrity check succeeded [root@rac1 bin]#

  1. 이를 해결하려면 ocrconfig 실행한 다음 /u01/app/crs/log/rac1/crsd/crsd.log에서 새로운 OCR 미러에 대한 정보(대체 수행된 작업) 확인합니다

[root@rac1 bin]# ./ocrconfig -replace ocrmirror /dev/iscsi/racdata2.ocr/lun0/part1 [root@rac1 bin]#

  1. rac2 전원을 켜고 확장 클러스터에 대해 정상적으로 작동하도록 합니다.

11. 다음 단계

RAC 클러스터의 장애 복구 기능을 강화하는 방법에는 여러 가지가 있습니다. 먼저 Linux 결합 드라이버를 사용하여 리던던시형의 상호 연결을 설정할 있습니다. iSCSI 통해 IO 멀티 패칭에도 동일하게 적용합니다. 많은 디스크와 iSCSI OpenFiler 시스템 전용 디스크를 사용하면 성능과 테스트가 향상됩니다

12. 감사의

다음 분들에게 감사의 말씀을 드립니다:

  • racle 대해 가르쳐 주시고 관심을 갖게 만들어 주신 Radosław Mańkowski
  • Poznan University of Technology에서 프로젝트로 확장 RAC 대한 내용을 작성할 있도록 허가해 주신 Mariusz Masewicz Robert Wrembel.
  • 설명서의 기반이 RAC 설치에 대한 우수한 자료를 작성하신 Jeffrey Hunter.
  • 확장 RAC 통한 (직접) NFS 대한 기술적 설명을 제공해 주신 Kevin Closson (http://kevinclosson.wordpress.com/) Dan Norris (http://www.dannorris.com/)
Posted by redkite
, |

Silent Install을 사용한 오라클 데이터베이스 설치

가끔 다음과 같은 때가 있다. 오라클 데이터베이스를 설치해야 한다. 그런 데X터미널이 가능한 환경이 없다. 최근엔 노트북 가격이 많이 저렴해서 오퍼레이션 환경으로 사용되는 경우가 많은데 국내에서는 리눅스가 설치 된노트북을보기가드물다. 물론방법이없는것은아니다. 무료소프트웨 어인VMware 플레이어를설치하고적당한리눅스배포판을다운받아설 치하거나 cygwin 같은 오픈소스 소프트웨어를 사용할 수도 있다. 하지만 꼭그럴때에만인터넷이되지않는환경일때가많다.

한번OUI의setup을 실행시켜보자. DISPLAY가 설정되지 않았다는 둥, 지원하지않는환경이라는메시지만이돌아온다. 어떻게하는게좋을까? 또이런경우가있다. 오라클데이터베이스를사용하는애플리케이션을개 발 완료하였다. 이제 인스톨러를 개발해야 하는 단계에 접어들었는데, 오 라클 데이터베이스 설치는 어떻게 해야 할까? 어떤 방법으로든 애플리케 이션 설치 작업 중간에OUI 를 실행시켜 데이터베이스를 사용자가 직접 설치하도록해야하는가? 인스톨중간에자동적으로데이터베이스가설치 되게끔자연스럽게애플리케이션인스톨러에포함시키는방법이없을까? 답은 항상 있는 법이다. 위와 같은 상황에서 우리는 오라클 데이터베이스 의Silent Install 기능과 몇 가지 도구를 사용 함으로서GUI를 통하지 않 으면서도손쉽고빠르게데이터베이스를설치하거나삭제할수있다.

그럼 Silent Install을 통한 오라클 데이터베이스 설치 작업을 전체적으로 살펴보자. 설치는다음과같은작업순서로이루어진다고볼수있다.

작업은크게설치바이너리등의준비를포함하는준비와실제환경에설치 를진행하는두가지단계로나뉜다고볼수있다. 이순서는일반적인오라 클 데이터베이스 설치 순서로써 본 기사에서 언급하는 Silent Install이란 쉽게 말해 이러한 설치의 각 단계에서 사용하는 도구들을GUI 없이 가능 한자동화된방법으로사용하도록해주는것으로생각하면쉽다.

1. 바이너리 준비

준비단계는물론설치할환경용의스테이지바이너리를다운받는것으로 시작한다. 어떠한 경우에라도 설치 작업에서 가장 중요한 것은 설치할 환 경을정확히파악하는것이다. 충분한환경파악및준비없이설치를시작 하게되면커널파라메터의잘못된설정, 디렉토리권한부족등다양한원 인에의해한번의시도로는깔끔하게설치에성공하지못하게될가능성이 높다. 다시 언급 되겠지만 제품 설치 매뉴얼 상에 명시된 소프트웨어/하드 웨어 요구사항과 설치 전 작업 부분을 확인해서 실제 설치 전에 모든 오류 가능성을최대한배제해주는것이현명하다.

2. 데이터베이스 템플릿 준비

다음은 설치 후 생성해 줄 데이터베이스에 대한 준비이다. 목적하고 있는 설치 작업이 만약 기 운용중인 데이터베이스로부터의 마이그레이션 작업 이거나 개발한 애플리케이션의 부속으로서의 데이터베이스 설치라면 이 미구성이완료된데이터베이스를그대로새로설치될데이터베이스에옮 길필요가있을것이다. 이런목적으로사용될수있는것이바로데이터베 이스템플릿파일이며오라클데이터베이스유틸리티인DBCA(DataBase Configuration Assistant)를통해생성되거나사용될수있다. 템플릿파일은템플릿에포함시켜야할데이터가있는가의여부에따라두 가지중하나로선택될수있다. 선택된템플릿유형에따라다음과같은템 플릿파일을사용하게된다.

- 데이터를 포함하는 경우 : dbc, dbf 파일

- 데이터를 포함하지 않는 경우 : dbt 파일

데이터베이스를 생성하면서 메타데이터와 같이 선 입력되어야 할 데이터 가있다면dbc 파일템플릿유형을선택하면된다. 스키마는dbc 파일에저 장되며데이터는dbf 파일에압축되어저장된다. DBCA를사용한템플릿생성은다음과같은옵션을설정해야한다.

- createTemplateFromDB : 데이터베이스 생성 작업을 알리는 옵션

- sourceDB : 데이터베이스 소스

- templateName : 저장할 템플릿 파일명

- sysDBAUserName : DBA 계정

- sysDBAPassword : DBA 계정 암호

해당옵션을설정한후실행하면다음과같은화면을볼수있다.

dbca -createTemplateFromDB -sourceDB localhost:1521:orcl -templateName dbtemp -sysDBAUserName sys sysDBAPassword oracle1 Wed Dec 17 08:54:51 PST 2008 Creating a template from the database 10% complete 20% complete … 100% complete Look at the log file "/u01/app/oracle/oracle/product/10.2.0/db_1/ cfgtoollogs/dbca/silent.log" for further details. Wed Dec 17 08:55:03 PST 2008

이렇게생성된템플릿파일은다음의디렉토리에생성된다. <ORACLE_HOME>/assistants/dbca/templates 여기까지가준비단계이다. 애플리케이션을패키징하는경우라면애플리 케이션 바이너리와 스크립트등을 포함시키자. 오라클 데이터베이스 바이 너리와템플릿파일이준비가되었다면이제타겟시스템에설치준비가다 된것이다.

3. 설치 전 환경 점검

본격적인 설치 작업에 앞서 설치 환경에 대한 점검이 필요하다. 이러한 점 검사항은설치매뉴얼상에자세하게나와있지만일반적으로확인해봐야 하는내용중에는대표적으로다음과같은것들이있다.

- 다른 오라클 제품이 설치 된 것이 있는가?

- 설치할 계정이 생성되어 있는가?

- 충분한 디스크 용량이 확보되어 있는가?

- 네트워크 구성이 되어 있는가

특히 사전에 다른 오라클 제품이 설치되어 있는 경우 OUI (Oracle Universal Installer) 가사용하는OraInventory 디렉토리의사용권한에 제약이걸리거나오라클홈이름이충돌할수가있으므로반드시파악을해 두어야 한다. 이러한 점검을 통해 설치할 계정, 바이너리를 설치할 위치 (ORACLE_BASE), 데이터베이스를 설치할 위치(ORACLE_HOME) 를기록해두자.

본기사에서는설치환경을오라클리눅스로가정한다.

4. 바이너리 복사

이제 타겟 시스템에 로그인하여 오라클 데이터베이스 스테이지를 업로드 하자. 업로드 위치는 중요하지 않지만 설치를 진행할 계정에게 실행 권한 을부여하는것을잊지말자.

5. 사용자 환경 설정

사용자 환경설정은 먼저 oraInst.loc 파일을 생성하는 것으로 시작한다. root 계정으로 접속하여 /etc 디렉토리에 다음의 내용을 포함하는 oraInst.loc 파일을생성해주고이파일에데이터베이스를설치할계정이 파일내용을변경할수있도록권한을부여한다.

> vi /etc/oraInst.loc inventory_loc=<ORACLE_BASE>/oraInventory inst_group=

다음으로 사용자의 환경변수에ORACLE_BASE 를 설정해 준다. 만약 /tmp 디렉토리에400mb 이상의 영역이 확보되지 않았다면 별도의 적절 한영역을확보하여설정해준다.

> vi ./bash_profile $ ORACLE_BASE=/u01/app/oracle $ TMP=<mount_point>/tmp $ TMPDIR=<mount_point>/tmp $ export ORACLE_BASE TMP TMPDIR

6. 오라클 데이터베이스 바이너리 설치

바이너리설치는Oracle Universal Installer (OUI) 에의해진행된다. 이 OUI 에서 제공하는 Silent Install이바로GUI 없이 오라클 데이터베이 스를설치를가능하게해주는기능이다. Silent Install을위해서는설치시 에 요구되는 오라클 홈, 경로 등 각종 입력 값을 미리 정의하고 있는 Response 파일을통해반드시제공해야한다. Response 파일에는다양한 항목이 명시될 수 있으며DBCA를 따로 호출할 필요 없이 기본 데이터베 이스생성도가능하다. 다음의위치에서오라클스테이지에포함되어있는 Response 파일샘플을열어볼수있다.

<ORACLE_STAGE>/response/enterprise.rsp

<ORACLE_STAGE>/response/standard.rsp

다양한 옵션 설정이 가능하지만 간단하게 데이터베이스 바이너리만을 설 치하는경우라면다음의사항들만입력하면충분하다. 설치하려는데이터 베이스종류에따라두파일중적당한샘플파일을복사, 수정하여사용한다.

FROM_LOCATION : 인스톨 미디어 위치. products.xml 파일의 절대경로

ORACLE_HOME : 오라클 데이터베이스가 설치될 위치

ORACLE_HOME_NAME : 오라클 홈 이름

INSTALL_TYPE : 설치하려는 데이터베이스 타입. SE 혹은 EE

COMPONENT_LANGUAGES : 데이터베이스 바이너리의 기본언어

UNIX_GROUP_NAME : 설치 계정의 소속 그룹

n_configurationOption : 기본 데이터베이스를 생성할 것인지의 여부

위의 사항들이 포함된 Response 파일을 noconsole, silent, force 그리고 waitforcompletion 옵션들과더불어실행하면OUI 는사전환경점검을 수행하고오류가없으면그대로인스톨작업을시작한다.

> runInstaller -noconsole -silent -force -waitforcompletion -responseFile ./oui.rsp -monitorFile ./oui_monitor.log Starting Oracle Universal Installer... Checking installer requirements... Preparing to launch Oracle Universal Installer from /tmp/OraInstall2009-02- 12_10-05-22PM. Please wait ...Oracle Universal Installer, Version 10.2.0.1.0 Production Copyright (C) 1999, 2005, Oracle. All rights reserved. You can find a log of this install session at: /usr/oracle/oraInventory/logs/installActions2009-02-12_10-05-22PM.log

옵션에서responseFile에는앞서작성한Response 파일을, Monitor파일 에는 설치 진행에 관련된 로그 파일들의 위치가 출력된다. 이러한 파일들 은현실행위치가경로로잡혀있지않다면절대경로로설정해주어야한다. 옵션으로지정한Monitor파일에는다음과같은메시지가출력된다.

> vi /usr/oracle/oraInventory/logs/installActions2009-02-12_10-05-22PM.log Installactionslog=<ORA_INVENTORY>/logs/installActions2009-01-09_02-09- 44AM.log silentlog=<ORA_INVENTORY>/logs/silentInstall2009-01-09_02-09-44AM.log outlog=<ORA_INVENTORY>/logs/oraInstall2009-01-09_02-09-44AM.out errlog=<ORA_INVENTORY>/logs/oraInstall2009-01-09_02-09-44AM.err

<ORA_INVENTORY>는 일반적으로<ORACLE_BASE> 하위의 oraInventory 디렉토리이며 이곳에 설치 시작 시간을 기준으로 네 가지 로그파일이생성된다. InstallActionslog는설치에서진행된세부단계의 작업로그가출력되며outlog에서는좀더간결한방식으로출력된다. 그러 나가장유용한로그는silentlog로써 이곳에는 설치 작업 시도에 대한 요약된 결과만을 포함한다. 만약 Response 파일에 누락사항이 있거나 오류 가검출되는경우해당사항만이silentlog에출력되므로대처에용이하다. 다음은설치에성공했을때볼수있는silentlog 파일내역이다.

silentInstall2009-02-12_10-05-22PM.log WARNING:The following configuration scripts /usr/oracle/product/10.2.0/db_1/root.sh need to be executed as root for configuring the system. If you skip the execution of the configuration tools, the configuration will not be complete and the product wont function properly. In order to get the product to function properly, you will be required to execute the scripts and the configuration tools after exiting the OUI. The installation of Oracle Database 10g was successful.

만약다른애플리케이션설치작업의일환으로데이터베이스의설치를포 함한다면 outlog 파일의 내용을 주기적으로 검사해서 데이터베이스의 설 치 진행 정도를 확인한 후 애플리케이션 인스톨러의GUI 에 반영시키는 형태의응용을고려해볼수있다. 마지막으로, root 계정으로다음의스크립트를실행함으로써바이너리인 스톨이마무리된다.

<ORACLE_HOME>/root.sh

7. 오라클 리스너 구성

바이너리 인스톨이 완료되면 다음은 오라클 리스너를 설정하고 시작하는 단계이다. 오라클 리스너 구성은 NetCA (Network Configuration Assistant) 를 사용하게 되며 Silent Install이므로OUI 때와 마찬가지로 Response 파일을작성하여야한다. OUI 때와마찬가지로샘플Response 파일을수정하여사용하는것이좋다. NetCA Response 파일에필수적으 로명시해야하는내용은다음과같다.

SHOW_GUI : NetCA 화면이 뜨지 않게 한다. false 로 세팅한다.

LOG_FILE : 표준 출력에 출력하는 내용을 지정한 로그파일에도 출력한다.

작성된Response 파일을써서다음과같이NetCA를기동시킨다. silent, log 옵션을설정한다.

> $ORACLE_HOME/bin/netca /silent /log /responsefile netca.rsp Parsing command line arguments: Parameter "silent" = true Parameter "responsefile" = /home/oracle/workspace/mystage/Ora10gCD/ netca.rsp Done parsing command line arguments. Oracle Net Services Configuration: Configuring Listener:LISTENER Default local naming configuration complete. Listener configuration complete. Oracle Net Listener Startup: Running Listener Control: /usr/oracle/product/10.2.0/db_1/bin/lsnrctl start null Listener Control complete. Listener start failed. Listener may already be running. Default local naming configuration complete. Created net service name: EXTPROC_CONNECTION_DATA Profile configuration complete. Oracle Net Services configuration successful. The exit code is 0

작업이 완료되면 tnsnames.ora와 sqlnet.ora 생성되고 명시된 리스너가 구성된다.

8. 데이터베이스 생성

데이터베이스생성은준비단계에서설명된템플릿파일생성때와마찬가 지로 DBCA의 Silent Install 모드를 통해 수행할 수 있다. OUI 나 NetCA 와마찬가지로상세한설정을Response 파일에하고dbca를실행 하면 된다. Response 파일을 통해서는SGA 영역 설정 등 매우 상세한 내 용까지 설정이 가능하다. 각 항목에 대해서는 샘플 상에 주석으로 설명이 상세히되어있으니참고해보기를권장한다.

본 기사에서는 설치 단계에서 만들었던 데이터베이스 템플릿을 이용하여 데이터베이스를생성하고자한다. 먼저템플릿파일을다음의위치에복사 한다.

$ORACLE_HOME/assistants/dbca/templates/

템플릿을사용해서데이터베이스를생성하는경우dbca 에알려주어야하 는내용이최소화될수있으므로굳이Response 파일을만들필요는없다. 여기서는dbca의옵션을직접설정하여데이터베이스설치를진행한다. 다음은DBCA 실행 시에 사용자가 반드시 설정해 주어야 하는 옵션들이다. Response 파일을사용하는경우에도마찬가지로적용된다.

-templateName : 템플릿 파일 명

-gdbname : 글로벌 데이터베이스명

-sid : 데이터베이스 서비스 ID

-sysPassword : sys 계정 암호

-systemPassword : system 계정 암호

-recoveryAreaDestination : 데이터베이스 로그 파일이 저장될 위치

이제 silent와 createDatabase 옵션을 설정하여 dbca를 기동하면 다음과 같이데이터베이스가생성되는과정을확인할수있다. 데이터베이스가설 치된후에는자동으로데이터베이스가시작된다.

> dbca -silent -createDatabase -templateName optbtemp.dbt -gdbname orcl.jwp.oracle.com -sid orcl -sysPassword oracle1 -systemPassword oracle1 - recoveryAreaDestination /usr/oracle/flash_recovery_area Creating and starting Oracle instance 1% complete Creating database files Creating data dictionary views 21% complete Adding Oracle JVM … Completing Database Creation … 100% complete Look at the log file "/usr/oracle/product/10.2.0/db_1/cfgtoollogs/dbca/orcl/ orcl.log" for further details.

설치 된 후에 설치계정에ORACLE_SID 를 설정한 후 sqlplus로 접속해 볼수있다.

본설정에서는Enterprise Manager(EM)를사용하지않는데이터베이스 임베딩 환경을 가정하였다. EM 의 설치가 필요하다면 emConfiguration 옵션을추가해주어야한다.

결론

이상으로Silent Install을통한오라클데이터베이스설치방법을스텝바 이스텝으로훑어보았다. 보다상세한각설치과정에대한설명이나설치 전의 확인사항 등에 대해서는 반드시 설치 가이드(Oracle Database Installation Guide)를필독하기를권장한다. OUI의발전과더불어오라 클제품의설치는매우간단해졌지만여전히초심자들에게는어렵게느껴 질때가많으며또가끔GUI 기반의설치에부담을느끼는사람들도종종 보게될때가있다. 이런경우Silent Install 기능은설치과정을단순화하 고각과정에어떠한사용자입력이필요한지를한눈에파악할수있게함 으로써 오라클 데이터베이스의 구조 및 설치 과정에 대해 보다 쉽고 빠른 이해를도울수있다. 또한개발한애플리케이션의부속으로서데이터베이 스가임베딩이되는경우, Silent Install 기능을사용하여애플리케이션설 치과정에데이터베이스설치를자연스러운형태로포함함으로서전체설 치과정에대한통제권을확보할수있다. 이를바탕으로사용자실수, 환경 오류등다양한원인으로비롯될수있는설치오류에대해보다유연한대 처가가능할수있으며따라서애플리케이션의신뢰도와품질향상에기여 할수있을것으로희망한다.

11.31 설치시 OS버전에러시

./runInstaller -ignoreSysPrereqs

./runInstaller -noconsole -silent -force -ignoreSysPrereqs -waitforcompletion -responseFile /var/tmp/client/response/clientadmin.rsp -monitorFile /var/tmp/install.log

# oracle profile 수정

$ vi .profile

umask 022

export ORACLE_BASE=/oracle/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0

export ORACLE_SID=ORA10g #(instance_name을 지정한다)

export TMPDIR=$ORACLE_BASE/tmp

export TMP=$ORACLE_BASE/tmp

# export DISPLAY=hostname:0.0 #(runInstaller를 띄우기 위해 Display를 잡아준다)

export TNS_ADMIN=$ORACLE_HOME/network/admin

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

export NLS_LANG=AMERICAN_AMERICA.UTF8 #(DB Character set 지정)

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32:/usr/lib

export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/sbin:/usr/ccs/bin:.:$PATH #<HP-UX 의 경우 추가사항>

# export SHLIB_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32:/usr/lib #< AIX 의 경우 추가사항>

export LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/usr/lib

export LINK_CNTRL=L_PTHREADS_D7

Posted by redkite
, |

DB Silent Mode 설치

export ORACLE_HOME=/oracle/product/10.2
export ORACLE_BASE=/oracle/product/10.2
export ORACLE_CD=/oracle/product/10.2

runInstaller [ Install ]
----------------------------------------------------------------------------------
필수 사항
=======================================================
export TMPDIR=$ORACLE_BASE/tmp
export TMP=$ORACLE_BASE/tmp
mkdir -p $ORACLE_BASE/tmp

export ORACLE_CD=$ORACLE_BASE
cp $ORACLE_CD/database/response/enterprise.rsp .

vi enterprise.rsp
------------------------------------------------------------------
UNIX_GROUP_NAME="dba"
FROM_LOCATION="/oracle/product/10.2/database/stage/products.xml"
ORACLE_BASE="/oracle/product/10.2"
ORACLE_HOME="/oracle/product/10.2"
ORACLE_HOME_NAME="OUIHome1"
INSTALL_TYPE="EE"
COMPONENT_LANGUAGES={"en","ko"}
n_configurationOption=false
=======================================================

export rsp=enterprise.rsp
cat $rsp | grep ^FROM_LOCATION=> $rsp.out
cat $rsp | grep ^ORACLE_HOME=>> $rsp.out
cat $rsp | grep ^ORACLE_HOME_NAME=>> $rsp.out
cat $rsp | grep ^INSTALL_TYPE=>> $rsp.out
cat $rsp | grep ^COMPONENT_LANGUAGES=>> $rsp.out
cat $rsp | grep ^UNIX_GROUP_NAME=>> $rsp.out
cat $rsp | grep ^n_configurationOption=>> $rsp.out
cat $rsp.out

설치
=====
$ORACLE_CD/database/runInstaller -silent -force -waitforcompletion \
-responseFile `pwd`/$rsp


runInstaller [ Patch ]
----------------------------------------------------------------------------------
필수 사항
=======================================================
export TMPDIR=$ORACLE_BASE/tmp
export TMP=$ORACLE_BASE/tmp
mkdir -p $ORACLE_BASE/tmp

export ORACLE_CD=$ORACLE_BASE
cp $ORACLE_CD/Disk1/response/patchset.rsp .

vi enterprise.rsp
------------------------------------------------------------------
UNIX_GROUP_NAME="dba"
FROM_LOCATION="/oracle/product/10.2/Disk1/stage/products.xml"
ORACLE_HOME="/oracle/product/10.2"
ORACLE_HOME_NAME="OUIHome1"
COMPONENT_LANGUAGES={"en","ko"}
11g
경우 추가
----------------
b_acceptLicense=false
b_useRegistration=false
DECLINE_SECURITY_UPDATES=true
=======================================================

export rsp=patchset.rsp
cat $rsp | grep ^FROM_LOCATION=> $rsp.out
cat $rsp | grep ^ORACLE_HOME=>> $rsp.out
cat $rsp | grep ^ORACLE_HOME_NAME=>> $rsp.out
cat $rsp | grep ^COMPONENT_LANGUAGES=>> $rsp.out
cat $rsp | grep ^UNIX_GROUP_NAME=>> $rsp.out
cat $rsp.out

Patch
=====
$ORACLE_CD/Disk1/runInstaller -silent -force -responseFile `pwd`/$rsp

netca
----------------------------------------------------------------------------------
cp $ORACLE_CD/database/response/netca.rsp .
SHOW_GUI=false

netca /silent /responsefile netca.rsp
$ORACLE_HOME/bin/netca /silent /log /responseFile /data/oracle/media/database/response/netca.rsp
yum install libXp-1.0.0-8.i386.rpm
yum install libXp

dbca
----------------------------------------------------------------------------------
수정 파일: $ORACLE_HOME/assistants/dbca/templates/New_Database.dbt
< option name="SPATIAL" value="false"/>
< initParam name="sga_target" value="140" unit="MB"/>

export DB_UNIQUE_NAME=DB10
export ORACLE_BASE=/oracle

dbca -silent -createDatabase -templateName New_Database.dbt \
-gdbname DB10 -sid DB10 -sysPassword system -systemPassword system \
-datafileDestination /oradata
-recoveryAreaDestination /oradata/DB10/flash_recovery_area
[-characterSet KO16MSWIN949
-characterSet KO16KSC5601
-characterSet UTF-8 ]

dbca -silent -deleteDatabase -sourceDB DB10

dbca -silent -createDatabase -templateName New_Database.dbt \
-gdbname Ora10g -sid Ora10g -sysPassword qodzmxkdns -systemPassword qodzmxkdns \
-datafileDestination /data/oradata -recoveryAreaDestination /data/oradata/Ora10g/flash_recovery_area -characterSet AL16UTF8 -characterSet KO16KSC5601


10205/Disk1/runInstaller -silent -responseFile /HDHOSP/patch/Disk1/response/patchset.rsp
~~~~~~~~~~~~~~~~~~~~~~~~
INFO: The user has chosen to include the collector, but with the shiphomeinfo.properties value, is the collector included for configuration ? : true
INFO: The ORACLE_CONFIG_HOME env var is set to
INFO: The selected Home : /oracle/product/10.2 is selected for upgrade ? false
INFO: Setting the value of COLLECTOR_UPGRADE
INFO: Setting variable 'COLLECTOR_UPGRADE' to 'false'. Received the value from a code block.
INFO: Can we show the collector page ? true

SEVERE:Values for the following variables could not be obtained from the command line or response file(s):
MYORACLESUPPORT_USERNAME(MyOracleSupportUsername)
Silent install cannot continue.

조치
10205/Disk1/runInstaller -silent -responseFile /HDHOSP/patch/Disk1/response/patchset.rsp DECLINE_SECURITY_UPDATES=TRUE

Posted by redkite
, |

6155910_기술노트_60회_Oracle_Database_11gR2_RAC_Install_Step_by_Step_on_vSphere.pdf

VMware 공유 디스크 생성

Vmfkstools.pl –server 192.168.0.100 –c 5g –d eagerzeroedthick –a lsilogic

/vmfs/volumes/datastore1/ordata/crs.vmdk

Vmfkstools.pl –server 192.168.0.100 –c 20g –d eagerzeroedthick –a lsilogic

/vmfs/volumes/datastore1/ordata/data.vmdk

  1. 양쪽 노드에 호스트 파일 등록

    [root@rac1]# cat /etc/hosts

    223.1.1.18 rac1

    223.1.1.19 rac2

    #Private LAN For Oracle RAC Interconnection

    10.1.1.18 rac1-priv1

    10.1.1.19 rac2-priv1


    # Public Oracle Virtual IP

    223.1.1.20 rac1-vip

    223.1.1.21 rac2-vip


    223.1.1.22 rac-scan

  2. 커널 설정
    fs.aio-max-nr = 1048576

    fs.file-max = 6815744

    kernel.shmall = 2097152

    kernel.shmmni = 4096

    kernel.sem = 2700 32000 100 128

    net.ipv4.ip_local_port_range = 9000 65500

    net.core.rmem_default = 262144

    net.core.rmem_max = 4194304

    net.core.wmem_default = 262144

    net.core.wmem_max = 1048586

    kernel.shmmax = 8589934592

  3. /etc/limits.conf 파일에 설정
    oracle soft nofile 131072
    oracle hard nofile 131072
    oracle soft nproc 131072
    oracle hard nproc 131072
    oracle soft core unlimited
    oracle hard core unlimited
    oracle soft memlock 3500000
    oracle hard memlock 3500000
  4. /etc/pam.d/login 파일에 다음을 등록
    session required /lib/security/pam_limits.so
  5. User 쉘 등록 작업
    PATH=$PATH:$HOME/bin
    export PATH
    stty erase ^H
    export ORACLE_BASE=/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/11.2.0.2
    export ORACLE_SID=RAC2
    export ORACLE_UNQNAME=RAC
    export ORACLE_TERM=xterm
    export PATH=/usr/sbin:$PATH
    export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
    export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
    export DISPLAY=192.168.6.40:0.0
    if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
    else
    ulimit -u 16384 -n 65536
    fi
    umask 022
    fi
  6. ASM Rawdevice 를 사용하기 위해 패키지 설치
    http://www.oracle.com/technetwork/server-storage/linux/downloads/rhel5-084877.html
  7. Oracle ASM을 이용하여 디스크 설정
    fdisk 설정
    #> oracleasm createdisk CRS /dev/sdb1
    #> oracleasm createdisk DATA /dev/sdc1
    #> oracleasm listdisks
    #> oracleasm scandisks
  8. SSH DSA 키 생성 후 패스워드 없이 로그인
    #> ssh-keygen -t dsa
    #> vi authorized_keys
  9. Grid Infrastructure 관련 설치 전 사전 확인
    #> ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
    6155898_verify.txt

<meta http-equiv="content-type" content="text/html; charset=utf-8">

raw device 연동

/etc/sysconfig/rawdevices

# format: <rawdev> <major> <minor>

# <rawdev> <blockdev>

# example: /dev/raw/raw1 /dev/sda1

# /dev/raw/raw2 8 5

/dev/raw/raw1 dev/sdb1

/dev/raw/raw2 dev/sdb2

/dev/raw/raw3 dev/sdb3

/dev/raw/raw4 dev/sdb4

/dev/raw/raw5 dev/sdc1

/dev/raw/raw6 dev/sdc2

/dev/raw/raw7 dev/sdc3

/dev/raw/raw8 dev/sdc4

 

raw 관련 서비스 재시작

service rawdevices restart

 

권한 관련 설정
/etc/udev/permissions.d/50-udev.permissions (4버전대)

/etc/udev/rules.d/60-raw.rules (5버전대)

ACTION=="add", KERNEL=="raw*", OWNER=="oracle", GROUP=="oinstall", MODE=="0660"

Posted by redkite
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함