[CentOS] Oracle 설치하기

반응형
 
 

Oracle 설치하기 전 사전준비

💿 운영 환경

- 운영체제: RHEL 7

- 아키텍처: x86_64

- 펌웨어 모드: UEFI

 

💾 최소 사양

- RAM: 4GB 이상

- Storage: 30GB 이상 (OS + ORACLE 설치 시, 약 20GB 사용)

 

📝 Oracle 사양

- 제품명: Oracle Database 19c

- 버전: 19.3.0.0

- 설치 파일: LINUX.X64_19300_db_home.zip ( ORACLE 정식 사이트 제공 )

 

🖥️ 서버 환경

인터넷 가능

root 계정 사용

 

ORACLE 설치파일 다운로드

https://www.oracle.com/kr/database/technologies/oracle19c-linux-downloads.html

 

Oracle Database 19c Download for Linux x86-64 | Oracle 대한민국

Oracle Database 19c Grid Infrastructure (19.3) for Linux x86-64 Contains the Grid Infrastructure Software including Oracle Clusterware, Automated Storage Management (ASM), and ASM Cluster File System. Download and install prior to installing Oracle Real Ap

www.oracle.com

 

Oracle을 설치하기 위해서는 linux용 Oracle Database를 설치해야 한다.

 

✔️ 본 글의 설명은 Oracle 파일을 풀어서 사용한다.

 

윈도우에서 설치받은 Oracle은 다양한 SFTP 프로그램을 이용해서 파일을 이동시키면 된다.

파일의 위치는 /tmp로 지정하였다.

 

✔️ /tmp 파일은  OS 재시작할 경우, tmp에 속한 파일들이 지워지는 특징이 있다.

 

 

OS 사전 설정

📕 SELinux 설정

📢 SELinux 설정을 Permissive 변경

sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

 

📢 SELinux 모드를 Permissive 변경

setenforce 0

해당 명령어는 사실 좋은 예시는 아니다.

핸드폰 경고 알림 창이 귀찮다고 경고 알림 창 설정을 끄듯이, 리눅스에 대해 보안이 위험이 발생되더라도 알람을 종료하기 때문이다.

 

그래서 이 부분은 추천하는 방법은 아니지만,  SELinux설정을 바꾸는 방법 또한 알아야 하기 때문에 이 방법을 선택하게 되었다.

 

✔️ 이 방법은 보안에 취약하다.

✔️ 해당 방법을 피할 수 있다면, 피하는 것이 매우 바람직하다.

 

 

 

📢 Hostname, 호스트 설정하기

echo '172.30.1.93   oracle.localdomain' | tee -a /etc/hosts

ORACLE을 설정할 때, 해당 설정을 하는 것을 추천한다.

listener.ora 설치할 때 oracle.localdomain을 참조하게 되는데, 해당 도메인이 없으면 ORACLE 설치 시 실패가 발생하기 때문이다. 그러나 이 부분은 사용자마다 설정이 다르므로, 이에 대한 방법이 반드시 정답은 아니다.

 

❓ IP 설정을 127.0.0.1로 하면 어떨까?

사실 이 부분에 대해 정답을 말하기는 어렵다. 일단, ip를 해당 os의 ip로 지정한다 해서 문제 될 것은 없었다.

다만, 127.0.0.1로 하게 되면 oracle 설정과 설명하기가 매우 간결해질 듯한데, 외부에서 접속이 가능할지를 아직 테스트를 안 했기 때문에 정답이라고 확신하기가 어렵다.

 

✔️ 해당 설정은, 본 글에 대한 설정 방법의 과정이다.

✔️ oracle.localdomain을 참조하는 부분에서, IP를 입력하면 되므로 반드시 설정할 필요는 없다.

 

 

📢 YUM 캐시 초기화

yum clean all

 

📢 OS 패키지 설치

yum install chrony curl gcc-c++ net-tools lsof tar tcpdump telnet unzip wget

oracle의 의존성을 해결하기 위해 yum을 통해 새롭게 설치한다. 그리고 oracle 외에 linux에 설정해서 나쁠 것이 없으므로 몇 가지도 추가작성하였다.

 

 

📢 ORACLE 사전 패키지 설치 ( PreInstall 하기 위해 필요)

