https://docs.oracle.com/en/database/oracle/oracle-database/21/ladbi/preface.html
공식문서 참고함
준비단계
OpenSSH 설치 확인
service sshd status
결과가 dead 인 경우 설치해야한다.
linux operating system requirements 확인
Red Hat Enterprise Linux 8.2: 4.18.0-193.19.1.el8_2.x86_64 or later
이상이 필요하다고했는데
나의 경우는
4.18.0-500~~ 이므로 상위버전으로 판단
Oracle Database Preinstallation RPM for Oracle Linux 설치 확인
먼저 oracle linux가 깔려있다는 가정 하에(oracle linux 8 가정)
yum update
꽤 오래 걸렸다 나는
Disable Transparent HugePages
이것도 하라는데 난 그냥 일단 안 할래 설치 가능 유무에 관련된 건 아님 (성능 관련인 듯)
이제 서버 단 체크
At least 1GB Disk space allocated to the /tmp directory
디렉토리 사용 용량 확인
du -sh /etc
코드로 사용용량 확인, 12K밖에 안되고
디렉토리 잔여 용량 확인
df
잔여 용량이 충분하여 용량 걱정은 안하고 진행
이외에도 cron 이 설치 중 실행되지 않도록 한 다거나 하는 자잘한 사항들이 있어 공식 문서 참고, 새로 설치하는 경우에는 해당 없는 것 같다.
oracle database를 설치하기 위해 관행인지. oracle을 관리할 linux user를 생성 해줘야했다.
linux 사용자 계정 생성
adduser {사용자이름}
별다른 응답은 없기에 생성되었는지 확인해주면 좋다.
cat /etc/passwd
최하단에 생겼을 것임
ls -al /home
user 각자의 home 디렉토리에 대한 권한까지 출력
사용자 이름으로 주인 설정 되어있으면 괜찮다.
이제 생성했으니 비밀번호 설정
root 계정으로 다른 사용자 비밀번호 설정
passwd {사용자명}
사용할 비밀번호
사용할 비밀번호 확인(재입력)
준비 끝!
oracle 21c 설치
- oracle db home 으로 사용할 디렉토리를 만든다.
- 해당 디렉토리에 oracle21c 압축파일을 푼다.
https://www.oracle.com/database/technologies/xe-downloads.html
oracle 공식홈페이지 21c 다운로드 링크
그래서 나는
mkdir /app/oracle/21.3.0/dbhome //디렉토리 생성
cd /app/oracle/21.3.0/dbhome //생성한 디렉토리로 이동
unzip /media/sf_share/LINUX.X64_2130000_db_home.zip //압축풀기
이제 oracle home 이 될 디렉토리를 만들어주고,
unzip 된 파일들 중 runInstaller 라는 파일을 실행하면 되는데,
아무 라이브러리를 다운 받지 않은 채 실행하면
error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory
이런 오류가 날 것이다. libnsl 라이브러리가 없다는거니까 설치해줘야 한다.
libnsl 설치
yum install -y libnsl
다시 runInstaller를 실행하려고해도 허가 거부라고 뜰 것이다.
왜냐면? 저 파일에 대한 권한 설정이 안되어있으니까!
그렇다고 root로 저 파일을 실행하는건 안된다. 실행해보면,
You must not be logged in as root to run this tool
as root로는 실행하지 말라고 경고가 나온다.
그러면 권한설정을 해줘야하는데,
runInstaller 하나만 한다고 되는 문제가 아니라,
./runInstaller: line57: /~~내 oracle home이 될 경로~~/bin/commonSetup.sh : 허가 거부
이런 식으로 하나 더 나온다. 쟤도 권한 설정해주면 된다.
!!여기서 잠깐!!
나의 경우는 ogg를 사용하지 않아서 설치 및 설정을 하지 않았다. 누군가 이 글을 본다면 ogg 사용여부를 고려하고 진행 바람
잘 실행했다면 이런 화면이 나왔을 텐데
나의 경우는 아래와 같이 입력했다.
- 구성 옵션 : 소프트웨어만 설치 (나중에 설치)
- 데이터베이스 설치 옵션 : 단일 인스턴스 (다중 인스턴스를 사용해야하는지 점검)
- 데이터베이스 에디션 : 엔터프라이즈 에디션 (파티션 등의 기능 사용 가능)
- 설치 위치 : /app/oracle (본인 설정에 맞게)
- 인벤토리 생성 : /app/orainventory (본인 설정에 맞게)
- 운영체제 그룹 : 그대로 두기
- 루트 스크립트 실행 : 설정하면 수동으로 root.sh 실행할 필요 없이 얘가 해준다, 비밀번호 입력,
- 필요 조건 검사 : 알아서 oracle install program 이 수정할 수 있는 문제, 수정할 수 없는 문제로 나뉜다, 전자의 경우 수정 및 다시 확인을 누르면 알아서 조정해주고, 수정 가능 컬럼 이 아니오 라고 되어있는 시스템 최소 요구 사항은 보통 패키지가 설치되지 않은 상태인 것이 대부분이다. 패키지야 설치해주면 될 일이니까 터미널을 열어서 설치해주자, 나의 경우는의 두개의 패키지가 필요했고,
- 그냥 yum으로 설치했다.
- systat-10.1.5, ksh
이제 oracle sw를 설치했으니까, 아까 나중에 설치하기로 한 db를 생성해주면 되는데, 환경변수 설정이 잘 되어있지 않으면 dbca(db생성) 명령이 안먹힌다.
oracle 21c dbca가 안되는 경우
주로 있는 문제는
bash_profile, bashrc 에 있다.
oracle을 사용할 user의 bash_profile 수정하기
oracle user로 로그인한 채로 아래 명령어 수행
vi .bash_profile
파일의 하단에 아래 내용 추가
ORACLE_BASE=/app/oracle < 본인 설치경로 최상단..정도의 의미
ORACLE_SID={내가 사용할 SID 이름
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome
ORACLE_HOME_LISTNER=$ORACLE_HOME/bin/lsnrctl
PATH=$ORACLE_HOME/bin:$PATH
export PATH
export ORACLE_BASE
export ORACLE_SID
export ORACLE_HOME
export ORACLE_LISTNER
export TMP=/tmp
export TMPDIR=$TMP
alias sas="sqlplus \\"/as sysdba\\"" // 기호에 따라 사용하세요..
여기까지 하고 reboot 하면 환경변수 및 경로를 알아듣는데, 이마저도 안되는 경우가 있음, 99%확률로 bashrc의 문제이다.
.bashrc 파일의 설정은 터미널을 생성할때 마다 변수들이 읽히고,
.bash_profile은 로그인 할 때 마다 읽히는 건데,
나의 경우는 .bash_profile을 수정해도 잘안되어서 .bashrc 까지수정하고 재부팅하니까 된 경우이다.
vi .bashrc
위에 조건문 하나 보일텐데 그 아래에
if [ -f ~/.bash_profile ]; then
. ~/.bash_profile
fi
라고 적어주면 된다!
이제 dbca 명령어가 들을텐데, 아래와 같이 입력했다.
- 데이터베이스 작업 : 데이터베이스 생성
- 생성모드 : db 이름, character set, 비밀번호를 변경한다. (pluggable db 이름도 일단 PDB1 이런식으로) (character set은 보통 utf8로)
- 요약 : 내 설정이 맞는지 점검하고, rcp 파일로 남겨놓는다. (나와 누군가를 위해)
설치 완료
다음은 listener, tnsnames 등 설정