# User specific environment and startup programs
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/1020/db
export ORA_CRS_HOME=$ORACLE_BASE/product/1020/crs
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sq1:.:$ORACLE_HOME/rdbms/admin

# Each RAC node must have a unique ORACLE_SID. (i.e. orcl1, orcl2, ...)
export ORACLE_SID=test1

export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_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 DISPLAY=150.28.66.5:0.0
export ORACLE_OWNER=oracle
export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
export LANG=C

# prompt
PS1="`/bin/hostname -s `-> "
# alias set
alias dba='sqlplus / as sysdba'
alias t='tail -f /oracle/app/oracle/admin/${ORACLE_SID}/bdump/*.log'
alias crs='crs_stat -t'
alias pscrs='ps -ef | grep crs'

umask 022
set -o vi

Redhat5에 설치 (2009.08.20)


- Oracle Database 10g install

##################################################
# 오라클 OS 설정
##################################################

1. rpm -r (package_name)
binutils-2.15.92.0.2-10.EL4
compat-db-4.1.25-9
control-center-2.8.0-12
gcc-3.4.-9.EL4
gcc-c++-3.4.3-9.EL4
glibc-2.3.4-2
glibc-common-2.3.4-2
gnome-libs-1.4.1.2.90-44.1 ----->
libstdc++-3.4.3-9.EL4
libstdc++-devel-3.4.3-9.EL4
make-3.80-5
pdksh-5.2.14-30            ----->
sysstat-5.0.5-1
xscreensaver-4.18-5.rhel4.2 ----->
libaio

-64bit일 경우 추가
compat-libstdc++-33
glibc-kernheaders
glibc-headers
libaio
libaio (32bit)
glibc-devel
glibc-devel (32bit)


1-1. SUSE Linux
gcc-3.3.3-43.34
gcc-64bit-9-200505240008
gcc-c++-3.3.3-43.34
glibc-2.3.3-98.47
glibc-64bit-9-200506062240
libgcc-3.3.3-43.34
libgcc (64-bit) 9-200505240008
libstdc++-3.3.3-43.34
libstdc++-devel-3.3.3-43.34
libaio-0.3.102-1.2
libaio-64bit-9-200502241152
libaio-devel-0.3.102-1.2
libaio-devel-0.3.102-1.2 (64-bit)
Gmake-3.80-184.1
binutils-2.15.90.0.1.1-32.10
binutils-64bit-9-200505240008


2. cat /proc/version
3. uname -r

##################################################
# 오라클 그룹 및 사용자 계정 생성
##################################################

mkdir /oradata
mkdir /oracle
mkdir /oracle/app
mkdir /oracle/app/oracle
mkdir /oracle/app/oracle/product

/usr/sbin/groupadd -g 2000 dba
/usr/sbin/useradd -u 200 -g dba -d /oracle/app/oracle/product/10g -s /bin/bash oracle
id oracle
passwd oracle
chown -R oracle:dba /oracle
chown -R oracle:dba /oradata


##################################################
# /etc/sysctl.conf 커널매개변수 설정
##################################################
kernel.shmall = 2097152
kernel.shmmax = 2147483648
#kernel.shmmax = 4589934590
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 327679
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

-설정 확인
/sbin/sysctl -a | grep shm
/sbin/sysctl -a | grep sem
/sbin/sysctl -a | grep file-max
/sbin/sysctl -a | grep ip_local_port_range

- 설정 반영
/sbin/sysctl -p

- SUSE 시에는 다음과 같이 리붓
/sbin/chkconfig boot.sysctl on

#################################################
# oracle 사용자 계정의 Shell Limit 설정 
#################################################
- /etc/security/limits.conf
oracle               soft    nproc   2047
oracle               hard    nproc   16384
oracle               soft    nofile  1024
oracle               hard    nofile  65536

- /etc/pam.d/login
session    required     /lib/security/pam_limits.so