yum install bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat bind-utils net-tools nfs-utils psmisc unzip xorg-x11-utils xorg-x11-xauth

 

📢 패키지 다운로드

curl -o /tmp/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

 

📢 패키지 설치

rpm -ivh /tmp/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

ORACLE에 대한 사전 설정 패키지가 설정이 완료되었다.

정상적으로 완료가 되었을 때, oracle 계정이 생성된 것을 확인할 수 있다.

 

ORACLE 계정, 환경 변수 설정

su - oracle -c 'vi ~/.bash_profile'

# Oracle Database 19c
export TMP=/tmp
export TMPDIR=$TMP

export ORACLE_HOSTNAME=oracle.localdomain
export ORACLE_UNQNAME=cdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORA_INVENTORY=/u01/app/oraInventory
export ORACLE_SID=cdb1
export PDB_NAME=pdb1
export DATA_DIR=$ORACLE_BASE/oradata
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export TNS_ADMIN=$ORACLE_HOME/network/admin

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

oracle 계정에 접속할 때, profile 설정을 변경한다.

경로설정을 환경변수에다가 두면, 나중에 수정하기가 매우 용이하다.

 

 

ORACLE 디렉터리 생성

#디렉터리 생성
mkdir -p /u01/app/{oracle,oraInventory}

# 소유자 및 그룹 변경
chown -R oracle:oinstall /u01/app/{oracle,oraInventory}

# 권한 변경
chmod -R 775 /u01/app/{oracle,oraInventory}

디렉터리에 대한 권한 및 소유자를 변경하는 작업을 진행한다.

oracle 관련된 부분은 모두 oracle계정이 관리를 하는 것이 바람직해서이다.

 

권한 변경을 위해서는 root 계정 혹은 권한을 부여할 수 있는 계정이 필요하다.

 

 

ORACLE 19c Database 설치하기, Silent 모드

#oracle 계정 전환
su - oracle

 

📢 ORACLE 홈 디렉터리 생성

mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1

 

📢 바이너리 파일 압축 해제

unzip /tmp/LINUX.X64_193000_db_home.zip -d $ORACLE_HOME

시작하기 전, 사전작업에서 받은 LINUX 파일을 압축 해제하면 된다.

파일에 대해 명령어가 달라질 수도 있으므로, 설치한 zip 파일명을 입력하면 된다.

 

✔️ ORACLE 파일은 해당, ORACLE 정식 사이트에서 받을 수 있다.

✔️ 설치 방법은 해당 글 맨 위에 작성되어 있다.

 

 

📢 Database Response 생성

vi /tmp/db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=racdba
oracle.install.db.rootconfig.executeRootScript=false

설치를 하기 전, 필요한 설정 파일들이다.

 

 

📢설치 전 검증

$ORACLE_HOME/runInstaller -silent -responseFile /tmp/db_install.rsp -executePrereqs

설치를 할 때, 문제가 생기면 안 되므로 설치와 동일한 동작을 하지만 버그테스트를 위한 동작 단계이다.

 

✔️ 여기서 오류가 발생된다면, 설치를 진행하기 전에 원인파악하는 것이 우선이다.

✔️ 아무 문제없을 경우, 다음으로 진행하면 된다.

 

 

📢 로그 삭제

rm -rf $ORA_INVENTORY/logs

 

✔️  만약, 해당 경로에 아무것도 없이 명령어를 치더라도 문제가 발생되지 않으므로 그냥 명령어 쳐보는 것이 안전해 보인다.

 

 

 

📢 설치 진행, runInstaller 실행

$ORACLE_HOME/runInstaller -silent -responseFile /tmp/db_install.rsp -waitForCompletion

위에서 테스트를 했다면, 여기서는 진행을 한다고 보면 된다.

여기서 나온 문구는 ORACLE 설치할 때 참조용으로 알려주는 몇 안 되는 힌트 문구들이다.

 

 

📢 ORACLE 계정 로그아웃

exit

ORACLE에서 알려준 문구를 이용하기 위해 root 계정을 사용하도록 하자.

 

 

root 권한으로 root Script 실행

📢 orainstRoot.sh 실행

/u01/app/oraInventory/orainstRoot.sh

 

 

📢 root.sh 실행

/u01/app/oracle/product/19.0.0/dbhome_1/root.sh

