☆ Oracle 10g R2에 ASM구축 및 DB 설치하기 ☆
 

○ 리눅스 설치 및 오라클 설치 과정은 기존 포스팅과 동일
2011/12/23 - [Study/Oracle - 설치] - RHEL4 + 10g 설치 _OUI
2011/12/23 - [Study/Oracle - 설치] - RHEL4 + 10g 설치 _silent mode


● ASM 환경 구축하고 그곳에 DB를 설치하는 부분이 다르다. 






○ 리눅스 설치 및 오라클 설치 과정 



1. linux 설치
 

① 커널환경설정
 

# vi /etc/sysctl.conf

#oracle 10g setup
kernel.shmmax=536870912
kernel.shmmni=4096
kernel.shmall=2097152
kernel.sem=250 32000 100 128
fs.file-max=65536
net.ipv4.ip_local_port_range=1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144



 
 

# vi /etc/security/limits.conf

oracle10g       soft    nproc   2047
oracle10g       hard    nproc   16384
oracle10g       soft    nofile  1024
oracle10g       hard    nofile  65536


 
 

# vi /etc/pam.d/login

session required        pam_limits.so


 
 
 
② 필요 RPM 설치 - linux 설치 3번CD 삽입후 mount

인식 안되면
# umount /media/cdrom
# mount /media/cdrom
 
# cd /media/cdrecorder/RedHat/RPMS
# rpm -Uvh libaio-devel-0.3.105-2.i386.rpm
# cd /home/oracle/patch
# unzip p4198954_40_LINUX.zip
# rpm -Uvh compat-libcwait-2.1-1.i386.rpm
# rpm -Uvh compat-oracle-rhel4-1.0-5.i386.rpm


 
 
 
③ oracle 소유 .bash_profile 수정
 

# su - oracle
$ vi .bash_profile

export EDITOR=vi
export LD_ASSUME_KERNEL=2.4.19
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10g
export ORACLE_SID=testdb
export ORACLE_TERM=xterm
export NLS_LANG=AMERICAN_AMERICA.KO16MSWIN949
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export PATH=$PATH:$ORACLE_HOME/bin
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export LANG=C


 
 
④ 설치파일 압축해제

# su -
# cd /home/oracle
# unzip 10201_database_linux32.zip
# chown -R oracle.dba /home/oracle/


 
 


2. 오라클 설치
 

리눅스GUI환경에서
오라클로 로그인한후 새터미널
$ cd /home/oracle/database
$ ./runInstaller


※ 설치과정 - GUI로 진행된다.
고급설치 - 인벤토리경로지정후 다음 - Enterprise Edition선택후 다음 - 홈경로 선택후 다음
 - 필요 조건 검사 (경고나오는것은 체크_사용자가 확인됨) 후 다음 - 데이터베이스 소프트웨어만 설치 다음
 - 설치 - ROOT계정으로 스크립트 실행 (실행중 선택화면 엔터) 확인 - 종료


 



3. 패치

① 패치셋 압축해제

# cd /home/oracle/patchset
# unzip p8202632_10205_LINUX.zip


 

리눅스GUI환경
새터미널 열어서
$ cd /home/oracle/patchset/Disk1
$ ./runInstalle


 

※ 설치과정 - GUI로 진행된다.
다음 - 디렉토리확인후 다음 - 메일안받음 다음 - 필요 조건 검사 (경고나오는것은 체크_사용자가 확인됨) 후 다음
 - 설치 - ROOT계정으로 스크립트 실행 (실행중 선택화면 엔터/y/y/y) 확인 - 종료


 




● ASM 구축후 DB설치 과정

 

3. 디스크추가
 

하드 디스크 2개 장착 - VMware 리눅스 종료한후 디스크 추가하고 다시 부팅하기
① 20G 백업용 : /dev/sdb
② 10G ASM 디스크 : /dev/sdc


 
 
 
 
① 20G 백업용 : /dev/sdb
 
 - 파티션 지정

# fdisk /dev/sdb
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 2610.
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): (엔터)
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): (엔터)
Value out of range.
Partition number (1-4): 1
First cylinder (1-2610, default 1): (엔터)
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610):  (엔터) 
Using default value 2610
 
Command (m for help): p
 
Disk /dev/sdb: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2610    20964793+  83  Linux
 
Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
Syncing disks.


 
 
 - 포맷

# mkfs.ext3 /dev/sdb1


 
 
 - 마운트

# mkdir /data
# chown oracle.dba /data
# mount /dev/sdb1 /data
# df -h 확인
 
# vi /etc/fstab수정
/dev/sdb1               /data                   auto    defaults        1 2


 
 
 

② 10G ASM 디스크 : /dev/sdc
 
 - 파티션 지정
   : 2개 (1번 7.5G, 2번 2.5G)
 

# fdisk /dev/sdc
Command (m for help): p
 
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
   Device Boot      Start         End      Blocks   Id  System
 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1):  (엔터) 
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305): +7500M
 
Command (m for help): p
 
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         913     7333641   83  Linux
 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (914-1305, default 914):  (엔터) 
