본문 바로가기
개발(코딩) 경험 저장소/서버,유틸 설치 및 관리

[linux][oracle19c]Rocky 8 에 oracle 19c 설치하기

by 주니우스 2023. 10. 2.
반응형

이전에 11g 설치할때는 xming쓰는걸 해본적이 없어서 리눅스를 GUI 로 설치해서 했는데

이번 19c 설치는 xming 을 사용해 원격에서 설치했다.

linux 에 X11 관련 패키지들 다 설치하고 PC에 Xming 설치/실행후  putty에서 아래처럼 만 체크하고 ":0.0" 입력하면 된다.


 

우선적으로 다른 사람들의 포스팅이나 설치 문서를 보면서, 

뭐지? 싶었던건 두가지가 있다.

 

 

1. hosts 파일에 IP 주소와 호스트명을 넣어주는것.

    (hosts 파일이 뭐하는 파일인지 몰라서가 아니라, 11g 설치때는 하지 않았던거고 이게 왜 필요하지? 싶었다.)

 

2. oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm 이라는 패키지의 존재

   (자료마다 이 패키지를 쓰는 경우도 있고, 안쓰는 경우도 있어서 쓴걸 따라해야 하나 안쓴걸 따라해야 하나 헷갈림.)

 

 

 

내가 이것들을 정확히 파악한건 아니지만 

우선 첫번째, hosts 는 아직도 왜 추가하는지는 잘 모르겠다.

이 hostname 이 oracle 환경설정 값 넣어줄때 ORACLE_HOSTNAME 이란 변수에 호스트네임을 넣어준다.

뭐 내부적으로 특정 경우에 쓰게 될수도 있겠고, 심각하게 고민할 부분은 아닌것 같아서 일단 나도 추가한다.

설치를 하다 보니 hosts 호스트명과 ORACLE_HOSTNAME 이 안맞으면 리스너 생성이 안되더라.

 

다음 두번째 preinstall 패키지...

이건 좀 많이 찾아보다 직접 패키지 설치 전후를 비교하면서 봤다.

oracle 19c DB도 rpm 패키지로 설치할수가 있는데 처음엔 19c를 패키지로 설치할때 필요한건가 싶었는데

oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm 를 직접 설치해보고 전후 몇가지 파일 비교해보니 대충알겠다.

preinstall 패키지를 사용하면, 19c 설치 시작하기전 몇몇 설정 및 패키지설치을 자동으로 해준다.


    1. oracle 계정및 group 들을 생성해준다. (이렇게 많은 기본 group 들이 생성되는지는 몰랐다.)


    2. 커널 옵션 설정(/etc/sysctl.conf) 를 자동으로 설정해준다.


   3. /etc/security/limits.conf 파일 을 자동 설정해준다. (/etc/security/limits.d 아래에 생성된다.)


정확히는 이 3가지가 전부 인지는 잘 모르겠다.

하지만 preinstall 패키지 설치를 하지 않고 수동으로 하면 위의 3가지를 직접 수동 편집 해줘야 한다.

그러므로 19c 자체를 rpm 패키지 설치하는것이 아니더라도 oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm 의 설치는 추천한다.

 

혹시라도 나중에 파일 받기 어려울때를 대비해서 첨부해놓는다.

oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
0.02MB

 

 



자~  이제 설치를 시작해보자.

 

설치에 앞서

   OS : Rocky linux 8.8

   OS 설치 : minimal (GUI 없이 minimal 로 설치 후 원격 터미널에서 Xming 으로 설치)

   설치 프로그램 조합: VirtualBox + PuTTY

   (처음엔 vmware + secureCRT 로 시도해봤는데, 내가 X11 설정을 잘 못하는건지 설치 화면이 안뜬다.

    VirtualBox + secureCRT 도 안된다, vmware + PuTTY 도 안된다. 내가 잘못한게 맞겠지만.....)

      

이글에서는 크게 두가지 방법이 있다.

첫째. oracle-database-preinstall 패키지를 통해 oracle 설치에 필요한 설정과 패키지 자동설치 되는 방법

