선행 작업 - X-window, xrdp
oracle 11g 설치는 GUI를 필요로 하므로, X window를 설치한다. 이후 xrdp를 사용하여 서버에 원격으로 접속, X-window에 접근하는 방법을 사용한다.
Xming을 통해서도 가능하지만, 반응속도가 느리고, 폰트 등의 가독성이 좋지 않은 단점이 있다. 반면에 xrdp는 매우 쾌적한 컴퓨팅 환경을 제공한다.
X-window 설치
yum groupinstall "Server with GUI"
startx
xrdp 설치를 위한 Repository 추가
vi /etc/yum.repos.d/xrdp.repo
[xrdp]
name=xrdp
baseurl=http://li.nux.ro/download/nux/dextop/el7/x86_64/
enabled=1
gpgcheck=0
xrdp, tigervnc-server 패키지 설치
yum install xrdp tigervnc-server
서비스 시작 및 자동시작에 등록
systemctl start xrdp
systemctl enable xrdp
방화벽 설정
firewall-cmd --permanent --zone=public --add-port=3389/tcp
firewall-cmd --reload
선행 작업 - 패키지 설치 및 커널 파라메터 설정
yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 ksh elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 make sysstat unixODBC unixODBC-devel
필요한 라이브러리 설치여부 확인
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' binutils \elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
커널 파라메터 설정
아래 표시된 4줄을 주석 처리한다.
sudo vi /usr/lib/sysctl.d/00-system.conf
# Disable netfilter on bridges.
#net.bridge.bridge-nf-call-ip6tables = 0
#net.bridge.bridge-nf-call-iptables = 0
#net.bridge.bridge-nf-call-arptables = 0
다음 내용을 끝에 추가한다.
vi /etc/sysctl.conf
net.ipv4.ip_local_port_range = 9000 65500
fs.file-max = 6815744
kernel.shmall = 10523004
kernel.shmmax = 6465333657
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_max=1048576
fs.aio-max-nr = 1048576
파라메터 확인
sysctl -p
계정 및 그룹 생성
오라클 관리용 계정 및 그룹의 생성
groupadd -g 200 oinstall
groupadd -g 201 dba
useradd -u 440 -g oinstall -G dba -d /home/oracle oracle
passwd oracle
볼드 처리된 부분을 추가한다.
vi /etc/pam.d/login
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session required pam_namespace.so
session required pam_limits.so
session optional pam_keyinit.so force revoke
session include system-auth
-session optional pam_ck_connector.so
파일 마지막 부분에 네 줄을 추가한다.
vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
파일 마지막 부분에 코드를 추가한다.
vi /etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
오라클 계정의 환경 설정
mkdir -p /usr/oracle/app
mkdir /usr/oracle/oradata
chmod -R 755 /usr/oracle
chown -R oracle:oinstall /usr/oracle
세 줄을 마지막에 추가한다.
vi /home/oracle/.bash_profile
umask 022
export ORACLE_BASE=/usr/oracle/app
export LANG=C
CentOS7 설치시 환경을 한글로 선택했다면, 오라클 설치프로그램의 한글이 제대로 출력되지 않는다. LANG환경 변수를 위와 같이 변경하여 영문 출력으로 변경할 수 있다.
파일 다운로드 및 압축 해제
오라클 서버 파일을 다운로드한다. ※ 64비트 확인
- FTP를 통해 oracle계정이 접근할 수 있는 곳에 업로드
- 오라클 계정으로 X-window환경에 로그인하여 직접 다운로드
Download : Oracle Database 11g (Linux x64)
unzip ./linux.x64_11gR2_database_1of2.zip
unzip ./linux.x64_11gR2_database_2of2.zip
오라클 설치
Oracle계정으로 X-window 환경으로 로그인한다. Shell 환경도 Oracle계정으로 진행한다.
터미널 프로그램을 열고 인스톨러를 실행한다.
./database/runInstaller
오류로 인해 Pop-up Dialog가 보이지 않을 수 있다. installation log 파일을 참고하여 설치하도록 한다. (파일명 치환 필요)
tail -f /usr/oracle/oraInventory/logs/installActions.....log
1. Configure Security Updates
- Uncheck All, Leave Blank
2. Email Address not Specified
- YES
3. Select Installation Option
- Install database software only
4. Node Selection
- Single instance database installation
5. Select Product Languages
- Korean 추가
6. select Database Edition
- Enterprise Edition
7. Specify Installation Location
- 기본값
8. Create Inventory
- 기본값
9. Privileged Operating System Groups
- 기본값
10. Perfom Prerequisite Checks
- Ingore All
11. Summary
- Finish
12. ERROR #1
Error in invoking target 'install' of makefile '/usr/oracle/app/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk'.
- Pop-up이라 X-window에서 보이지 않을 수 있다.
- 패키지 설치 및 ins_ctx.mk 파일을 수정한다.
yum install glibc-static.x86_64 glibc-static.i686
vi /usr/oracle/app/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk
ctxhx: $(CTXHXOBJ)
$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
▼ (위 내용을 찾아서, 아래처럼 수정한다.)
ctxhx: $(CTXHXOBJ)
-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a
- Dialog가 안보이는 경우, Alt+R (Retry)를 눌러 계속 진행한다.
13. ERROR #2
Error in invoking target 'agent nmhs' of makefile '/usr/oracle/app/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk'.
- Pop-up이라 X-window에서 보이지 않을 수 있다.
- oracle 계정으로, ins_emagent.mk 파일을 수정한다.
vi /usr/oracle/app/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk
$(SYSMANBIN) emdctl:
$(MK_EMAGENT_NMECTL)
▼ (위 내용을 찾아, 아래처럼 수정한다.)
$(SYSMANBIN) emdctl:
$(MK_EMAGENT_NMECTL) -lnnz11
- Dialog가 안보이는 경우, Alt+R (Retry)를 눌러 계속 진행한다.
14. Exceute Configuration Scripts
- 역시 Pop-up이라 X-window에서 보이지 않을 수 있다.
- Root 계정으로 두 스크립트를 수행한다.
/usr/oracle/oraInventory/orainstRoot.sh
/usr/oracle/app/product/11.2.0/dbhome_1/root.sh
환경변수를 추가합니다.
vi ~/.bash_profile
export ORACLE_BASE=/usr/oracle/app
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
source ~/.bash_profile
리스너 설정
/usr/oracle/app/product/11.2.0/dbhome_1/bin/netca
포트 오류가 날 수 있다. 이 경우, 리스너를 수동으로 설정해준다.
lsnrctl start
TNS-12545: Connect failed because target host or object does not exist
TNS-12560: TNS:protocol adapter error
TNS-00515: Connect failed because target host or object does not exist
Linux Error: 99: Cannot assign requested address
역시 오류가 날 수 있다.
우선 DB설정을 한다.
데이터베이스 설정
X-Window에서 oracle계정으로 다음을 실행한다.
/usr/oracle/app/product/11.2.0/dbhome_1/bin/dbca
SID: orcl
비밀번호 등을 입력하고 나머지는 기본값으로 진행한다.