#################################################
# oracle 계정을 위한 환경변수
#################################################
-/etc/profile(SUSE는 /etc/profile.local)
if [ $USER = "oracle" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
              ulimit -p 16384
              ulimit -n 65536
        else
              ulimit -u 16384 -n 65536
        fi
fi

- .bash_profile
###################################################
# Oracle 10g ENV
###################################################
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0
export ORACLE_TERM=vi100
export TMPDIR=$ORACLE_BASE/tmp
export TEMP=$ORACLE_BASE/tmp
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
export LANG=C
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/X11R6/lib
export PATH=$ORCACLE_HOME/oracm/bin:$ORACLE_HOME/bin:/bin:/usr/bin:/sbin:/usr/local/bin:/usr/X11R6/bin:$PATH:.
export DISPLAY=192.168.28.1:0.0
export inventory_loc=/oracle/app/oracle/orainventory
export ORACLE_SID=ORCL
export ORACLE_OWNER=oracle

PS1='[${ORACLE_SID}]'`hostname`':$PWD> '
alias dba='sqlplus "/as sysdba"'
alias t='tail -f /oracle/app/oracle/admin/${ORACLE_SID}/bdump/*.log'

umask 022
set -o vi

stty erase ^H
------------------------------------------------------
.bash_profile 반영
$> . ./.bash_profile

 

 

ProC Program 설치
클라이언트 프로그래머 옵션 사용
ProC Program 확인
$ORACLE_HOME/bin/proc
$ORACLE_HOME/precomp 에 라이브러시 설치 확인

###################################################
# Oracle Installation
###################################################
.runInstaller -ignoreSysPrereqs 실행후 GUI 화면으로 설치 시작

X11 문제로 runInstaller가 안되면
1. root에서 xhost +를 실행하고 su - oracle로 들어가 runInstaller를 실행한다.
2. 그래도 문제가 되면 .bash_profile에서 DISPLAY부분을 주석처리하고 한다.


   - 설치후 아래 두 스크립터 실행
     ⓐ sh ./oracle/app/oracle/oraInventory/orainstRoot.sh
     ⓑ sh ./oracle/app/oracle/product/102/root.sh

※ 설치후 SID와 관련된 내용은 /etc/oratab에 추가됨

$ORACLE_HOME/bin/localconfig add (root로 실행)

dbca 실행

sqlplus / as sysdba
SQL> startup
startup이 안되면 $ORACLE_SID를 확인하고 맞는것으로 변경한다.

===========================================

* 실행시 자동으로 Oracle DB실행되도록
/etc/rc.d/rc.local에서 /oracle/start.sh를 부르도록 함

/oracle/start.sh
#!/bin/ksh
su - oracle << EOF
sqlplus "/as sysdba" << EOF
startup
exit
EOF
su - oracle << EOF
lsnrctl start
exit
EOF

/oracle/stop.sh
#!/bin/ksh
su - oracle << EOF
lsnrctl stop
exit
EOF
su - oracle << EOF
sqlplus "/as sysdba" << EOF
shutdown immediate
exit
EOF

chmod 755 start.sh
chmod 755 stop.sh

===========================================

cubeone 설치시 오라클 연결이 안되면 다음을 한다.

$ORACLE_HOME/bin/oracle 의 permission 이 6755 인지 확인
아니면  chmod 6755 oracle

 


 

Toad, Orange 등 좋은 툴도 있는데 비싸기도 하지만 간단하게 쓰기에는 좀 무거운 감이 있다.
sqlplus를 잘 사용하는 경우 편할 때가 있어 배워보고자 합니다.


실행하기

1. sysdba로 바로 로그인합니다.
[oracle@rh5 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Sep 8 22:30:40 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL>

2. 위상태에서 다른 user로 로그인할 경우
SQL> connect scott/tiger
Connected.

3. 처음부터 scott로 접속할 경우
[OCRL]rh5.cs.com:/oracle/app/oracle/product/10g> sqlplus

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Sep 8 22:31:40 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Enter user-name: scott
Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL>

4. sqlplus userid 또는 sqlplus userid/passwd 와 같이 해도 되는데 보안상 위 방법을 쓰는게 좋다고 합니다.


도움말 보기 : help [명령어]

SQL> help ed

 EDIT
 ----

 Invokes an operating system text editor on the contents of the
 specified file or on the contents of the SQL buffer. The buffer
 has no command history list and does not record SQL*Plus commands.

 ED[IT] [file_name[.ext]]

 Not available in iSQL*Plus

환경설정 : set [키워드] 값

select한 값이 보기좋게 나오게 하기 위해선
set linesize 150
set pagesize 50
정도로 값을 늘려주어야 한다.
set pause on은 중간에 멈추게 한다.

linesize (n) : 한줄에 표시될 텍스트숫자 기본값80
pages (n) 또는 pagesize (n) : 한페이지당 표시되는 라인수 기본값 24
colsep (text) : 칼럼이 표시될때 칼럼의 구별문자 기본값 공백
feedback (off | on) : 선택된 행이 몇 행인지 표시함 기본값은 6행이상일때 on
             예) set feedback 3 : 3행이상일때 on
heading (off | on) : 컬럼에 대한 heading을 표시함 기본값은 on
paues (on | off | text) : 엔터키를 누를때마다 화면이 지나감 기본값은 off
timing (on | off) : sql문장이 처리되는 시간을 표시 기본값은 off
verify (on | off) : & 변수로 값을 받을 경우 화면에 확인하기 위해 old,new를 표시할 것인지 기본값은  on
show all : 환경이 어떻게 설정 되었는가 확인
numformat : 큰 숫자가 표시될때 E+10 와 같은 식으로 나오지 않도록 함.
            예) set numformat 999999999999999999999999999999.9999999999
                 set numformat ""              <- 원래대로 하기

- 매번 환경변수를 변경해 주어야 하면 glogin.sql에 다음을 추가한다.

[OCRL]rh5.cs.com:/oracle/app/oracle/product/10g> cd sqlplus/admin
[OCRL]rh5.cs.com:/oracle/app/oracle/product/10g/sqlplus/admin> vi glogin.sql

SET PAGESIZE 100
SET LINESIZE 300


- 프롬프트 변경
SQL> set sqlprompt "_USER'@'_CONNECT_IDENTIFIER> "
SCOTT@ORCL>


File 관련

- r, ru, run 또는 / : 바로 전에 실행한 sql을 다시 실행한다.
   L 또는 l : 바로 전에 실행한 sql을 본다.

SQL> select * from dept;
    DEPTNO DNAME   LOC
---------- ---------------------------- --------------------------
 10 ACCOUNTING   NEW YORK
 20 RESEARCH   DALLAS
 30 SALES   CHICAGO
 40 OPERATIONS   BOSTON
SQL> /
    DEPTNO DNAME   LOC
---------- ---------------------------- --------------------------
 10 ACCOUNTING   NEW YORK
 20 RESEARCH   DALLAS
 30 SALES   CHICAGO
 40 OPERATIONS   BOSTON

SQL> l
  1* select * from dept

- get : 파일을 메모리로 불러온다.
   test.sql에 dept를 조회하는 sql문이 있을때...

SQL> get test.sql
  1* select * from dept
SQL> /
    DEPTNO DNAME   LOC
---------- ---------------------------- --------------------------
 10 ACCOUNTING   NEW YORK
 20 RESEARCH   DALLAS
 30 SALES   CHICAGO
 40 OPERATIONS   BOSTON

- save : 바로 전에 실행한 sql을 저장한다.
   ! : 쉘로 이동하고 exit하면 다시 sqlplus로 돌아온다. 
   ! 명령어 : unix 명령을 바로 실행할 수 있다.

SQL> select * from salgrade;
     GRADE LOSAL    HISAL
---------- ---------- ----------
  1   700     1200
  2  1201     1400
  3  1401     2000
  4  2001     3000
  5  3001     9999
SQL> save testsal.sql
Created file testsal.sql

SQL> !
[oracle@rh5 ~]$ ls test*.sql
test.sql  testemp.sql  testsal.sql  testspool.sql
[oracle@rh5 ~]$ exit
exit

SQL> !ls test*.sql
test.sql  testemp.sql  testsal.sql  testspool.sql

- @ 또는 start 파일명 : 파일에 있는 sql을 바로 실행

SQL> @test.sql
  2  ;
    DEPTNO DNAME   LOC
---------- ---------------------------- --------------------------
 10 ACCOUNTING   NEW YORK
 20 RESEARCH   DALLAS
 30 SALES   CHICAGO
 40 OPERATIONS   BOSTON

- spool 파일명 또는 spool on / spool off : 화면에 출력되는 것을 파일로 저장
  파일명을 지정해 주지 않으면 on.lst 파일을 만든다.


SQL> spool testspool.sql
SQL> @test.sql
  2  ;
    DEPTNO DNAME   LOC
---------- ---------------------------- --------------------------
 10 ACCOUNTING   NEW YORK
 20 RESEARCH   DALLAS
 30 SALES   CHICAGO
 40 OPERATIONS   BOSTON
SQL> spool off
SQL> !ls -lsa testspool.sql
4 -rw-r--r-- 1 oracle dba 765 Sep  8 23:22 testspool.sql

- ed : 메모리에 있는 명령어 편집
            vi로 편집하여 저장하면 afiedt.buf 에 저장되고 / 로 실행이 가능
           사용전에 환경변수에 다음이 있어야 한다.
            vi내에서 ; 으로 끝내지 않아야 실행시 에러가 나지 않는다.