둘째. 패키지를 통한 자동 설정을 하지 않고 수동으로 직접 설치 하는 방법

 

내가 설치하면서 경험을 말하면

첫번째 패키지를 통한 설치 방법이 참 좋은줄 알았다. 근데 설치 후 자동 실행 설정을 하면 적용이 안된다.

그러다 두번째 수동 설정을 통한 방법으로 해봤다.

설치 체크에서  Run Level  failed 도 발생하지 않고 한번에 깔끔하게 된다. 그리고 자동 실행도 잘 된다.

이게 linux 7버전, 8버전, oracle linux 버전, Rocky linux 버전 이 묘~~ 하게다른 차이가 있는것 같다.

그리고 아직까진 VirtualBox 에서만 설치해봤는데 실제 서버에 설치하면 또 다를지도 모르겠다....

여튼 나의 최종 선택은 수동 설정을 통한 설치다.

이게 최선의 선택인지는 모르겠지만 더 확인이 내용이 있으면 블로그를 업데이트 하겠다.

 

 

/etc/hosts 설정

    hosts 파일은 DNS 로컬 파일 같은거다. 특정 URL 에 접속하려고할때 OS는 가장 먼저 hosts 파일의 URL이

    어느 IP 주소인지 확인해 보는데, hosts 파일에 없다면 DNS 서버로 쿼리를 날려 결과로 받은 IP주소로

    접속을 하게 된다. 

    내가 설치하는 linux의 hostname은 Rocky8 이므로 아래와 같이 추가한다.

 

    [root@Rocky8 ~]# vi /etc/hosts

 

 

    [root@Rocky8 ~]# vi /etc/selinux/config

방화벽 오픈

[root@Rocky8 ~]# firewall-cmd --permanent --zone=public --add-port=1521/tcp

 

 

 

 

 

 

 


여기서 패키지를 통한 자동설정을 할거면 1.항목을 따라하고 수동 설정할거면 더 아래  2.항목을 따라하면 된다.


1. oracle-database-preinstall 패키지로 자동 설정 시

 

필요한 패키지 설치

  [root@Rocky8 ~]# yum install make perl xorg-x11-xauth xterm libGL libEGL nmap libnsl

 

 

oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm 설치

    centos7 에서는 바로 설치하면 되는지 모르게지만 Rocky 8.8 에서 oracle-database-preinstall을  바로 설치 하면 error 가 발생한다.

   

    이는 8 버전에서 compat-libstdc++ 과 compat-libcap1 패키지가 빠져있기때문이다.

    el8 버전은 없는지 다들 el7 버전을 설치하더라. 

   

간단히 말하면 

    [root@Rocky8 ~]# yum install -y  http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

    [root@Rocky8 ~]#  yum install -y http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libcap1-1.10-7.el7.x86_64.rpm   

를 설치하고 나서 oracle-database-preinstall 을 설치하면 된다.

    [root@Rocky8 ~]# 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

   

근데 나같은 경우는 위의 rpm install이 될때가 있고 404 error 가 날때가 있다. 어쩔때는 나고 어쩔때는 안나고 ㅎㅎ

삽질 좀 하다보니 위의 이미지 중 붉은표시 해놓은 곳에. 그러니까 rpm확장자 맨뒤에 쓰레기 값이 붙어있길래

패키지 파일이름 맨뒷 확장자인 rpm 글자를 다시 타이핑 하니 되더라. 아마 복사 붙여넣기 할때 이런 경우 있는듯.

 

혹시 rpm 파일 받기가 안될때를 위해서 파일을 첨부해놓는다.    

compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
0.19MB
compat-libcap1-1.10-7.el7.x86_64.rpm
0.02MB

   

설치 후 /home 에 가면 oracle 이라는 계정도 생겨 있고 /etc/group 파일을 열어보면 oracle관련 group 들이 생성되어 있고,

/etc/sysctl.conf 에 보면 설정이 들어가 있으며 /etc/security/limits.d 에 보면 oracle-database-preinstall-19c.conf 파일이 생성되어있다.

만일 oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm 패키지가 설치가 안되거나 이방식이 싫으면 그냥 수동으로 

