/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
출처 : http://user.chol.com/~jtoh/computer/linux/network%20setting.htm
1. 물리적인 hardware인식 시키기
lan card 인식 시키기 : -pcmcia lan card 인식 시키기 참조
2. Software setting (text mode)
2-1. 네트워크 모듈 및 옵셥, 인터페이스 alias
/etc/modules.conf
첫 번째 이더넷 인터페이스 설정
/etc/sysconfig/network-scripts/ifcfg-eth0
2-2. hostname 설정
/etc/HOSTNAME
2-3. IP address설정
/etc/hosts
간단한 host -> IP addr 변환정보, alias
2-4. Gateway 설정( 및 기본호스트에 대한 정보)
/etc/sysconfig/network
2-5. DNS (Nameserver) 설정
/etc/resolv.conf
2-6. hosts파일과 DNS 서버 질의 요청 우선 순위 설정
/etc/host.conf
/etc/nsswitch.conf
2-7. Netmask설정
2-8 네트워크 활성화
#/etc/rc.d/init.d/network restart
3. Network Testing
#ping 127.0.0.1 // localhost
#ping 자신의 IP address : 자신의 network 카드는 제대로 작동
(네트워크 카드가 슬롯에 재대로 장착되었는지
커널에서 이더넷을 인식하는지 - module 적재)
#ping gateway : 안되면 내부망이 잘못 되거나 gateway(HUB)에서 잘못됨
(랜선이 이더넷 카드에 제대로 연결되어는지?
랜선이 올바른지- 랜선을 교체
허브장비 점검
다른 컴퓨터와 비교)
#ping 외부
4. Network에 관계된 명령어
#netcfg : x-windows상에서 네트워크 설정하는 명령어
#linuxconf : 리눅스 시스템을 관리하기 위한 총체적인 툴 : redhat 7.2에서 default로 깔리지 않음
#netconfig : console에서 네트워크 설정하는 명령어
#ifconfig : 네트워크 인터페이스를 명령어로 설정하거나 직접확인하는 명령어
#ifconfig -a 네트워크 장치명 정보 보여줌
#ifconfig eth1 inet 192.168.1.1 netmask 255.255.255.0 up
ethl1 link encap:Ethernet Hwaddr 00:03:47:7A:4F:B8
inet addr:192.168.1.1 Bcast:192.168.1.256 Mask:255.255.255.0
#ifconfig <인터페이스 이름> inet <IP addr> netmask <넷마스크 값> broadcast <broadcast 값> up
#ifconfig 장치명 down
#ifconfig etho0 up
#nslookup : 네임서버에 질의하는 네임 서버 질의 도구
#nslookup www.protein.pe.kr [or 172.16.4.50]
#netstat :네트워크 연결 상태를 확인하는 명령어
#netstat -vat
#netstat -r
#traceroute : 특정 호스트 또는 IP까지 연결된 노드를 알아보는 명령어
#traceroute www.kldp.org
#route :라우칭 테이블을 확인하거나 라우팅 정보를 설정 삭제하는 명령어
# route -n
#hostname : hostname을 화면에 출력하는 명령어
# lsmod
#network start eth0
#telnet
#ftp
네트워크 설정파일들
/etc/sysconfig/network 파일
NETWORKING=yes
HOSTNAME=linux
GATEWAY=211.47.133.62
/etc/sysconfig/network-scripts/ifcfg-eth0 파일
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=211.47.133.34
NETMASK=255.255.255.224
GATEWAY=211.47.133.62
/etc/host.conf
order hosts,bind
/etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 linux localhost.localdomain localhost
/etc/ resolv.conf
nameserver 211.47.133.60
nameserver 210.117.65.1
/etc/ sysctl.conf
# Disables packet forwarding
net.ipv4.ip_forward = 0
# Enables source route verification
net.ipv4.conf.default.rp_filter = 1
# Disables the magic-sysrq key
kernel.sysrq = 0
/proc/sys/net/ipv4
/proc/sys/net/ip_forward
0
.bash_profile안에 있는 ORACLE_SID를 ORCL2로 변경합니다.
/etc/hosts에
127.0.01을 rac2로 변경합니다.
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 를 해야 환경변수가 저장된다.
su - oracle
cd /u01/clusterware
./runInstaller
[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
위 환경변수에 셋팅을 해 놓으면 한글이 나온다.
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
전체 설치를 했으면 기본적으로 추가 설치는 필요가 없습니다.
설치가 필요한 경우는 -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++ 가 설치안되었다고 나오는데 일단 넘어갑니다.
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
#--------------------
# 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
- /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
- /etc/selinux/config
SELINUX=disabled
- 모듈 검사
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
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
# 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
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
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
호스트 윈도우에서 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
/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를 만들기 위해서 리눅스를 다시 설치할 필요가 없습니다.
복사만 해주면 되는데 그 전에 해야할 것이 있습니다.
- RAC1 리눅스를 shutdown하고 RH5Rac2 폴더를 만들고 안에 있는 모든 파일을 복사합니다.
- Red Hat Linux.vmx 파일에 displayName만 변경하면 됩니다.
displayName = "RH5Rac2"
- RAC1과 RAC2를 모두 시작합니다.
eth0.bak과 eth1.bak은 삭제합니다.
eth0은 192.168.89.102
eth1은 192.168.206.102로 셋팅합니다. 셋팅후, 비활성화, 활성화를 하여 반영합니다.
DNS 탭에서 호스트명을 rac2로 변경합니다.
저장하고 종료합니다.
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 모드로 설치합니다.
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 테스트를 합니다. 핑이 되면 네트워크 셋팅도 성공
[출처] vi replace, 그리고 ^M 삭제 |작성자 벨보이
오라클 클라이언트에서 오라클 서버로 접속하는 방법에는
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이라는 계정의 비밀번호를 변경할수 있다.
* 물론 다른 계정의 비밀번호도 이와 같은 방식으로 변경할수 있다.
[출처] Oracle System 관리계정의 비밀번호를 잊어버렸을때... |작성자 webmare
SGA (System Global Area) : 공용 메모리 영역
리두 로그 버퍼 (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