[OCRL]rh5.cs.com:/oracle/app/oracle/product/10g> vi .bash_profile
export EDITOR=vi
export FCEDIT=vi




기타 등등

- Auto Commit이 없기 때문에 commit을 해주어야 한다.

- unix 명령어 사용하기 : ! 를 앞에 붙여 사용한다.
SQL> !pwd
/oracle/app/oracle/product/10g

/etc/oratab 에 마지막을 Y 로 바꿉니다.
ORCL:/oracle/app/oracle/product/10g:Y

/etc/rc.d/rc.local 에 다음을 추가한다.
su - oracle -c /oracle/app/oracle/product/10g/bin/"lsnrctl start"
su - oracle -c /oracle/app/oracle/product/10g/bin/dbstart


 

몇가지 rac2 관련 셋팅 변경


.bash_profile안에 있는 ORACLE_SID를 ORCL2로 변경합니다.

/etc/hosts에
127.0.01을 rac2로 변경합니다.


clusterware 설치 준비


rac1의 /u01에 clusterware를 ftp로 올립니다.
10201_clusterware_linux32.zip - 오라클 사이트에서 받습니다.

파일을 oracle유저가 사용가능 하도력 변경합니다.
chown oracle:dba *.zip

oracel유저로 작업합니다.
su - oracle

/u01에서
unzip *.zip


xwindow 설정하기

- root에서 다음을 한다.
xhost +
- oracle유저로 가서 xclock을 해본다.
su - oracle
xclock
시계가 나타나지 않으면
oracle 홈 디렉토리에 .bash_profile에 있는 DISPLAY에서 IP를 삭제하고 한다.
. ./.bash_profile로 반영후 xclock 를 해야 환경변수가 저장된다.

clusterware 설치


su - oracle
cd /u01/clusterware
./runInstaller









기본으로 갑니다.



디렉토리를 crs_1로 변경합니다.




기본 점검 이상이 없으면 Next. 메모리가 부족하면 에러가 나고 진행이 안됩니다.




Add







































rac1에서

[root@rac1 ~]# cd /oracle/app/oracle/oraInventory/
[root@rac1 oraInventory]# ./orainstRoot.sh
Changing permissions of /oracle/app/oracle/oraInventory to 770.
Changing groupname of /oracle/app/oracle/oraInventory to dba.
The execution of the script is complete
[root@rac1 oraInventory]# cd ..
[root@rac1 oracle]# cd product/10.2.0/crs_1/
[root@rac1 crs_1]# ./root.sh
WARNING: directory '/oracle/app/oracle/product/10.2.0' is not owned by root
WARNING: directory '/oracle/app/oracle/product' is not owned by root
WARNING: directory '/oracle/app/oracle' is not owned by root
WARNING: directory '/oracle/app' is not owned by root
WARNING: directory '/oracle' is not owned by root
Checking to see if Oracle CRS stack is already configured
/etc/oracle does not exist. Creating it now.

Setting the permissions on OCR backup directory
Setting up NS directories
Oracle Cluster Registry configuration upgraded successfully
WARNING: directory '/oracle/app/oracle/product/10.2.0' is not owned by root
WARNING: directory '/oracle/app/oracle/product' is not owned by root
WARNING: directory '/oracle/app/oracle' is not owned by root
WARNING: directory '/oracle/app' is not owned by root
WARNING: directory '/oracle' is not owned by root
assigning default hostname rac1 for node 1.
assigning default hostname rac2 for node 2.
Successfully accumulated necessary OCR keys.
Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
node <nodenumber>: <nodename> <private interconnect name> <hostname>
node 1: rac1 rac1-priv rac1
node 2: rac2 rac2-priv rac2
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Now formatting voting device: /dev/raw/raw2
Format of 1 voting devices complete.
Startup will be queued to init within 90 seconds.
Adding daemons to inittab
Expecting the CRS daemons to be up within 600 seconds.
CSS is active on these nodes.
        rac1
CSS is inactive on these nodes.
        rac2
Local node checking complete.
Run root.sh on remaining nodes to start CRS daemons.
[root@rac1 oraInventory]#








rac2에서

[root@rac2 ~]# cd /oracle/app/oracle/
[root@rac2 oracle]# ls
ORA_CRS_HOME  oraInventory  product
[root@rac2 oracle]# cd oraInventory/
[root@rac2 oraInventory]# ./orainstRoot.sh
Changing permissions of /oracle/app/oracle/oraInventory to 770.
Changing groupname of /oracle/app/oracle/oraInventory to dba.
The execution of the script is complete
[root@rac2 oraInventory]# cd ..
[root@rac2 oracle]# cd product/10.2.0/crs_1/
[root@rac2 crs_1]# ./root.sh
WARNING: directory '/oracle/app/oracle/product/10.2.0' is not owned by root
WARNING: directory '/oracle/app/oracle/product' is not owned by root
WARNING: directory '/oracle/app/oracle' is not owned by root
WARNING: directory '/oracle/app' is not owned by root
WARNING: directory '/oracle' is not owned by root
Checking to see if Oracle CRS stack is already configured
/etc/oracle does not exist. Creating it now.

Setting the permissions on OCR backup directory
Setting up NS directories
Oracle Cluster Registry configuration upgraded successfully
WARNING: directory '/oracle/app/oracle/product/10.2.0' is not owned by root
WARNING: directory '/oracle/app/oracle/product' is not owned by root
WARNING: directory '/oracle/app/oracle' is not owned by root
WARNING: directory '/oracle/app' is not owned by root
WARNING: directory '/oracle' is not owned by root
clscfg: EXISTING configuration version 3 detected.
clscfg: version 3 is 10G Release 2.
assigning default hostname rac1 for node 1.
assigning default hostname rac2 for node 2.
Successfully accumulated necessary OCR keys.
Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
node <nodenumber>: <nodename> <private interconnect name> <hostname>
node 1: rac1 rac1-priv rac1
node 2: rac2 rac2-priv rac2
clscfg: Arguments check out successfully.

NO KEYS WERE WRITTEN. Supply -force parameter to override.
-force is destructive and will destroy any previous cluster
configuration.
Oracle Cluster Registry for cluster has already been initialized
Startup will be queued to init within 90 seconds.
Adding daemons to inittab
Expecting the CRS daemons to be up within 600 seconds.
CSS is active on these nodes.
        rac1
        rac2
CSS is active on all nodes.
Waiting for the Oracle CRSD and EVMD to start
Waiting for the Oracle CRSD and EVMD to start
Oracle CRS stack installed and running under init(1M)
Running vipca(silent) for configuring nodeapps
/oracle/app/oracle/product/10.2.0/crs_1/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
[root@rac2 crs_1]#