각 각파일들의 설정을 해주면 된다.

 

계정 수정 및 설치 경로, 환경설정, oracle 설치파일 업로드

자동생성된 oracle 의 group 이 oinstall 로 되어있는데, 나는 dba로 바꾸고 비번 바꿔줄거다.

[root@Rocky8 ~]# usermod -g dba -G dba oracle

[root@Rocky8 ~]# passwd oracle

 


 

2. 수동 환경 설정 시

 

필요한 패키지 설치

[root@Rocky8 ~]# yum install make perl xorg-x11-xauth xterm libGL libEGL nmap libnsl bc binutils bind-libs bind-libs-lite bind-license bind-utils fstrm geolite2-city geolite2-country glibc-devel glibc-headers gssproxy kernel-headers keyutils ksh libXcomposite libXi libXinerama libXrandr libXtst libXv libXxf86dga libXxf86misc libaio libaio-devel libdmx libev libmaxminddb libstdc++ libverto-libev libxcrypt-devel lm_sensors-libs net-tools nfs-utils protobuf-c python3-bind python3-ply python3-pyyaml quota quota-nls rpcbind smartmontools sysstat xorg-x11-utils

 

[root@Rocky8 ~]# vi /etc/sysctl.conf

-------------------------------------------------

# oracle-database-preinstall-19c setting for fs.file-max is 6815744
fs.file-max = 6815744

# oracle-database-preinstall-19c setting for kernel.sem is '250 32000 100 128'
kernel.sem = 250 32000 100 128

# oracle-database-preinstall-19c setting for kernel.shmmni is 4096
kernel.shmmni = 4096

# oracle-database-preinstall-19c setting for kernel.shmall is 1073741824 on x86_64
kernel.shmall = 1073741824

# oracle-database-preinstall-19c setting for kernel.shmmax is 4398046511104 on x86_64
kernel.shmmax = 4398046511104

# oracle-database-preinstall-19c setting for kernel.panic_on_oops is 1 per Orabug 19212317
kernel.panic_on_oops = 1

# oracle-database-preinstall-19c setting for net.core.rmem_default is 262144
net.core.rmem_default = 262144

# oracle-database-preinstall-19c setting for net.core.rmem_max is 4194304
net.core.rmem_max = 4194304

# oracle-database-preinstall-19c setting for net.core.wmem_default is 262144
net.core.wmem_default = 262144

# oracle-database-preinstall-19c setting for net.core.wmem_max is 1048576
net.core.wmem_max = 1048576

# oracle-database-preinstall-19c setting for net.ipv4.conf.all.rp_filter is 2
net.ipv4.conf.all.rp_filter = 2

# oracle-database-preinstall-19c setting for net.ipv4.conf.default.rp_filter is 2
net.ipv4.conf.default.rp_filter = 2

# oracle-database-preinstall-19c setting for fs.aio-max-nr is 1048576
fs.aio-max-nr = 1048576

# oracle-database-preinstall-19c setting for net.ipv4.ip_local_port_range is 9000 65500
net.ipv4.ip_local_port_range = 9000 65500

-------------------------------------------------

 

 

sysctl 반영을 해준다.

[root@Rocky8 ~]# sysctl -p

 

 

 

 

[root@Rocky8 ~]# vi /etc/security/limits.d/sysctl-oracle.conf

-------------------------------------------------

# oracle-database-preinstall-19c setting for nofile soft limit is 1024
oracle   soft   nofile    1024

# oracle-database-preinstall-19c setting for nofile hard limit is 65536
oracle   hard   nofile    65536

# oracle-database-preinstall-19c setting for nproc soft limit is 16384
# refer orabug15971421 for more info.
oracle   soft   nproc    16384

# oracle-database-preinstall-19c setting for nproc hard limit is 16384
oracle   hard   nproc    16384

# oracle-database-preinstall-19c setting for stack soft limit is 10240KB
oracle   soft   stack    10240

# oracle-database-preinstall-19c setting for stack hard limit is 32768KB
oracle   hard   stack    32768

# oracle-database-preinstall-19c setting for memlock hard limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90 % of RAM
oracle   hard   memlock    134217728

