CentOS 7 Oracle 11g 스크립트 무인 설치

(Last Updated On: December 15, 2021)
  • 2021년에 올리는 오래된 운영체제인 CentOS 7 에 오래된 데이터베이스인 오라클 11g을 무인응답파일을 사용하여 스크립트 설치하기
  • 11g를 설치하는 사람은 없겠지만 본 포스트는 백업용이기 때문에 작동에 문제가 있으므로 사용시 스크립트 검토를 요한다
# 실패시 중단
set -e

# 배시프로필 지정
# useradd로 생성하면 기본 배시프로필 가지는듯
export oraroot=/app/oracle

# CentOS Dependencies
yum -y install compat-libstdc++-33.x86_64 binutils elfutils-libelf elfutils-libelf-devel
yum -y install glibc glibc-common glibc-devel glibc-headers gcc gcc-c++ libaio-devel
yum -y install libaio libgcc libstdc++ libstdc++ make sysstat unixODBC unixODBC-devel
yum -y install unzip
yum -y install compat-libstdc++-33.x86_64 binutils elfutils-libelf elfutils-libelf-devel

# 망할 SELinux 끄기
setenforce 0
selinuxpath='/etc/sysconfig/selinux'
selinuxtemppath='/tmp/tmpselinux'
sed 's/SELINUX=enforcing/SELINUX=disabled/' $selinuxpath > $selinuxtemppath
cat > $selinuxpath < $selinuxtemppath

# 커널 파라미터 수정 (...)
cat >> /etc/sysctl.conf << _EOL_
# /proc/sys/kernel/suid_dumpable
# /proc/sys/fs/suid_dumpables
# /proc/sys/kernel/core_setuid_ok
_EOL_

set +e

userdel ora-user; groupdel dba;
userdel oper; groupdel oper;

# 오라클 사용자 및 그룹 생성
groupadd -g 5000 dba
useradd -g dba ora-user
#passwd ora-user

groupadd oper
useradd -g oper oper
usermod -aG oper ora-user


set -e

#.bash_profile은 안되는것같음: 이유느ㅡㄴ?
cat >> /home/ora-user/.bashrc << _EOL_
export ORACLE_BASE=$oraroot
export ORACLE_HOME=\$ORACLE_BASE/product/11g
export ORACLE_SID=ora333
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export PATH=\$PATH:\$ORACLE_HOME/bin
# alias
alias ss='sqlplus / as sysdba'
_EOL_

# 설치에 필요한 그룹과 사용자 생성 ?
#생략. ora-user사용
# grid infrastructure를 설치할 경우 grid계정을 추가해서 작업한는것을 권장한다고 한다

# 유저의 자원 사용 제한
cat >> /etc/security/limits.conf << _EOL_
ora-user soft nproc 2048
ora-user hard nproc 65536
ora-user soft nofile 1024
ora-user harad nofile 65536
_EOL_
cat >> /etc/pam.d/login << _EOL_
session	required pam_limits.so
_EOL_


# 앱디렉터 생성
mkdir -p $oraroot
chown -R ora-user:dba $oraroot


# 압축해제 
echo zip복사
sleep 1
cp -f ./'Oracle Database 11.2.0.1.0 for Linux x86-64 V17530-01_1of2.zip' $oraroot/..
cp -f ./'Oracle Database 11.2.0.1.0 for Linux x86-64 V17530-01_2of2.zip' $oraroot/..

chown -R ora-user:dba $oraroot/..
cd $oraroot/..
pwd
# ./database 디렉터리가 만들어진다...
unzip 'Oracle Database 11.2.0.1.0 for Linux x86-64 V17530-01_1of2.zip'
unzip 'Oracle Database 11.2.0.1.0 for Linux x86-64 V17530-01_2of2.zip'
mv ./database/* ./

# orInst (로그파일 저장위치)
cat > /etc/oraInst.loc << _EOL_
inventory_loc=$oraroot/oraInventory
inst_group=dba
_EOL_
chown ora-user:dba /etc/oraInst.loc 
chown -R ora-user:dba /home/ora-user

# 응답파일
cd response

cat >> db_install.rsp << _EOL_
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=dba
INVENTORY_LOCATION=$oraroot/oraInventory
SELECTED_LANGUAGES=en
oracle.install.db.InstallEdition=EE
oracle.install.db.customComponents=oracle.rdbms.partitioning:11.2.0.1.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oper
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
_EOL_

cd ..

###################################################################
# 여기서 새로운 쉘을 열기 때문에 하단 스크립트가 진행이 안된다
su -l ora-user -c "cd $oraroot; cd ..; \
./runInstaller -silent -ignorePrereq -responseFile $oraroot/../response/db_install.rsp"

###################################################################
#설치 후 실행
$oraroot/product/11g/root.sh


#su -l ora-user -c 'sqlplus / as sysdba'
yum install -y ksh
# db생성
cd $oraroot/database/response
cat >> dbca.rsp << _EOL_
GDBNAME = "dba"
SID = "ora333"
SYSPASSWORD = "strongpassword123"
CHARACTERSET = "AL32UTF8"
NATIONALCHARACTERSET = "UTF8"
SAMPLESCHEMA = TRUE
_EOL_

su -l ora-user -c "\$ORACLE_HOME/bin/dbca -silent -responseFile $oraroot/database/response/dbca.rsp"

sqlplus / as sysdba;
select status from v$instance;