위 자바에러 수정
http://blog.naver.com/s5b8s4?Redirect=Log&logNo=140058030425 참고


/oracle/app/oracle/product/10.2.0/crs_1/bin/vipca 120번째줄 부분에 진한 글씨 부분을 추가한다.

       #Remove this workaround when the bug 3937317 is fixed
       arch=`uname -m`
       if [ "$arch" = "i686" -o "$arch" = "ia64" ]
       then
            LD_ASSUME_KERNEL=2.4.19
            export LD_ASSUME_KERNEL
       fi
       unset LD_ASSUME_KERNEL
       #End workaround


[root@rac2 bin]# ./vipca
Error 0(Native: listNetInterfaces:[3])
  [Error 0(Native: listNetInterfaces:[3])]

에러 다시 발생

[root@rac2 bin]# ./oifcfg iflist
eth0  192.168.89.0
eth1  192.168.206.0
[root@rac2 bin]# ./oifcfg setif -global eth0/192.168.89.0:public
[root@rac2 bin]# ./oifcfg setif -global eth1/192.168.206.0:cluster_interconnect
[root@rac2 bin]# ./oifcfg getif
eth0  192.168.89.0  global  public
eth1  192.168.206.0  global  cluster_interconnect


[root@rac2 bin]# ./vipca
한글이 깨질때는 oracle에 환경변수를 복사해서 실행한다.

# User specific environment and startup programs
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs_1
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sq1:.:$ORACLE_HOME/rdbms/admin

export ORA_NLS10=$ORACLE_HOME/nls/data
export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
export LANG=C

위 환경변수에 셋팅을 해 놓으면 한글이 나온다.
















vipca를 하는 도중 에러가 발생하는데
이럴때는 네트워크 툴에서 rac1, rac2에 gateway를 셋팅해 주고, 호스트네임도 잘 되어 있는지 확인하고, 네트워크를 내렸다 올리면 됩니다.
#ifconfig eth0 down
#ifconfig eth0 up
#route -n


rac1-> ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:6E:EA:16 
          inet addr:192.168.89.101  Bcast:192.168.89.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe6e:ea16/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1059 errors:0 dropped:0 overruns:0 frame:0
          TX packets:905 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:97059 (94.7 KiB)  TX bytes:127858 (124.8 KiB)
          Interrupt:185 Base address:0x1480

eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:6E:EA:16 
          inet addr:192.168.89.111  Bcast:192.168.89.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:185 Base address:0x1480





 

[root@rac2 bin]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:3F:BF:D2 
          inet addr:192.168.89.102  Bcast:192.168.89.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe3f:bfd2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:28313 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32759 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:12501293 (11.9 MiB)  TX bytes:14325393 (13.6 MiB)
          Interrupt:185 Base address:0x1480

eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:3F:BF:D2 
          inet addr:192.168.89.112  Bcast:192.168.89.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:185 Base address:0x1480




rac1, rac2 모두에서 eth0:1이 잡히면 vipca가 성공적으로 끝날 수 있습니다.





오라클 설치


오라클 거의 설치 완료되었을때 에러가 났습니다.
노트북으로 하려니 컴퓨터가 너무 뜨거워져서 당분간 진행이 어려울 듯 합니다.
PC 하나 구입해서 진행을 하거나 남는 서버 있으면 거기서 해봐야 겠네요.
아 RAC 설치 복잡하고도 어렵구나...

또, clusterware 설치하다가 에러가 나면 고쳐서 다시 성공해도 나중에 문제가 된다고 합니다. 설치전 백업받고 하라고 하네요.

참고
http://cafe.naver.com/prodba.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=10754


다음에 나오는 사이트를 참고했습니다.

Oracle 10g RAC On Linux Using VMware Server
http://www.oracle-base.com/articles/10g/OracleDB10gR2RACInstallationOnCentos4UsingVMware.php


RPM 패키지 설치 확인

전체 설치를 했으면 기본적으로 추가 설치는 필요가 없습니다.
설치가 필요한 경우는 -q 옵션 명령으로 확인하고 없으면 -Uvh 옵션으로 설치합니다.
CD에 iso가 그대로 있다면 /media/RHEL_5.3 i386 DVD/Server 에 가면 RedHat5에서 제공하는 rpm 들이 있습니다.

확인 : rpm -q 패키지명
설치 : rpm -Uvh 패키지명

필요한 패키지들은 다음과 같습니다.
rpm -q gcc glibc-devel glibc-headers glibc-kernheaders cpp compat-libstdc++ openmotif
glibc-kernheaders 와 compat-libstdc++ 가 설치안되었다고 나오는데 일단 넘어갑니다.


/etc/hosts 파일 편집

127.0.0.1  rac1 localhost.localdomain localhost
#Public Network - (eth0)
192.168.89.101 rac1
192.168.89.102 rac2
#Private Interconnect - (eth1)
192.168.206.101 rac1-priv
192.168.206.102 rac2-priv
#Public virtual IP (VIP) addresses for - (eth0)
192.168.89.111 rac1-vip
192.168.89.112 rac2-vip


/etc/sysctl.conf 파일에 추가

#--------------------
# SHARED MEMORY
#kernel.shmmax = 2147483648
kernel.shmmax = 4589934590
kernel.shmall = 2097152
kernel.shmmni = 4096

#--------------------
# SEMAPHORES : SEMMSL_value, SEMMNS_value, SEMOPM_value, SEMMNI_value                                
kernel.sem = 250 32000 100 128

#--------------------
# FILE HANDLES : 512M (32768), 1G (65536), 2G (131072), 4G (262144)
#fs.file-max = 65536
fs.file-max = 327679

#--------------------
# Default setting in bytes of the socket receive buffer
#net.core.rmem_default=262144
net.core.rmem_default=1048576
#--------------------
# Default setting in bytes of the socket send buffer
net.core.wmem_default=262144
#--------------------
# Maximum socket erceive buffer size which may be set by using
#net.core.rmem_max=262144
net.core.rmem_max=1048576
#--------------------
# Maximum socket send buffer suze which may be set by using
# the SO_SNDBUF socket option
net.core.wmem_max=262144

net.ipv4.ip_local_port_range = 1024 65000


변경사항 반영 및 확인

 반영 : /sbin/sysctl -p

확인
[root@rac1 home]# cat /proc/sys/fs/file-max
327679
[root@rac1 home]# cat /proc/sys/fs/file-nr
3520 0 327679


oracle 사용자 계정의 Shell Limit 설정 

- /etc/security/limits.conf
oracle               soft    nproc   2047
oracle               hard    nproc   16384
oracle               soft    nofile  1024
oracle               hard    nofile  65536


oracle 사용자 계정의 Shell Limit 설정