# oracle-database-preinstall-19c setting for memlock soft limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90% of RAM
oracle   soft   memlock    134217728

-----------------------------------------------

 

 

dba 그룹 및 oracle 계정 생성

[root@Rocky8 ~]# groupadd dba
[root@Rocky8 ~]# useradd -g dba oracle 
[root@Rocky8 ~]# passwd oracle

 

 



 

 

공통설치 진행

여기부터는 패키지 자동설정 또는 수동설정 상관없이 공통 되는 설치 진행이다.

 

 

설치 경로는 별거아닌데 고민이 되더라, 우선 oracle 계정아래 설치하기로함

[root@Rocky8 ~]# mkdir -p /home/oracle/app/oracle/product/19.3.0.0/dbhome_1

[root@Rocky8 ~]# chown -R oracle:dba /home/oracle/app

[root@Rocky8 ~]# chmod -R 775 /home/oracle/app

 

다음은 oracle 설치를 위한 환경 변수 값들을 등록한다.

계정을 oracle 계정으로 바꾸고

[root@Rocky8 ~]# su - oracle

[oracle@Rocky8 ~]# vi /home/oracle/.bash_profile

----------------------------------------

export TMP=/tmp
export TMPDIR=$TMP

export ORACLE_HOSTNAME=Rocky8
export ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0.0/dbhome_1
export ORACLE_UNQNAME=orcl
export ORACLE_SID=orcl
export NLS_LANG=KOREAN_KOREA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
# alias
alias ss='sqlplus / as sysdba'

-----------------------------------------

 

그리고 /home/oracle/app/oracle/product/19.3.0.0/dbhome_1 경로에 oracle 설치파일(LINUX.X64_193000_db_home.zip)을 업로드 하고 unzip 으로 압축을 해제한다.

[oracle@Rocky8 dbhome_1]$ unzip LINUX.X64_193000_db_home.zip

여기서 runInstaller 을 실행하면 oracle 설치가 시작된다.

그전에 이것저것 많이 했으니 리부팅 한번 해준다.

[root@Rocky8 ~]# reboot

 


oracle 설치

재부팅이 되면 oracle 계정으로 로그인 하고 /home/oracle/app/oracle/product/19.3.0.0/dbhome_1 경로로 이동한다.

runInstaller 를 실행하기 전에 

[oracle@Rocky8 dbhome_1]$ export CV_ASSUME_DISTID=OEL7

를 실행해서 OS 버전 체크를 우회한다. 그렇지 않으면 아래와 같은 error 가 나온다. 깜빡하고 실행했으면, No를 클릭하고 

다시 export 하고 다시 실행하면 된다.

그리고 ./runinstaller 를 실행했을때 아래와 같은 error 화면이 터미널에 찍히면 Xming 실행을 확인해라.

 

 

이제 설치를 시작한다.

[oracle@Rocky8 dbhome_1]$ ./runInstaller

 

 

Option 중 위는 oracle install 하면서 DB 까지 생성 하는거고 아래는 oracle 만 설치하고 리스너나 DB는 따로 생성하는데,

나는 우선 oracle 만 먼저 생성하겠다. 같이 생성 해도 설치 과정상 크게 달라지지는 않는것 같다.

 


 





기본화면에는 Operator 그룹이 oper 로 되어있었는데 나는 dba로 변경해줬다.


설치하다 보면 root 권한으로 실행해줘야 하는 스크립트가 있는데 여기서 OS root pw를 입력해주면 자동 실행된다.



Checks 하다가 Run Level 이 failed 나는데  이건 왜그러는지 모르겠다. 11g 설치했을때 처럼 그냥 Ignore All 체크하고

Next 하고 경고창 뜨면 계속설치 Yes 했다.(설정을 수동으로 해서 설치하니 이 failed 가 안뜨더라)



설치 시작


root 권한으로 스크립트 실행 시킬거냐는 질문에 Yes


successful~ 설치가 완료 되었다. Close 를 하면 화면이 닫힌다.


6. 리스너 설정

설치가 끝나고 나면 다시 터미널 창으로 돌아와서 리스너 설정을 위한 netca 를 실행한다.

