CentOS에 Oracle 19C 설치
Oracle 19c는 다중 모델을 목적으로 나온 데이터베이스입니다.
최근 오라클 19c로 전환하여 사용하는 곳이 증가하였습니다.
19c를 테스트 목적으로 설치를 진행하였으며, 설치하는 과정을 작성하였습니다.
/app 아래 설치하고자 경로를 일부 변경하였습니다.
오라클 19c 설치 파일은 오라클 홈페이지에서 받을 수 있습니다.
사전 설치
호스트 명 설정
호스트 명의 "oracledb"로 설정하였습니다.
$ hostnamectl set-hostname oracledb
$ echo "192.168.0.4 nakanara.com nakanara" >> /etc/hosts
자동 설정
yum을 통하여 Oracle 설치에 필요한 내용을 설치합니다.
패키지를 통한 자동 설정이 아닌 수동 설정을 할 경우 "수동 설정"으로 진행합니다.
$ yum install -y oracle-database-preinstall-19c
# or
$ yum install -y https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
수동 설정
oracle-database-preinstall-19c 패키지로 진행하지 않은 경우 진행하세요.
관련 패키지 설치
- 관련 패키지 설치
습관처럼 yum으로 바로 설치하지 않고, 다운로드 후 설치를 진행하였습니다.
yum install -y --downloadonly --downloaddir=/app/oracle_rpm \
bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
dtrace-utils \
elfutils-libelf \
elfutils-libelf-devel \
fontconfig-devel \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libdtrace-ctf-devel \
libXrender \
libXrender-devel \
libX11 \
libXau \
libXi \
libXtst \
libgcc \
librdmacm-devel \
libstdc++ \
libstdc++-devel \
libxcb \
make \
net-tools \
smartmontools \
sysstat \
unzip \
libnsl \
libnsl2 \
unixODBC
$ ll
합계 33676
-rw-r--r--. 1 root root 65788 7월 4 2014 dejavu-fonts-common-2.33-6.el7.noarch.rpm
-rw-r--r--. 1 root root 1482820 7월 4 2014 dejavu-sans-fonts-2.33-6.el7.noarch.rpm
-rw-r--r--. 1 root root 40716 10월 15 2020 elfutils-libelf-devel-0.176-5.el7.x86_64.rpm
-rw-r--r--. 1 root root 58112 10월 15 2020 expat-devel-2.1.0-12.el7.x86_64.rpm
-rw-r--r--. 1 root root 260512 11월 12 2018 fontconfig-2.13.0-4.3.el7.x86_64.rpm
-rw-r--r--. 1 root root 141248 11월 12 2018 fontconfig-devel-2.13.0-4.3.el7.x86_64.rpm
...
$ yum install -y /app/oracle_rpm/*.rpm
Installed:
dejavu-fonts-common.noarch 0:2.33-6.el7 dejavu-sans-fonts.noarch 0:2.33-6.el7 elfutils-libelf-devel.x86_64 0:0.176-5.el7 expat-devel.x86_64 0:2.1.0-12.el7 fontconfig.x86_64 0:2.13.0-4.3.el7
fontconfig-devel.x86_64 0:2.13.0-4.3.el7 fontpackages-filesystem.noarch 0:1.44-8.el7 freetype-devel.x86_64 0:2.8-14.el7_9.1 glibc-devel.x86_64 0:2.17-324.el7_9 glibc-headers.x86_64 0:2.17-324.el7_9
...
Complete!
사전 환경 설정
- 커널 매개 변수 조정
/etc/sysctl.d/98-oracle.conf 파일에 다음의 내용 추가합니다.
$ vi /etc/sysctl.d/98-oracle.conf
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
커널 매개 변수 로드
$ /sbin/sysctl -p /etc/sysctl.d/98.oracle.conf
- 보안 제한 설정
/etc/security/limits.d/30-oracle.conf 파일 내용 추가합니다.
$ vi /etc/security/limits.d/30-oracle.conf
파일 추가 내용
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
- 사용자 및 그룹 생성
$ groupadd -g 54321 oinstall
$ groupadd -g 54322 dba
$ groupadd -g 54323 oper
$ useradd -u 54321 -g oinstall -G dba,oper oracle
$ passwd oracle
- SELinux 모드 구성
SELINUX=permissive 모드로 설정되어 있는지 확인하고, 설정되어 있지 않다면 영구적으로 permissive 모드로 설정을 변경합니다.
$ cat /etc/sysconfig/selinux
$ sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/sysconfig/selinux
$ setenforce permissive
- 방화벽 설정
1521/TCP 포트를 허용합니다.
$ firewall-cmd --permanent --add-port=1521/tcp
success
$ firewall-cmd --reload
success
- Oracle 디렉토리 생성 및 권한 설정
설치할 디렉토리 생성 및 권한 설정합니다.
/app경로 아래 DB 엔진이 설치될 /oracle과 데이터가 저장될 /oradata를 생성하였습니다.
$ mkdir -p /app/oracle/product/19.3.0/dbhome_1
$ mkdir -p /app/oradata
$ mkdir -p /app/oraInventory
$ chown -R oracle:oinstall /app/oracle /app/oradata /app/oraInventory
$ chmod -R 775 /app/oracle /app/oradata /app/oraInventory
오라클 사용자 구성
- Oracle 사용자 접속
$ su - oracle
- 오라클 환경 변수 /home/oracle/scripts/setEnv.sh 파일 생성
오라클 관련 환경 설정 변수를 setEnv에 설정합니다.
$ cd ~
$ mkdir scripts
$ cat > /home/oracle/scripts/setEnv.sh <<EOF
# Oracle Settings
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=nakanara.com # hostname 참조
export ORACLE_UNQNAME=cdb1 # 고유 ID
export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORA_INVENTORY=/app/oraInventory
export ORACLE_SID=cdb1 # sid
export PDB_NAME=pdb1
export DATA_DIR=/app/oradata
export PATH=/usr/sbin:/usr/local/bin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
EOF
- .bash_profile에 setEnv.sh 내용 추가
setEnv.sh내용을 .bash_profile 하단에 추가합니다.
$ ". /home/oracle/scripts/setEnv.sh" >> /home/oracle/.bash_profile
수정한 .bash_profile을 현재 세션에 적용합니다.
$ source ~/.bash_profile
- 추가 스크립트 생성
start_all.sh, stop_all.sh 스크립트 생성합니다.
$ cat > /home/oracle/scripts/start_all.sh <<EOF
#!/bin/bash
. /home/oracle/scripts/setEnv.sh
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
dbstart \$ORACLE_HOME
EOF
$ cat > /home/oracle/scripts/stop_all.sh <<EOF
#!/bin/bash
. /home/oracle/scripts/setEnv.sh
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
dbshut \$ORACLE_HOME
EOF
파일에 대한 권한을 변경합니다.
$ chown -R oracle:oinstall /home/oracle/scripts
$ chmod u+x /home/oracle/scripts/*.sh
오라클 설치
Oracle 19c 압축파일을 ORACLE_HOME에 압축을 풉니다.
$ unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
설치를 진행합니다.
$ cd $ORACLE_HOME
$ ./runInstaller -ignorePrereq -waitforcompletion -silent \
-responseFile ${ORACLE_HOME}/install/response/db_install.rsp \
oracle.install.option=INSTALL_DB_SWONLY \
ORACLE_HOSTNAME=${ORACLE_HOSTNAME} \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=${ORA_INVENTORY} \
SELECTED_LANGUAGES=en,en_GB,ko \
ORACLE_HOME=${ORACLE_HOME} \
ORACLE_BASE=${ORACLE_BASE} \
oracle.install.db.InstallEdition=EE \
oracle.install.db.OSDBA_GROUP=dba \
oracle.install.db.OSBACKUPDBA_GROUP=dba \
oracle.install.db.OSDGDBA_GROUP=dba \
oracle.install.db.OSKMDBA_GROUP=dba \
oracle.install.db.OSRACDBA_GROUP=dba \
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \
DECLINE_SECURITY_UPDATES=true
실행 결과
Oracle Database 설정 마법사 실행 중...
[WARNING] [INS-13014] 대상 환경이 일부 선택적 요구 사항을 충족하지 않습니다.
원인: 일부 선택적 필요 조건이 충족되지 않았습니다. 자세한 내용은 로그를 참조하십시오. installActions2021-06-01_01-33-53PM.log
작업: installActions2021-06-01_01-33-53PM.log 로그에서 실패한 필요 조건 검사 목록을 확인하십시오. 로그 파일 또는 설치 설명서에서 필요 조건을 충족하는 적합한 구성을 찾아 수동으로 오류를 수정하십시오.
이 세션에 대한 응답 파일을 다음에서 찾을 수 있습니다.
/app/oracle/product/19.3.0/dbhome_1/install/response/db_2021-06-01_01-33-53PM.rsp
다음 위치에서 이 설치 세션의 로그를 찾을 수 있습니다.
/tmp/InstallActions2021-06-01_01-33-53PM/installActions2021-06-01_01-33-53PM.log
루트 사용자로 다음 스크립트를 실행합니다.
1. /app/oraInventory/orainstRoot.sh
2. /app/oracle/product/19.3.0/dbhome_1/root.sh
다음 노드에서 /app/oraInventory/orainstRoot.sh을(를) 실행하십시오.
[oracledb]
다음 노드에서 /app/oracle/product/19.3.0/dbhome_1/root.sh을(를) 실행하십시오.
[oracledb]
설치 후 root로 접속하여 스크립트를 실행합니다.
$ su -
$ /app/oraInventory/orainstRoot.sh
다음 권한 변경 중/app/oraInventory.
그룹에 대한 읽기, 쓰기 권한을 추가하는 중입니다.
월드에 대한 읽기, 쓰기, 실행 권한을 제거하는 중입니다.
그룹 이름 변경 중 /app/oraInventory 대상 oinstall.
스크립트 실행이 완료되었습니다.
$ /app/oracle/product/19.3.0/dbhome_1/root.sh
Check /app/oracle/product/19.3.0/dbhome_1/install/root_oracledb.nakanara.io_2021-06-01_13-59-05-740560635.log for the output of root script
오라클 실행
oracle 사용자로 접속 후 데이터베이스를 시작한다.
$ su - oracle
$ lsnrctl start
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 01-JUN-2021 14:00:10
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Starting /app/oracle/product/19.3.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Log messages written to /app/oracle/diag/tnslsnr/oracledb/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracledb.nakanara.com)(PORT=1521)))
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 01-JUN-2021 14:00:10
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /app/oracle/diag/tnslsnr/oracledb/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=nakanara.com)(PORT=1521)))
The listener supports no services
The command completed successfully
데이터 베이스 생성하기
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname ${ORACLE_SID} -sid ${ORACLE_SID} -responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword SysPassword1 \
-systemPassword SysPassword1 \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName ${PDB_NAME} \
-pdbAdminPassword PdbPassword1 \
-databaseType MULTIPURPOSE \
-memoryMgmtType auto_sga \
-totalMemory 2000 \
-storageType FS \
-datafileDestination "${DATA_DIR}" \
-redoLogFileSize 50 \
-emConfiguration NONE \
-ignorePreReqs
DB 작업 준비
8% 완료
데이터베이스 파일 복사 중
31% 완료
Oracle 인스턴스 생성 및 시작 중
32% 완료
36% 완료
40% 완료
43% 완료
46% 완료
데이터베이스 생성 완료 중
51% 완료
53% 완료
54% 완료
플러그인할 수 있는 데이터베이스 생성 중
58% 완료
77% 완료
사후 구성 작업 실행 중
100% 완료
데이터베이스 생성이 완료되었습니다. 자세한 내용은 다음의 로그 파일에서 확인하십시오.
/app/oracle/cfgtoollogs/dbca/cdb1
데이터베이스 정보:
전역 데이터베이스 이름:cdb1
SID(시스템 식별자):cdb1
자세한 내용은 로그 파일 "/app/oracle/cfgtoollogs/dbca/cdb1/cdb1.log"을(를) 참조하십시오.
자동 실행 설정
/etc/oratab 파일의 각 인스턴스별 재시작 플래그가 N을 Y로 설정하여 자동 재시작되도록 수정합니다.
$ vi /etc/oratab
# 전체 변경
$ sed -i 's/:N$/:Y/g' /etc/oratab
cdb1:/app/oracle/product/19.3.0/dbhome_1:Y
OMF(Oracle Managed Files)를 활성화하여 데이터베이스 및 데이터베이스 파일 생성을 단순화합니다.
$ sqlplus / as sysdba <<EOF
alter system set db_create_file_dest='${DATA_DIR}';
alter pluggable database ${PDB_NAME} save state;
exit;
EOF
SQL로 설정할 경우 아래처럼 진행하시면 됩니다.
alter system set db_create_file_dest='/app/oradata';
System altered.
alter pluggable database pdb1 save state;
Pluggable database altered.
현재 DB 상태 확인
sqlplus / as sysdba
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB19C READ WRITE NO
삭제
오라클 삭제 후 다시 설치를 하기 위한 목적일 경우 deinstall을 실행하면 됩니다.
$ /app/oracle/product/19.3.0/dbhome_1/deinstall
참고
- https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#19c
- https://www.centlinux.com/2020/04/install-oracle-database-19c-on-centos-8.html
- https://pej4303.tistory.com/48
- https://im-codding.tistory.com/16
- https://oracle-base.com/articles/19c/oracle-db-19c-installation-on-oracle-linux-7
#oracle19c #oracle #install #centos #centos7
'Programming > 기본 (Baisc)' 카테고리의 다른 글
[정규식][개인정보 정규식] 많이 사용하는 정규식 (0) | 2022.03.20 |
---|---|
[조직도][조직도 동기화] 조직도 동기화 기본 루틴 (0) | 2022.03.20 |
[JAVA] [V3] 연동시 테스트(*패턴) 검사용 임시 파일 (0) | 2022.02.27 |
[MariaDB] [RDBMS] MariaDB Index 3072 bytes (0) | 2022.01.31 |
[AWS 이관][AWS Migration] 카페24 Cafe24 to Amazon AWS EC2 (0) | 2022.01.20 |