- /etc/pam.d/login
session    required     /lib/security/pam_limits.so


 SELINUX flag 가 disable로 되어있는지 확인

- /etc/selinux/config
SELINUX=disabled


hangcheck_timer 설정

- 모듈 검사
find /lib/modules -name "hangcheck-timer.ko"
- /etc/modprobe.conf
options sbp2 exclusive_login=0
alias scsi_hostadapter sbp2
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
- 수동 시작
- /etc/rc.local
# +-------------------------------------------------------+
# | HANGCHECK TIMER                                       |
# | (I do not believe this is required, but doesn't hurt) |
# +-------------------------------------------------------+
/sbin/modprobe hangcheck-timer
- 설정 확인
modprobe -v hangcheck-timer
grep Hangcheck /var/log/messages | tail -2


Oracle User/Group 생성

linux 설치시 생성한 user가 있으면 삭제합니다.
userdel <생성한 user id>

mkdir -p /oracle/app
groupadd -g 500 dba
useradd -u 500 -g 500 -d /oracle/app/oracle -s /bin/bash -c "Oracle Software Owner" -p oracle oracle
chown -R oracle:dba /oracle
passwd oracle
chown oracle:dba -R /oracle
su - oracle


oracle 계정으로 .bash_profile 에 추가합니다.


# User specific environment and startup programs
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs_1
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sq1:.:$ORACLE_HOME/rdbms/admin

# Each RAC node must have a unique ORACLE_SID. (i.e. orcl1, orcl2, ...)
export ORACLE_SID=ORCL1

export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_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
export DISPLAY=192.168.89.101:0.0
export ORACLE_OWNER=oracle
export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
export LANG=C

# prompt
PS1="`/bin/hostname -s `-> "
# alias set
alias dba='sqlplus "/as sysdba"'
alias t='tail -f /oracle/app/oracle/admin/${ORACLE_SID}/bdump/*.log'

# sqlplus backspace
stty erase ^H


 

File System 디렉토리 생성


root로 생성
mkdir -p /u01
chown oracle:dba /u01

oracle유저로 재로그인한 후
mkdir -p $ORACLE_HOME/admin
mkdir -p $ORACLE_HOME
mkdir -p $ORA_CRS_HOME
mkdir -p /u01/oradata/rac1


Package 설치 여부 확인 - 전체설치를 하였으면 설치가 되어 있다.

cd /media/RHEL_5.3\ i386\ DVD/Server/
rpm -Uvh libaio-0.3.106-3.2.i386.rpm
rpm -Uvh openmotif22-2.2.3-18.i386.rpm


Shared Disk 생성 (raw 디바이스)

호스트 윈도우에서 D:\VMware\rac\shared 에 생성한 두 개의 disk를 fdisk로 분할합니다.
root 계정으로 작업합니다.
raw 시스템으로 생성하며,
Clusterware에서 사용하는 voting (200MB), OCR (200MB) 을 만들고,
control (200MB X 4), redo (300MB X 6), data (2GB X 5) 를 만들겁니다.
각각 만들어진 파티션에는 하나의 tablespace만이 들어갈 수 있습니다.
반드시 나중을 위해서 어떤 파이션에 어떤 tablespace가 있는지 엑셀로 따로 정리를 해 두어야 합니다.

# cd /dev
# ls sd*
sda  sda1  sda2  sdb  sdc 

sdb, sdc가 두개의 Shared Disk 입니다.
fdisk로 분할합니다. sdb는 13개로 분할하고, sdc는 5개로 분할합니다. (disk당 최대 15개까지 가능)

[root@rac1 dev]# fdisk /dev/sdb

The number of cylinders for this disk is set to 1305.
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)

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): +200M

Command (m for help): p

Disk /dev/sdb: 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/sdb1               1          25      200781   83  Linux

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

Calling ioctl() to re-read partition table.
Syncing disks.


 


n : 새로 파티션을 만듭니다.
1 : 1번 파티션
+200M : 200MB로 생성
p 또는 e : primary 또는 extended
w : 저장

전부 4개의 파티션을 만들 수 있는데 extended를 사용하려면
마지막 4번째의 파티션을 extended로 전체 할당하고, 4번째 파티션을 다시 10개로 나눕니다. (최대 12개까지 가능)
이렇게 sdb를 13개의 파티션으로 나눕니다. ( P 200M, P 200M, P 200M, E 나머지전체 ( 200M, 200M, 200M, 300M, 300M, 300M, 300M, 300M, 300M, 나머지전체 ) )
sdc는 5개로 나눕니다. (2G, 2G, 2G, 2G, 2G)

종료전에 w로 저장을 꼭 해야합니다.

[root@rac1 dev]# fdisk -l

Disk /dev/sda: 53.6 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        6527    52323705   8e  Linux LVM

Disk /dev/sdb: 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/sdb1               1          25      200781   83  Linux
/dev/sdb2              26          50      200812+  83  Linux
/dev/sdb3              51          75      200812+  83  Linux
/dev/sdb4              76        1305     9879975    5  Extended
/dev/sdb5              76         100      200812   83  Linux
/dev/sdb6             101         125      200812   83  Linux
/dev/sdb7             126         150      200812   83  Linux
/dev/sdb8             151         187      297202   83  Linux
/dev/sdb9             188         224      297202   83  Linux
/dev/sdb10            225         261      297202   83  Linux
/dev/sdb11            262         298      297202   83  Linux
/dev/sdb12            299         335      297202   83  Linux
/dev/sdb13            336         372      297202   83  Linux
/dev/sdb14            373        1305     7494322   83  Linux

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         244     1959898+  83  Linux
/dev/sdc2             245         488     1959930   83  Linux
/dev/sdc3             489         732     1959930   83  Linux
/dev/sdc4             733        1305     4602622+   5  Extended
/dev/sdc5             733         976     1959898+  83  Linux
/dev/sdc6             977        1305     2642661   83  Linux


 

raw 디바이스 바인딩

/etc/udev/rules.d/60-raw.rules 에 추가

ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sdb5", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="sdb6", RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add", KERNEL=="sdb7", RUN+="/bin/raw /dev/raw/raw6 %N"
ACTION=="add", KERNEL=="sdb8", RUN+="/bin/raw /dev/raw/raw7 %N"
ACTION=="add", KERNEL=="sdb9", RUN+="/bin/raw /dev/raw/raw8 %N"
ACTION=="add", KERNEL=="sdb10", RUN+="/bin/raw /dev/raw/raw9 %N"
ACTION=="add", KERNEL=="sdb11", RUN+="/bin/raw /dev/raw/raw10 %N"
ACTION=="add", KERNEL=="sdb12", RUN+="/bin/raw /dev/raw/raw11 %N"
ACTION=="add", KERNEL=="sdb13", RUN+="/bin/raw /dev/raw/raw12 %N"
ACTION=="add", KERNEL=="sdb14", RUN+="/bin/raw /dev/raw/raw13 %N"
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw14 %N"
ACTION=="add", KERNEL=="sdc2", RUN+="/bin/raw /dev/raw/raw15 %N"
ACTION=="add", KERNEL=="sdc3", RUN+="/bin/raw /dev/raw/raw16 %N"
ACTION=="add", KERNEL=="sdc5", RUN+="/bin/raw /dev/raw/raw17 %N"
ACTION=="add", KERNEL=="sdc6", RUN+="/bin/raw /dev/raw/raw18 %N"