Using default value 914
Last cylinder or +size or +sizeM or +sizeK (914-1305, default 1305):  (엔터) 
Using default value 1305
 
Command (m for help): p
 
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         913     7333641   83  Linux
/dev/sdc2             914        1305     3148740   83  Linux
  
 
Command (m for help): p
 
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         913     7333641   83  Linux
/dev/sdc2             914        1305     3148740   83  Linux

 
Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
Syncing disks.


 
 
 

※ 참고
  : 파티션 별 볼륨이름 설정하기 - 여기서 쓰진 않음. 그냥 알고 있기용..
# e2label /dev/sdc1 asm1
# e2label /dev/sdc2 fra1
 
# e2label /dev/sdc2
fra1
# e2label /dev/sdc1
asm1



파티션 작업 까지만 하고 아래 작업 계속..
 
 
 
 
4. ASM Library 설치하기
 

※ 리눅스 버전 확인하기
# uname -nr
localhost.localdomain 2.6.9-34.EL
  → 결과에 나온 버전과 동일한 버전의 관련파일 찾기



# ll
total 236
-rwxrw-rw-  1 oracle dba 130473 Feb 27 15:59 oracleasm-2.6.9-34.EL-2.0.5-1.el4.i686.rpm
-rw-r--r--  1 oracle dba  83255 Feb 27 15:59 oracleasm-support-2.1.4-1.el4.i386.rpm
-rw-r--r--  1 oracle dba  13105 Feb 27 15:59 oracleasmlib-2.0.4-1.el4.i386.rpm



 

# rpm -Uvh oracleasm*
warning: oracleasm-support-2.1.4-1.el4.i386.rpm: V3 DSA signature: NOKEY, key ID b38a8516
Preparing...                ########################################### [100%]
   1:oracleasm-support      ########################################### [ 33%]
   2:oracleasm-2.6.9-34.EL  ########################################### [ 67%]
   3:oracleasmlib           ########################################### [100%]


 
 
 
 
5. 설치된 라이브러리 환경설정
 

# /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 []: dba
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  ]


 
 

# /etc/init.d/oracleasm enable
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver:                     [  OK  ]
Scanning the system for Oracle ASMLib disks:               [  OK  ]


 
 

# /etc/init.d/oracleasm start
Initializing the Oracle ASMLib driver:                     [  OK  ]
Scanning the system for Oracle ASMLib disks:               [  OK  ]


 
 
 
6. ASM disk 생성
 

# /etc/init.d/oracleasm createdisk asm1 /dev/sdc1
Marking disk "asm1" as an ASM disk:                        [  OK  ]
# /etc/init.d/oracleasm createdisk fra1 /dev/sdc2
Marking disk "fra1" as an ASM disk:                        [  OK  ]


 
 
 

※ 참고1 - 에러대처하기
1) ASMLib 설치도 하고 configure 도 했는데
   createdisk 가  Instantiating disk: failed 메세지와 함께 실패하는 경우
   
   # oracleasm init
   
  해주고 다시 시도하면 된다.
 

2)  createdisk  명령의 의미
 : 이전에 만들어진 disk partition에 label을 붙인다.
   = /dev/sdc1이라는 디스크파티션asm1이라는 이름을 붙인다.
# /etc/init.d/oracleasm createdisk asm1 /dev/sdc1


 
 
 

※ 참고2
위의 방법과 다르게(실무환경처럼 여러 디스크 묶어서 구성해야할 경우) 디스크 구성해보기
LVM을 이용하여 ASM파티션 구성하기
 
 
1) 물리디스크 1G짜리 10개 추가
 
 
2) 서버부팅후 10개의 디스크를 Linux LVM (8e) 로 파티션 작업

# fdisk /dev/sdc
n / p / 1 / 엔터 / 엔터 / t / 8e / w
나머지 /dev/sdd ~ /dev/sdl 까지 반복
# fdisk -l
System부분 Linux LVM으로 되어있는 것 확인


 
 
3) 10개의 다른 디스크를 1개의 물리적 디스크로 매핑하기

# pvcreate /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1


 
 
4) 1개의 디스크 그룹으로 만들기
 : 1G 용량의 10개의 디스크가 작업후 10G 용량의 큰 1개의 디스크가 됨

# vgcreate asm /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1


 
 
5) 2개의 논리 볼륨으로 나누기
 : asm1 (7.5G) - DB 설치할곳, fra (2.4G) - flashback 정보 저장할 곳

# lvcreate -L 7.5G -n asm1 asm
# lvcreate -L 2.4G -n fra1 asm


 
 
6) 확인

# lvscan


 


 
 
 
 
7.  CSS  (Oracle Cluster Syncronization Service) 데몬 활성화

# /home/oracle/product/10g/bin/localconfig add
/etc/oracle does not exist. Creating it now.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Configuration for local CSS has been initialized
 
Adding to inittab
Startup will be queued to init within 30 seconds.
Checking the status of new Oracle init process...
Expecting the CRS daemons to be up within 600 seconds.
CSS is active on these nodes.
        server110
