OEL5 + 11g + rawdevice
출처: 서진수 강사님 oracle 취업 강좌, 기타 블로그
1 vm ware 세팅
Os 설치시 네트워크 어뎁터 추가 후 host-only
불필요 장치 삭제 (플로피, usb 사운드 )
localdisk 라고 이름
디스크를 추가하기
disk 15G scsi(1:0)
따로 폴더 만들어서 저장
C:\빅데이터4기\Oracle 리눅스\storage
Vmx 파일 수정하기
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
scsi1.sharedBus = "virtual"
scsi1:0.deviceType = "disk"
cd 넣고 시작
사진
사진끝
2 os 설치
파티션(내맘대로)
/ ----8000
/boot -----100
/var ----2000
swap ----4000 (가상머신 메모리의 1.5~2배)
/home -----8000
/app ----나머지시스템 tool 디테일 sysstat 추가 하기
화면 해상도 1024 * 000 으로 바꾸기
node 1 Ip 확인 후에 입력하기
ifconfig
netstat -nr
Mask 255.255.255.0
gw 172.16.65.2
dns 168.126.63.1
Eth0 172.16.65.137
Eth1 172.16.126.134
neat 입력 검색한 데이터를 입력 하기
/etc/init.d/network restart
사진
사진끝
3 node1 설치
[root@rac1 ~]# vi /etc/hosts
public , vip, Cluset-scan 의 대역이 같아야함 255.255.255.0 이면
3번째 자리까지는 같아야 함 그담부터는 맘대로
localhost 옆에는 지워주기
#public
192.168.117.147 rac1
192.168.117.147 rac2
#private
192.168.137.129 rac1-priv
192.168.137.129 rac2-priv
#vip
192.168.117.100 rac1-vip
192.168.117.101 rac2-vip
# Cluster Scan
192.168.117.110 rac-scan
불필요 데몬 프로세스 제거
[root@rac1 ~]# chkconfig --level 123456 xinetd off
[root@rac1 ~]# chkconfig --level 123456 sendmail off
[root@rac1 ~]# chkconfig --level 123456 cups off
[root@rac1 ~]# chkconfig --level 123456 cups-config-daemon off
[root@rac1 ~]# chkconfig --level 123456 smartd off
[root@rac1 ~]# chkconfig --level 123456 iptables off
유저 그룹 및 생성 권한 부여
[root@rac1 ~]# groupadd -g 5000 dba
[root@rac1 ~]# groupadd -g 5001 oper
[root@rac1 ~]# groupadd -g 5002 oinstall
[root@rac1 ~]# useradd -g oinstall -G dba,oper oracle
[root@rac1 ~]# passwd oracle
Changing password for user oracle.
New UNIX password:
Retype new UNIX password:
Sorry, passwords do not match.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@rac1 ~]# chown -R oracle.dba /home/oracle/
공유 메모리 설정
[root@rac1 ~]# vi /etc/sysctl.conf
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.wmem_max = 1048576
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
fs.file-max = 6815744
fs.aio-max-nr = 1048576
[root@rac1 ~]# sysctl –p
[root@rac1 ~]# vi /etc/security/limits.conf
gridsoft nproc 2047
gridhard nproc 16384
gridsoft nofile 1024
gridhard nofile 65536
oraclesoft nproc 2047
oraclehard nproc 16384
oraclesoft nofile 1024
oraclehard nofile 65536
[root@rac1 ~]# vi /etc/pam.d/login
session required pam_limits.so
우측상단의 시계를 클릭
[root@rac1 ~]# vi /etc/modprobe.conf
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
[root@rac1 ~]# modprobe -v hangcheck-timer
[root@rac1 ~]# vi /etc/rc.local
/sbin/modprobe hangcheck-timer
rdate -s 203.248.240.140
[root@rac1 Server]# vi /etc/sysconfig/ntpd
[root@rac1 ~]# service ntpd restart
[root@rac1 ~]# chkconfig --level 123456 ntpd on
cd 삽입하기
[root@rac1 ~]# cd /media/Oracle\ Linux\ Server\ dvd\ 20110119/Server/
[root@rac1 Server]# rpm -Uvh libaio-devel-0.3.106-5.i386.rpm
[root@rac1 Server]# rpm -Uvh numactl-devel-0.9.8-11.0.1.el5.i386.rpm
[root@rac1 Server]# rpm -Uvh unixODBC-* --nodeps
[root@rac1 ~]# vi .bash_profile
export GRID_HOME=/app/11g/grid
export PATH=$PATH:$HOME/bin:$GRID_HOME/bin
[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ vi .bash_profile
export EDITOR=vi
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=rac1
export ORACLE_UNQNAME=racdb
export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/11g/db
export GRID_HOME=/app/11g/grid
export ORACLE_SID=racdb1
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
[oracle@rac1 ~]$ exit
공유 storage 설정하기
[root@rac1 ~]# fdisk –l
[root@rac1 ~]# fdisk /dev/sdb
n p 1 엔터 엔터 t 8e w
[root@rac1 ~]# pvcreate /dev/sdb1
[root@rac1 ~]# vgcreate rac /dev/sdb1
[root@rac1 ~]# vgdisplay
[root@rac1 ~]# lvcreate -L 300M -n ocr01 rac
[root@rac1 ~]# lvcreate -L 300M -n ocr02 rac
[root@rac1 ~]# lvcreate -L 300M -n vote01 rac
[root@rac1 ~]# lvcreate -L 300M -n vote02 rac
[root@rac1 ~]# lvcreate -L 300M -n vote03 rac
[root@rac1 ~]# lvcreate -L 700M -n system rac
[root@rac1 ~]# lvcreate -L 700M -n sysaux rac
[root@rac1 ~]# lvcreate -L 700M -n users rac
[root@rac1 ~]# lvcreate -L 700M -n temp rac
[root@rac1 ~]# lvcreate -L 700M -n undotbs1 rac
[root@rac1 ~]# lvcreate -L 700M -n undotbs2 rac
[root@rac1 ~]# lvcreate -L 200M -n redo01 rac
[root@rac1 ~]# lvcreate -L 200M -n redo02 rac
[root@rac1 ~]# lvcreate -L 200M -n redo03 rac
[root@rac1 ~]# lvcreate -L 200M -n redo04 rac
[root@rac1 ~]# lvcreate -L 200M -n redo05 rac
[root@rac1 ~]# lvcreate -L 200M -n redo06 rac
[root@rac1 ~]# lvcreate -L 100M -n control01 rac
[root@rac1 ~]# lvcreate -L 100M -n control02 rac
[root@rac1 ~]# lvcreate -L 100M -n control03 rac
[root@rac1 ~]# lvcreate -L 100M -n spfile rac
[root@rac1 ~]#lvscan
[root@rac1 ~]# vi /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="raw*", OWNER=="oracle", GROUP=="dba", MODE=="0660"
[root@rac1 ~]# vi /etc/sysconfig/rawdevices
/dev/raw/raw1 /dev/rac/ocr01
/dev/raw/raw2 /dev/rac/ocr02
/dev/raw/raw3 /dev/rac/vote01
/dev/raw/raw4 /dev/rac/vote02
/dev/raw/raw5 /dev/rac/vote03
/dev/raw/raw6 /dev/rac/system
/dev/raw/raw7 /dev/rac/sysaux
/dev/raw/raw8 /dev/rac/users
/dev/raw/raw9 /dev/rac/temp
/dev/raw/raw10 /dev/rac/undotbs1
/dev/raw/raw11 /dev/rac/undotbs2
/dev/raw/raw12 /dev/rac/redo01
/dev/raw/raw13 /dev/rac/redo02
/dev/raw/raw14 /dev/rac/redo03
/dev/raw/raw15 /dev/rac/redo04
/dev/raw/raw16 /dev/rac/redo05
/dev/raw/raw17 /dev/rac/redo06
/dev/raw/raw18 /dev/rac/control01
/dev/raw/raw19 /dev/rac/control02
/dev/raw/raw20 /dev/rac/control03
/dev/raw/raw21 /dev/rac/spfile
적용 시키기
[root@rac1 ~]# /etc/init.d/rawdevices restart
[root@rac1 ~]# chown -R oracle.dba /dev/raw
[root@rac1 ~]# ls -al /dev/raw/
[root@rac1 ~]# poweroff
사진
사진끝
4 node2 설치
Node 2 설정하기
- Node2 생성을 위해 rac2 폴더 생성 후 rac1에서 사용했던 rac1.vmdk 와 rac1.vmx 를 복사
rac2폴더에 있는 rac1.vmx파일 열기
이름을 rac2로 수정
displayName = "rac2"
nvram = "rac2.nvram"
extendedConfigFile = "rac2.vmxf"
실행하기
capy it 선택
네트워크 설정하기
#eth0
172.16.65.138 rac2
255.255.255.0 mask
172.16.65.2 gw
#eth1
172.16.126.135 rac2-priv
255.255.255.0 mask
-(안적어도됨) gw
gw 172.16.65.2
rac2
dns 168.126.63.1
/etc/init.d/network restart
[root@rac1 ~]# vi /home/oracle/.bash_profile
2로 바꾸기
export ORACLE_HOSTNAME=rac2
export ORACLE_SID=racdb2
reboot
사진
사진끝
5 Grid 설치
winscp로 node1에 /app 폴더로 파일 옮겨주기
p10098816_112020_LINUX_1of7.zip
p10098816_112020_LINUX_2of7.zip
p10098816_112020_LINUX_3of7.zip
p10098816_112020_LINUX_4of7.zip
p10098816_112020_LINUX_5of7.zip
p10098816_112020_LINUX_6of7.zip
p10098816_112020_LINUX_7of7.zip
[root@rac1 ~]# cd /app
[root@rac1 ~]# unzip p10098816_112020_LINUX_1of7.zip &&
unzip p10098816_112020_LINUX_2of7.zip &&
unzip p10098816_112020_LINUX_3of7.zip &&
unzip p10098816_112020_LINUX_4of7.zip &&
unzip p10098816_112020_LINUX_5of7.zip &&
unzip p10098816_112020_LINUX_6of7.zip &&
unzip p10098816_112020_LINUX_7of7.zip &&
rac1 & rac2 둘다 실시
[root@rac1 ~]# chown -R oracle.dba /home/oracle/
[root@rac1 ~]# chown -R oracle.dba /app/
[root@rac2 ~]# chown -R oracle.dba /home/oracle/
[root@rac2 ~]# chown -R oracle.dba /app/
rac1 rpm 설치 후 파일 전송해주기
[root@rac1 app]# cd /app/grid/rpm/
[root@rac1 rpm]# export CVUQDSIK_GRP=dba
[root@rac1 rpm]# rpm -Uvh cvuqdisk-1.0.9-1.rpm
[root@rac1 rpm]# cd /app/grid/rpm/
[root@rac1 rpm]# scp cvuqdisk-1.0.9-1.rpm rac2:/tmp
rac2 설치하기
[root@rac2 ~]# cd /tmp/
[root@rac2 tmp]# export CVUQDISK_GRP=dba
[root@rac2 tmp]# rpm -Uvh cvuqdisk-1.0.9-1.rpm
rac1 vm 웨어로 가서 실행하기
$ cd /app/grid/
$ ./runInstaller
passwd 입력 안되면 압뒤로 왔다갔다
oracle 유저의 패스워드 입력 → [Setup] 버튼 클릭
비밀 번호가 입력앋뇌면 뒤로 가서 DATA를 지우고 다시 앞으로 갈 것 (버그)
installation Location은 설치되는 폴더를 생성해서 만들기 때문에 app 안에다가 설정해주면 됨
스크립트 실행 시 당황하지 않고
노드 1(root 유저)
[root@rac1 ~]# /app/oraInventory/orainstRoot.sh
노드2(root 유저)
[root@rac2 ~]# /app/oraInventory/orainstRoot.sh
노드1(root 유저)
[root@rac1 ~]# /app/11.2.0/grid/root.sh
노드2(root 유저)
[root@rac2 ~]# /app/11.2.0/grid/root.sh
오류나와도 다음다음 끝내기
확인
[root@rac1 ~]# crs_stat -t
[root@rac2 ~]# crs_stat –t
사진
사진끝
6 엔진 설치
엔진설치 node 1에서 (vm웨어 안에서 )
$ cd /app/database
$ ./runInstaller
중간에 스크립트 실행
[root@rac1 ~]# /app/oracle/11g/db/root.sh
[root@rac2 ~]# /app/oracle/11g/db/root.sh
사진
사진끝
6 DB 생성
DB 생성
[root@rac2 ~]# ocrconfig -add /dev/raw/raw1
[root@rac2 ~]# ocrconfig -add /dev/raw/raw2
[root@rac2 ~]# ocrconfig -delete +DATA
[root@rac2 ~]# ocrcheck
[root@rac2 ~]# crsctl replace votedisk /dev/raw/raw3
[root@rac2 ~]# crsctl add css votedisk /dev/raw/raw4
[root@rac2 ~]# crsctl add css votedisk /dev/raw/raw5
[root@rac2 ~]# crsctl query css votedisk
vm웨어 가서 dbca
[root@rac1 app]# dd if=/dev/zero of=/dev/raw/raw8 bs=6k
[root@rac1 app]# dd if=/dev/zero of=/dev/raw/raw8 bs=7k
[root@rac1 app]# dd if=/dev/zero of=/dev/raw/raw8 bs=8k
[root@rac1 app]# su - oracle
[oracle@rac1 ~]$ cd /app/oracle/admin/racdb/scripts/
[oracle@rac1 scripts]$ ls –l
내용수정하기
[oracle@rac1 scripts]$ vi racdb1.sql
내용 바꾸기
[oracle@rac1 scripts]$ vi CreateDBFiles.sql
SET VERIFY OFF
connect "SYS"/"&&sysPassword" as SYSDBA
set echo on
spool /app/oracle/admin/racdb/scripts/CreateDB.log append
startup nomount pfile="/app/oracle/admin/racdb/scripts/init.ora";
CREATE DATABASE "racdb"
MAXINSTANCES 32
MAXLOGHISTORY 1
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
DATAFILE '/dev/raw/raw6' SIZE 699M AUTOEXTEND OFF EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/dev/raw/raw7' SIZE 699M AUTOEXTEND OFF
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/dev/raw/raw9' SIZE 699M AUTOEXTEND OFF
UNDO TABLESPACE "UNDOTBS1" DATAFILE '/dev/raw/raw10' SIZE 199M AUTOEXTEND OFF
CHARACTER SET KO16MSWIN949
NATIONAL CHARACTER SET AL16UTF16
LOGFILE GROUP 1 ('/dev/raw/raw12') SIZE 199M,
GROUP 2 ('/dev/raw/raw13') SIZE 199M,
GROUP 3 ('/dev/raw/raw14') SIZE 199M;
USER SYS IDENTIFIED BY "&&sysPassword" USER SYSTEM IDENTIFIED BY "&&systemPassword";
spool off
[oracle@rac1 scripts]$ vi CreateDBFiles.sql
SET VERIFY OFF
connect "SYS"/"&&sysPassword" as SYSDBA
set echo on
spool /app/oracle/admin/racdb/scripts/CreateDBFiles.log append
CREATE UNDO TABLESPACE "UNDOTBS2" DATAFILE '/dev/raw/raw11' SIZE 699M AUTOEXTEND OFF;
CREATE TABLESPACE "USERS" LOGGING DATAFILE '/dev/raw/raw8' SIZE 699M AUTOEXTEND OFF EXTENT
MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
ALTER DATABASE DEFAULT TABLESPACE "USERS";
spool off
[oracle@rac1 scripts]$ vi postDBCreation.sql
SET VERIFY OFF
connect "SYS"/"&&sysPassword" as SYSDBA
set echo on
spool /app/oracle/admin/racdb/scripts/postDBCreation.log append
execute DBMS_AUTO_TASK_ADMIN.disable();
@/app/oracle/11g/db/rdbms/admin/catbundle.sql psu apply;
select 'utl_recomp_begin: ' || to_char(sysdate, 'HH:MI:SS') from dual;
execute utl_recomp.recomp_serial();
select 'utl_recomp_end: ' || to_char(sysdate, 'HH:MI:SS') from dual;
select group# from v$log where group# =3;
select group# from v$log where group# =4;
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 4 ('/dev/raw/raw15') SIZE 199M,
GROUP 5 ('/dev/raw/raw16') SIZE 199M,
GROUP 6 ('/dev/raw/raw17') SIZE 199M;
ALTER DATABASE ENABLE PUBLIC THREAD 2;
host echo cluster_database=true >>/app/oracle/admin/racdb/scripts/init.ora;
host echo remote_listener=rac-scan:1521>>/app/oracle/admin/racdb/scripts/init.ora;
connect "SYS"/"&&sysPassword" as SYSDBA
set echo on
create spfile='/dev/raw/raw21' FROM pfile='/app/oracle/admin/racdb/scripts/init.ora';
shutdown immediate;
host /app/oracle/11g/db/bin/srvctl enable database -d racdb;
host /app/oracle/11g/db/bin/srvctl start database -d racdb;
connect "SYS"/"&&sysPassword" as SYSDBA
spool off
exit;
내용 수정하기
[oracle@rac1 scripts]$ vi init.ora
control_files=('/dev/raw/raw18','/dev/raw/raw19','/dev/raw/raw20')
스크립트 실행(rac1 , rac2 )
[oracle@rac1 ~]$ sh /app/oracle/admin/racdb/scripts/racdb1.sh
[oracle@rac2 ~]$ sh /app/oracle/admin/racdb/scripts/racdb2.sh
SQL> quit
[oracle@rac1 ~]$ srvctl stop database -d racdb
[oracle@rac1 ~]$ srvctl stop diskgroup -g data
[oracle@rac1 ~]$ srvctl stop asm -n rac1 -f
[oracle@rac1 ~]$ srvctl stop asm -n rac2 -f
[oracle@rac1 ~]$ srvctl remove diskgroup -g data -f
[oracle@rac1 ~]$ srvctl remove asm -f
[oracle@rac1 ~]$ srvctl modifiy database -d racdb –z
[oracle@rac1 ~]$ srvctl modify database -d racdb -z
[oracle@rac1 ~]$ srvctl start database -d racdb
[oracle@rac1 ~]$ crs_stat –t
[oracle@rac2 ~]$ crs_stat -t
사진
사진끝