해당 명령어는 ORACLE에서 알려준 명령어이다.

 

 

 

 

listener.ora, sqlnet.ora 생성

📢 oracle 계정 전환

su - oracle

다시 ORACLE의 설정을 하기 위해 oracle 계정으로 접속을 하였다.

 

 

📢 listener.ora, sqlnet.ora 생성

netca -silent -responsefile $ORACLE_HOME/assistants/netca/netca.rsp

위에서 /etc/hosts에 설정을 진행하였다.

여기서 domain을 불러오게 되는데, 기존의 도메인을 OS가 알아먹지 못해서 timeout 오류를 일으킨다.

 

따라서, 계속해서 실패한다면 /etc/hosts의 설정을 의심해 보자.

 

 

 

📢 listener.ora, sqlnet.ora 파일 설치 확인

ls -al $TNS_ADMIN/*.ora

 

📢 oracle 계정 로그아웃

exit

 

 

ORACLE 서비스 생성

📢 ORACLE 서비스 생성

vi /usr/lib/systemd/system/dbora.service

 

📢 dbora.service 입력

[Unit]
Description=Oracle Database Service
After=network.target

[Service]
Type=forking
ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart /u01/app/oracle/product/19.0.0/dbhome_1
ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut /u01/app/oracle/product/19.0.0/dbhome_1
User=oracle
TimeoutSec=300s

[Install]
WantedBy=multi-user.target

 

 

📢 SystemD daemon 새로고침

# 데몬 새로고침
systemctl daemon-reload

# 서비스 등록 및 활성화
systemctl enable --now dbora

# 서비스 상태 확인
systemctl status dbora

 

 

 

그러나 이 또한, 약간의 버그로 상태가 실행되지 않는 문제가 발생되지만 위에 설명해 주는 enable 명령어를 한 번 더 입력하면 사진과 같이 active 상태로 전환되는 모습을 볼 수 있다.

 

 

Oracle 19c 멀티테넌트 Database 생성

📢 oracle 계정 전환

su - oracle

✔️ 리눅스에서 ORACLE 접속하기 위해서는 oracle 계정을 사용해야 한다.

 

📢 Database 생성

dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname ${ORACLE_SID} -sid ${ORACLE_SID} -responseFile NO_VALUE -characterSet AL32UTF8 -sysPassword Oracle@19c -systemPassword Oracle@19c -createAsContainerDatabase true -numberOfPDBs 1 -pdbName ${PDB_NAME} -pdbAdminPassword Oracle@19c -databaseType MULTIPURPOSE -automaticMemoryManagement false -totalMemory 800 -storageType FS -datafileDestination "${DATA_DIR}" -redoLogFileSize 50 -emConfiguration NONE -ignorePreReqs

✔️ 이 과정에서 소요시간이 약 15분 - 20분 소요되었다.

✔️ 기다리다 보면, 사진처럼 완료되는 것을 알 수 있다.

 

📕 SQL 설정

📢 리스너 설정하기

sqlplus / as sysdba

✔️ oracle 계정에서 sqlplus 접속되는 모습

 

 

-- Oracle 관리 파일(OMF)을 활성화
ALTER SYSTEM SET DB_CREATE_FILE_DEST='/u01/app/oracle/oradata' SCOPE=BOTH;


-- RDB1 데이터베이스 상태 저장
ALTER PLUGGABLE DATABASE PDB1 SAVE STATE;

 

📢 ORACLE 종료

exit

 

 

ORACLE 자동 시작 설정 ( root 계정)

sed -i 's/:N$/:Y/g' /etc/oratab

✔️ 자동시작이 싫다면, 'Y' 설정을 안 하면 된다.

 

📢 ORACLE 실행 확인

netstat -ntlup | grep tnslsnr

✔️ ORACLE이 정상 실행 된 것을 확인할 수 있다.

반응형

'Computer > 기타' 카테고리의 다른 글

PowerShell 설치하기  (0) 2023.11.08
[Android] 네이티브 vs 모바일 웹앱 vs 하이브리드 앱  (0) 2023.11.05
[CentOS] IP 설정 및 SSH 연결하기  (0) 2023.08.27
[CentOS] Apache 기본위치  (0) 2023.06.24
VM의 OS 설정하기  (0) 2023.06.24

댓글

Designed by JB FACTORY