[oracle@Rocky8 dbhome_1]$ netca


그러면 아래와 같은 화면이 뜨고 Listener configuration 체크된 상태로 Nest 클릭한다.






다른 리스너를 설정할 필요 없으니 No



첫페이지로 되돌아 온거고, 설정이 다 끝나서 볼일 다봤으니 Finish


7.DB 생성

이번엔 DB 생성하는 단계로, 다시 터미널에서 dbca 를 입력한다.

[oracle@Rocky8 dbhome_1]$ dbca





여기서는 SID를 orcl로 했다.

이건 각자 oracle 설치 환경 변수값에 설정한 SID 값을 들어가있는데 확인 정도 하고,

Create as Container database 는 안할거니 체크된 값을 해제한다.




앞에서 생성 한 리스너 확인


이건 체크를 다 해제하면 일반적인 사용에 문제없는건지 모르겠지만 검색해보면 다들 모두 체크해제 하더라...


여기 화면은 탭으로 설정 확인~!

이번엔 Memory 설정인데 

기본값은 Use Automatic Memory Management 였다. 

구글링을 해서 많은 예를 찾아봤는데 7~80%는 첫번째인 Use Automatic Shared Memory Management 를 선택하길래

나도 같은 선택~!


Sizing 탭의 Processes 값은 기본 값이 300으로 되어있는데...

전에 11g 는 150 기본값으로 테스트 하다보니 session 이 풀나서 500으로 늘려 줬었다.

여러 개발 프로세스 에서 연결 되다 보니 나는 1000 으로 수정한다.


캐릭터셋 설정


기본값 그대로

 

Sample schemas 는 꼭 필요하진 않으니 선택 안하고 바로 Next


 

EM은 웹으로 oracle 정보를 보고 설정하는 것 같은데 체크해제 하고 제외함


admin 패스워드 설정

SYS, SYSTEM 따로 하지 않고 같은 패스워드를 씀

아래 창 Messages 와 Next 후 팝업창은 패스워드가 oracle 권장 표준에 부합하지 않는다는 경고정도.



Summary 확인 후 Finish


DB 인스턴스 생성 진행중


드디어 설치 완료.


 

 

Oracle 자동 실행

 

[root@Rocky8 ~]# vi /etc/oratab

orcl:/home/oracle/app/oracle/product/19.3.0.0/dbhome_1:Y     (N -> Y 로 변경)


[root@Rocky8 ~]# vi /usr/lib/systemd/system/oracle_listener.service

----------------
[Unit]
Description=oracle listener
After=network.target

[Service]
Type=forking
User=oracle
Group=dba
Environment=ORACLE_BASE=/home/oracle/app/oracle
Environment=ORACLE_HOME=/home/oracle/app/oracle/product/19.3.0.0/dbhome_1
Environment=ORACLE_SID=orcl
ExecStart=/home/oracle/app/oracle/product/19.3.0.0/dbhome_1/bin/lsnrctl start
ExecStop=/home/oracle/app/oracle/product/19.3.0.0/dbhome_1/bin/lsnrctl stop

[Install]
WantedBy=multi-user.target
--------------------

 

[root@Rocky8 ~]# vi /usr/lib/systemd/system/oracle_instance.service

------------------
[Unit]
Description=oracle instance
After=network.target oracle_listener.service

[Service]
Type=forking
User=oracle
Group=dba
Environment=ORACLE_BASE=/home/oracle/app/oracle
Environment=ORACLE_HOME=$ORACLE_BASE/product/19.3.0.0/dbhome_1
Environment=ORACLE_SID=orcl
ExecStart=/home/oracle/app/oracle/product/19.3.0.0/dbhome_1/bin/dbstart ORACLE_HOME
ExecStop=/home/oracle/app/oracle/product/19.3.0.0/dbhome_1/bin/dbshut ORACLE_HOME

[Install]
WantedBy=multi-user.target
-------------------------------

 

 

[root@Rocky8 ~]# systemctl enable oracle_listener.service

 

[root@Rocky8 ~]# systemctl enable oracle_instance.service

반응형

댓글