/etc/udev/rules.d/65-raw-permissions.rules
생성

# cat /etc/udev/rules.d/65-raw-permissions.rules
# Set permissions of raw bindings to Oracle Clusterware devices
KERNEL=="raw1", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw2", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw3", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw4", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw5", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw6", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw7", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw8", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw9", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw10", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw11", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw12", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw13", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw14", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw15", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw16", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw17", OWNER="oracle", GROUP="dba", MODE="660"
KERNEL=="raw18", OWNER="oracle", GROUP="dba", MODE="660"


[root@rac1 dev]# start_udev
udev (을)를 시작 중:                                       [  OK  ]
[root@rac1 dev]# raw -qa
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2: bound to major 8, minor 18
/dev/raw/raw3: bound to major 8, minor 19
/dev/raw/raw4: bound to major 8, minor 21
/dev/raw/raw5: bound to major 8, minor 22
/dev/raw/raw6: bound to major 8, minor 23
/dev/raw/raw7: bound to major 8, minor 24
/dev/raw/raw8: bound to major 8, minor 25
/dev/raw/raw9: bound to major 8, minor 26
/dev/raw/raw10: bound to major 8, minor 27
/dev/raw/raw11: bound to major 8, minor 28
/dev/raw/raw12: bound to major 8, minor 29
/dev/raw/raw13: bound to major 8, minor 30
/dev/raw/raw14: bound to major 8, minor 33
/dev/raw/raw15: bound to major 8, minor 34
/dev/raw/raw16: bound to major 8, minor 35
/dev/raw/raw17: bound to major 8, minor 37
/dev/raw/raw18: bound to major 8, minor 38


심볼릭 링크 만들기 (oracle 계정으로)

ln -sf /dev/raw/raw1 /u01/oradata/rac1/disk1
ln -sf /dev/raw/raw2 /u01/oradata/rac1/disk2
ln -sf /dev/raw/raw3 /u01/oradata/rac1/disk3
ln -sf /dev/raw/raw4 /u01/oradata/rac1/disk4
ln -sf /dev/raw/raw5 /u01/oradata/rac1/disk5
ln -sf /dev/raw/raw6 /u01/oradata/rac1/disk6
ln -sf /dev/raw/raw7 /u01/oradata/rac1/disk7
ln -sf /dev/raw/raw8 /u01/oradata/rac1/disk8
ln -sf /dev/raw/raw9 /u01/oradata/rac1/disk9
ln -sf /dev/raw/raw10 /u01/oradata/rac1/disk10
ln -sf /dev/raw/raw11 /u01/oradata/rac1/disk11
ln -sf /dev/raw/raw12 /u01/oradata/rac1/disk12
ln -sf /dev/raw/raw13 /u01/oradata/rac1/disk13
ln -sf /dev/raw/raw14 /u01/oradata/rac1/disk14
ln -sf /dev/raw/raw15 /u01/oradata/rac1/disk15
ln -sf /dev/raw/raw16 /u01/oradata/rac1/disk16
ln -sf /dev/raw/raw17 /u01/oradata/rac1/disk17
ln -sf /dev/raw/raw18 /u01/oradata/rac1/disk18


공유 Disk 설정

RAC1을 shutdown하고 RH5Rac1폴더에 Red Hat Linux.vmx 에 다음을 추가합니다.

disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"


RAC2 Linux 복사본 만들기


RAC2를 만들기 위해서 리눅스를 다시 설치할 필요가 없습니다.
복사만 해주면 되는데 그 전에 해야할 것이 있습니다.

- RAC1 리눅스를 shutdown하고 RH5Rac2 폴더를 만들고 안에 있는 모든 파일을 복사합니다.

- Red Hat Linux.vmx 파일에 displayName만 변경하면 됩니다.
  displayName = "RH5Rac2"

- RAC1과 RAC2를 모두 시작합니다.

rac2 네트워크 변경


eth0.bak과 eth1.bak은 삭제합니다.
eth0은 192.168.89.102
eth1은 192.168.206.102로 셋팅합니다. 셋팅후, 비활성화, 활성화를 하여 반영합니다.
DNS 탭에서 호스트명을 rac2로 변경합니다.
저장하고 종료합니다.




rac1과 rac2에서 서로 ping이 되는지 확인합니다.

hostname 변경 적용을 위한 rebooting


SSH사용을 위한 셋팅 (oracle 계정)

clusterware 설치시 서버 통신하기 위해서 셋팅이 필요합니다.

rac1에서
mkdir ~/.ssh
chmod 700 ~/.ssh
cd ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t dsa

rac2에서
mkdir ~/.ssh
chmod 700 ~/.ssh
cd ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t dsa

rac1에서
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh rac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys

테스트 - 양쪽에서 확인
ssh rac1 date
ssh rac2 date
ssh rac1-priv date
ssh rac2-priv date
nslookup rac1-vip
nslookup rac2-vip





설치하는 Linux는 Red Hat 5 입니다.

ENTER를 눌러서 graphic 모드로 설치합니다.



CD media 테스트는 생략합니다.



Next



설치시 나오는 언어를 한국어로 합니다.



키보드는 U.S. 영어로 합니다.



OS와 함께 딸려온 설치번호를 입력합니다.



첫번째 HDD sda에 설치를 합니다. 삭제 경고가 나오면 모두 예를 합니다.



네트워크 셋팅은 일단 그냥 갑니다.



시스템 시간 지역을 한국으로 입력합니다.



root 암호를 입력합니다.



지금 사용자 설정을 선택합니다.



우측 항목에서 마우스 오른쪽 버튼을 누르고 모든 옵션 패키지 선택을 해서 전체 설치를 합니다.



응용 프로그램에서는 전체가 필요없으니 그래픽 인터넷, 텍스트 - 기반 인터넷만 전체설치를 합니다.



개발용 도구는 모두 설치를 합니다.



서버는 FTP, 네트워크를 전체 설치합니다.



기반 시스템은 모두 설치합니다.



리부팅



방화벽은 비활성화로 합니다.