CSS is active on all nodes.
Oracle CSS service is installed and running under init(1M)


 
 
 
 
 
8. DBCA 를 실행해서 ASM 인스턴스 생성
 

리눅스GUI환경에서 새터미널
$ dbca



※ 설치과정 - GUI로 진행된다.
다음 -  Automatic Storage Management 구성 선택 후 다음 - 암호입력 다음 - 확인창 확인
 - 새로만들기 - 그룹이름: DATA입력, 외부선택, ORCL:ASM1 체크 확인
 - 새로만들기 - 그룹이름: FRA입력, 외부선택, ORCL:FRA1 체크 확인
 - DATA 선택 후 완료 - 확인창 예 - 데이터베이스 생성 다음 - 사용자정의 데이터베이스 다음
 - testdb 입력후 다음 - EM를 사용하여 데이터베이스구성 체크상태에서 다음 - 암호지정후 다음
 - ASM(자동 저장 영역 관리) 선택 다음
 - 확인창 암호지정 확인 에러나면?
 (io 예외상황: The Network Adapter could not establish the connection 에러 나오면 netca 수행해서 리스너 설정후 다시 시도)

 - 중단 - 취소 - ASM(자동 저장 영역 관리) 선택 다음 - DATA선택 다음 - +DATA 다음
 - 찾아보기 - FRA선택 확인 - 플래시복구영역지정, +FRA 다음 - Enterprise Manager 저장소만 체크, 표준 데이터베이스 구성요소 선택
 - 다 체크해제하고 확인 - 다음 - 백분율40 문자집합949선택 다음 - 다음 - 완료 - 확인 - ~~설치됨(오래걸림)~~ - 종료
 
※ 설치 완료후 오류
EnterpriseManager 구성 실패오류 확인 - testdb 생성완료 종료


 
 
 
 
9. 제대로 설치 되었나 확인
 

SQL> select status from v$instance;
 
STATUS
------------
OPEN


 

SQL> select instance_name from v$instance;
 
INSTANCE_NAME
----------------
testdb


 
 

SQL> set line 200
SQL> col disk_group for a10
SQL> col label for a10
SQL> col state for a10
SQL> select a.name as disk_group, d.name "Label", a.state
  2  from v$asm_disk d, v$asm_diskgroup a
  3  where d.group_number=a.group_number
  4  order by 2;

 
DISK_GROUP Label      STATE
---------- ---------- ----------
DATA       ASM1       CONNECTED
FRA        FRA1         CONNECTED


 
 
Posted by 딩구르

댓글을 달아 주세요

  1. DBA 2012.07.18 10:30  댓글주소  수정/삭제  댓글쓰기

    주인장님, 잘 보고 갑니다..

  2. dador 2012.09.23 17:19  댓글주소  수정/삭제  댓글쓰기

    올려주신 글 보면서 VMWARE에서 오라클10g에 asm설치 중입니다.

    설치를 완료 후 em을 통해서 확인도 해보고 즐거운 마음으로 있다가

    다시 공부 하려고 재부팅을 하고

    export ORACLE_+ASM
    sqlplus / as sysdba 로 접속 후에
    startup을 하니까
    18:44:29 UserID:SYS,SID:+ASM>startup
    ASM instance started

    Total System Global Area 83886080 bytes
    Fixed Size 1217836 bytes
    Variable Size 57502420 bytes
    ASM Cache 25165824 bytes
    ORA-15032: not all alterations performed
    ORA-15063: ASM discovered an insufficient number of disks for diskgroup "FRA"
    ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DATA"

    이런식으로 에러가 나네요...

    아마 디바이스를 못찾는거 같은데...

    아까전에 재부팅 하기 전 그니까 설치 직후에는 문제 없었는데

    재부팅을 하고 난 후에 이런 에러가 나네요.. 제가 만든 디스크를 못 읽는 건가요??

    [root@localhost ~]# lvscan
    ACTIVE '/dev/asm/asm1' [7.50 GB] inherit
    ACTIVE '/dev/asm/fra1' [2.40 GB] inherit

    [root@localhost ~]# /etc/init.d/oracleasm status
    Checking if ASM is loaded: yes
    Checking if /dev/oracleasm is mounted: yes

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

    [root@localhost ~]# /etc/init.d/oracleasm listdisks
    [root@localhost ~]#
    이런식으로 listldisks 결과가 아무것도 없네요 ...이유를 모르겠습니다..

    이게 이상한게..설치 직후에는 아무 이상이 없엇는데 재부팅후 이렇게 liskdisks에 아무것도 나오질 않네요..ㅠㅠ

    혹시 왜그런지 알수 있을가요??

    • Favicon of https://dinggur.tistory.com BlogIcon 딩구르 2012.10.03 15:03 신고  댓글주소  수정/삭제

      솔직히 리눅스 쪽에 손을 놓은지 꽤 되었기 때문에 직접적인 답변을 드리기가 힘이 드네요.

      예상되는 바로는 재부팅후 해당 데몬이 내려간 상태일 수도 있으니 해당 데몬을 다시 기동 시키시고 다시 시도해 보시길 바랍니다.