SELinux도 비활성화로 합니다.



Kdump도 비활성화



업데이트 설정은 아니오로 합니다.



사용자를 생성합니다.



재부팅하면 완료입니다.



reboot 한 후 네트워크 셋팅을 합니다.


eth0 은 첫번째 네트워크로 호스트 Windows의 VMnet8 네트워크를 설정합니다.
Windows 네트워크 셋팅을 확인하니 192.168.89.1로 되어 있어서 192.168.89.101로 셋팅합니다.
eth1 은 두번째 네트워크로 호스트 Windows의 VMnet1 네트워크를 설정합니다.
Windows 네트워크 셋팅을 확인하니 192.168.206.1로 되어 있어서 192.168.206.101로 셋팅합니다.




 


IP 를 셋팅했으면 저장을 하고 비활성화, 활성화를 합니다.

 

터미널을 열어 호스트 윈도우와 ping 테스트를 합니다. 핑이 되면 네트워크 셋팅도 성공


다음에 나오는 사이트를 참고했습니다.

Oracle 10g RAC On Linux Using VMware Server
http://www.oracle-base.com/articles/10g/OracleDB10gR2RACInstallationOnCentos4UsingVMware.php


VMware 설치

참고 사이트는 호스트가 Linux인데 저는 WindowsXP에 설치합니다.
VMWare는 무료로 제공되는 Server 버젼을 사용합니다.
Product : VMware Server Console
Version : 1.0.6 build-91891

새로운 가상머신을 추가합니다.



Custom으로 해야만 Redhat 설치할때 disk가 보입니다.



Linux, Red Hat Linux를 선택합니다.



가상머신 이름은 RH5Rac1, 메인 폴더는 D:\VMware\RH5Rac1으로 했습니다. 가상머신 이름은 VMware에서 보여지는 이름입니다.


Make thie virtual machine private에 체크



User that powers on the virtual machine 선택


Number of processeors : One



메모리는 1024MB - Clusterware 설치할때 최소 900MB라 1024MB 정도는 잡아줍니다.



우선 Use bridged networking으로 합니다. 나중에 바꿔줄 겁니다.



LSI Logic 선택



Create a new virtual disk 선택



SCSI 선택



50GB 정도는 잡아줍니다. Allocate all disk space now를 선택하지 않으면 초기에 전체크기로 파일을 만들지 않습니다.



디스크 파일 이름 기본으로 합니다. OS는 하나만 만들거라 그냥 기본으로 했습니다.



Red hat이 ISO로 있어서 CD-ROM에서 ISO파일을 선택해 줍니다.



네트워크는 Custom으로 하고 VMnet8(NAT)로 합니다. 호스트 윈도우 (WindowsXP) 로컬 네트워크를 공유해 놓으면 Linux에서 호스트 통해서 인터넷 사용도 가능합니다.



네트워크를 추가합니다.



Host-only로 만드는데 호스트 Windows에 VMnet1과 같은 네트워크로 구성하면 됩니다. 내부에서만 사용이 가능합니다.



RAC 구성을 위한 HDD를 만듭니다.



Create a new virtual disk를 선택합니다.



SCSI로 선택합니다.



10GB로 하고 모두 체크하지 않았는데 속도가 너무 느려져서 체크를 해야 할 것 같습니다. 하드 공간에 여유가 있으면 미리 10GB를 잡고 하는 것도 좋겠습니다.



D:\VMware\rac\shared에 disk1로 만듭니다.



Advanced로 들어가서 SCSI 1:1, Independent, Persistent를 선택합니다.



같은 방식으로 SCSI 1:2에 HDD를 하나 더 추가합니다.



아래와 같이 만들고 Start 를 합니다.


 


자료 출처 : http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10110&eid=aNQh0mhwE7lk3e0Fs4qSFKrPQfLnz0Rr&qb=T1JBQ0xFIHN5c3RlbSBsb2NrZWQ=&pid=fLNwfloi5U4ssuARjyssss--167216&sid=IQKNpbJs00gAAAN9Ft8AAAA-

 

오라클 클라이언트에서 오라클 서버로 접속하는 방법에는

3가지가 있습니다.

normal ,sysdba , sysoper

normal 은 일반 사용자로 들어가는거구요

sysdba 는 dba 의 권한으로 들어가는겁니다.

sysoper는 사용을 안해봐서 정확히...ㅋㅋ(아마 operation 쯤? 운영자 권한? 머..)

이때 사용하는 구문으로 as 를 쓰는데 이때 쓰는 as 는 sqlplus 에서 쓰는 구문이지

table 이나  column 에 alias 를 줄때 쓰는 as 랑은 의미상 다릅니다.

 

sys 계정과 system 계정으로 normal 접속이 가능하구요

일반 scott 나 hr 계정으로 sysdba 접속이 가능합니다.

(물론 dba 권한이 있어야 하겠지요.아닌가?....로컬이면 되나?)

 

9i 부터 scott/tiger 계정은 디폴트로

"EXPIRED & LOCKED" 이 되어 있습니다.

정확한 이유는 모르겠지만 제 소견으로는

9i 부터 iSqlPlus 라는 놈이 기본적으로 설치가 되는데

이러면 어떤곳에서든 웹 브라우저로 해당 서버에 접속할수 있게 되는데

오라클이라면 기본적으로 제공되는 scott 계정과 hr 계정으로도 쉽게 접근이 가능하다는 뜻이될터이고

보안상 취약하게 되는거죠

아마 그래서 isqlplus 에서 접속을 하지 못하도록 모두가 아는 scott/tiger 를 막아둔게 아닌가하는....

 

계정이 잠겨있는지 열려있는지 확인하려면

dictionary 에 dba_users 라는 시스템 정보 테이블이 있습니다.

이 테이블의 구조를 보시고 원하시는 정보를 확인할수 있습니다.

여러가지 컬럼중에 account_status 라는 컬럼이 계정이 잠겨있는지 열려있는지에 대한 정보가 들어가 있습니다.

 

노파심에 쿼리를 드립니다.

 

1.

conn /as sysdba

 

2.

select * from dictionary

where table_name like 'DBA_U%';

 

3.

desc DBA_USERS;

 

4.

select username ,account_status,default_tablespace,created from dba_users;

/////////////////////////////////////////////////////////////////////////

 

****   Locked_object 검색   ****

select a.session_id as SESSION_ID,

b.serial# as SERIAL_NO,

a.os_user_name as OS_USER_NAME,

a.oracle_username as ORACLE_USERNAME,

b.status as STATUS

from v$locked_object a, v$session b

where a.session_id = b.sid

**** session 잘라내기 ****

alter system kill session '108,249'

[출처] [oracle] Locked object 찾아내기 및 세션 잘라내기|작성자 skyhyunsik

 

/////////////////////////////////////////

어느날 회사 오라클 10g 서버에 황당하게도 SYSTEM계정이 로그인이 되지 않았다.

 

[user@localhost ~]$ sqlplus

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Apr 23 20:58:24 2007

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Enter user-name: system

Enter password:
error:
ora-28000: the account is locked

 

ㅡ.,ㅡ SYSTEM계정이 로그온이 되지 않는건 너무하지 않는가?

 

일반적으로 Lock Down시 푸는 일은 SYSTEM계정에서 수행한다.

 

그러면... SYSTEM계정의 Lock은 누가 풀까?

 

우선 해당 계정에 대한 Lock정보는 dba_users dictionary에서 확인할 수 있다.

 

크게 2가지 방법이 있는데....

 

① Linux계열 시스템이라면 system계정이 ORACLE을 설치하면서 생성되었을 것이다.
    Linux의 system계정으로 login한 후

[system@localhost ~]$sqlplus "/ as sysdba"

② Windows 시스템이라면 아래와 같이 Lock이 되지 않은 sys계정으로 접속을 시도한다.

 

C:\>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Apr 23 21:07:44 2007

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


SQL> conn sys/비밀번호@호스트 as sysdba
Connected.
SQL>

정상적으로 connecting이 되었는지 확인한다.

 

SQL> show user;
USER is "SYS" (또는 "SYSTEM")
SQL>

SQL>SELECT USERNAME, ACCOUNT_STATUS,

                     TO_CHAR(LOCK_DATE, 'YYYY-MM-DD HH24:MI') LOCK_DATE, PROFILE

          FROM DBA_USERS;

 

위와 같이 SELECT를 해보면 계정들의 상태를 확인 할 수 있다. (OPEN, LOCKED, EXPIRED & LOCKED)

 

SYSTEM계정의 잠금해제는

SQL> ALTER USER SYSTEM ACCOUNT UNLOCK;


정상적으로 update되었다면 system계정의 lock down은 풀렸을 것이다.

일반계정의 Lock상태를 푸는 것도 동일하므로 참고하기 바란다.

////////////////////////////////////////////////

이전의 비밀번호를 알아낼수는 없으며, 콘솔로 접속하여 변경은 가능하다.

 

토드나 기타의 DB클라이언트로는 안되며,

서버의 로컬에서 oracle이 설치되어있는 디렉토리의

bin 디렉토리에서 콘솔을 띄운후 (path에 이 경로가 들어있다면 굳이 이동할 필요는 없다.)

 

sqlplus "/ as sysdba"
또는
sqlplus " sys as sysdba"
라고 입력한후

암호를 입력하라고할때 엔터치면 로그인된다.

 

SQL> alter user system  identified by 비밀번호

 

이렇게 입력하면 system이라는 계정의 비밀번호를 변경할수 있다.

 

* 물론 다른 계정의 비밀번호도 이와 같은 방식으로 변경할수 있다.

SGA (System Global Area) : 공용 메모리 영역

공유풀 (Shared Pool) : 고정영역 (Permanent Area) + 동적영역 (Dynamic Area)
    - 동적영역 : 라이브러리 캐쉬 + 데이터 딕셔너리 캐쉬
    - SQL 쿼리 (Clicent) -> Data Dictionary에서 테이블 존재유무 파악 
       -> Query가 올바르면 Library Cache에 분석 정보, 실행 계획을 저장한다.
    - SHARED_POOL_RESERVED_SIZE
       : 메모리에 미리 공간을 확보하여 메모리 조각 부족으로 SQL 수행이 실패하는 것을 막기 위해 설정한다.
         너무 크면 메모리 낭비되고, 작으면 ORA-4031 에러 발생 가능성이 올라감

 

데이터 버퍼 캐쉬 (Data Buffer Cache)
    - 디스크에서 읽은 자료를 메모리에 저장할 때 사용하는 기억장소
    - DB_CACHE_SIZE
    - 디스크 I/O를 줄이려고 가장 크게 잡힌다.




리두 로그 버퍼 (Redo Log Buffer)


대형 풀 (Large Pool)


자바 풀 (Java Pool)



SQL> show sga

Total System Global Area  285212672 bytes
Fixed Size      1218992 bytes
Variable Size     75499088 bytes
Database Buffers   205520896 bytes
Redo Buffers      2973696 bytes

SQL> select * from v$sga;

NAME           VALUE
---------------------------------------- ----------
Fixed Size        1218992
Variable Size       75499088
Database Buffers     205520896
Redo Buffers        2973696


SQL> select * from v$sgastat;

POOL    NAME          BYTES
------------------------ ---------------------------------------------------- ----------
...

shared pool   KTI latches           288
shared pool   KKJ WRK LAT           300
shared pool   kfkhsh_kfdsg          2052
shared pool   event statistics ptr arra         680
shared pool   KGKP randnum         40000
large pool   PX msg pool        206208
large pool   free memory       3988096
java pool   free memory       4194304

597 rows selected.



SQL> select * from v$sga_dynamic_components;

COMPONENT                CURRENT_SIZE MIN_SIZE   MAX_SIZE USER_SPECIFIED_SIZE OPER_COUNT LAST_OPER_TYPE       LAST_OPER_MODE  LAST_OPER_TI GRANULE_SIZE
-------------------------------------------------------------------------------------------------------------------------------- ------------ ---------- ---------- ------------------- ---------- -------------------------- ------------------ ------------ ------------
shared pool                    67108864 67108864   0        0   0 STATIC          4194304
large pool                     4194304  4194304   0        0   0 STATIC          4194304
java pool                     4194304  4194304   0        0   0 STATIC          4194304
streams pool                    0        0   0        0   0 STATIC          4194304
DEFAULT buffer cache                  205520896  205520896   0        0   0 INITIALIZING          4194304
KEEP buffer cache                   0        0   0        0   0 STATIC          4194304
RECYCLE buffer cache                   0        0   0        0   0 STATIC          4194304
DEFAULT 2K buffer cache                   0        0   0        0   0 STATIC          4194304
DEFAULT 4K buffer cache                   0        0   0        0   0 STATIC          4194304
DEFAULT 8K buffer cache                   0        0   0        0   0 STATIC          4194304
DEFAULT 16K buffer cache                  0        0   0        0   0 STATIC          4194304
DEFAULT 32K buffer cache                  0        0   0        0   0 STATIC          4194304
ASM Buffer Cache                   0        0   0        0   0 STATIC          4194304

13 rows selected.



SQL> alter system set parameter_name=변경값;

예제) alter system set db_cache_size = 20M;
        alter system set shared_pool_size = 28M;


SQL> show parameter cache_size


+ Recent posts