본문 바로가기
Linux

[Linux] CentOs7에 오라클 19c 설치하기

by 깝발자 2024. 12. 19.

회사 개발서버 (Linux CentOs7) 에 오라클을 설치했다...
진짜 개고생 했다...

기록해놓지 않으면 또 개고생 할 꺼 같아 최대한 상세히 기록해본다.


IP주소: 111.111.111.11
hostname: ggab_bal_ja

1. 사양 점검

  • 최소 2GB RAM (권장 4GB 이상)
  • 최소 20GB의 디스크 공간
  • Swap 공간은 RAM 크기의 1.5배 (RAM이 16GB 이상이면 16GB)

2. 필요한 소프트 웨어 설치

  • 오라클 19c는 특정 패키지가 필요.
     [root@ggab_bal_ja ~] # sudo yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libXext libXtst libX11 libXau libxcb libXi make sysstat elfutils-libelf-devel

3. /etc/hosts에 IP와 hostname 추가 (root유저로 실행)

  • hostname을 조회한다.
    [root@ ggab_bal_ja ~]  # hostname
    ggab_bal_ja
  • vi 모드로 hosts 파일을 열어 IP와 hostname을 추가한다.
    [root@ ggab_bal_ja ~]  # vi /etc/hosts
    # Oracle 설치를 위한 hostname 설정
    111.111.111.11 ggab_bal_ja

4. 사용자 및 그룹 생성

  • 오라클 설치와 데이터베이스 운영에 필요한 사용자와 그룹을 만든다.
    [root@ ggab_bal_ja ~]  # sudo groupadd -g 54321 oinstall  // oinstall 이라는 그룹 생성
    [root@ ggab_bal_ja ~]  # sudo groupadd -g 54322 dba  // dba 라는 그룹 생성
    [root@ ggab_bal_ja ~]  # sudo groupadd -g 54323 oper  // oper 라는 그룹 생성
    [root@ ggab_bal_ja ~]  # sudo useradd -u 54321 -g oinstall -G dba,oper oracle  // oracle 이라는 사용자 생성(기본 그룹:oinstall 추가 그룹: dba, oper)
    [root@ ggab_bal_ja ~]  # sudo passwd oracle  // 비밀번호 oracle 로 설정
    [root@ ggab_bal_ja ~]  [비밀번호 입력]
  • oracle 사용자 홈 디렉토리 설정
    [root@ ggab_bal_ja ~]  # mkdir -p /home/oracle // 디렉토리 생성
    [root@ ggab_bal_ja ~]  # chown oracle:oinstall /home/oracle  // 권한 부여
    [root@ ggab_bal_ja ~]  # chmod 700 /home/oracle   //사용자7(rwx), 그룹(---), 기타0(---) 
    [root@ ggab_bal_ja ~]  # sudo usermod -d /home/oracle oracle   //홈 디렉토리 설정

5. 오라클 소프트웨어 다운로드

  • 오라클 홈페이지에서 다운로드
    LINUX.X64_193000_db_home.zip 로컬서버에 다운로드 후 /opt 디렉토리에 전송(SFTP)

6. 디렉토리 구성 및 권한 설정

  • oracle 설치 및 데이터베이스 파일을 저장할 디렉토리를 만든다. (일반적으로 /u01 하위에 만듦)
    [root@ ggab_bal_ja ~]  # sudo mkdir -p /u01/app/oracle
    [root@ ggab_bal_ja ~]  # sudo mkdir -p /u01/app/oraInventory
    [root@ ggab_bal_ja ~]  # sudo mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
    [root@ ggab_bal_ja ~]  # sudo mkdir -p /u01/app/oracle/oradata
    [root@ ggab_bal_ja ~]  # sudo mkdir -p /u01/app/oracle/recovery_area
  • 디렉토리 권한 설정
    [root@ ggab_bal_ja ~]  # sudo chown -R oracle:oinstall /u01   //u01 과 하위의 모든 디렉토리, 파일에게 oracle:oinstall 권한 부여
    [root@ ggab_bal_ja ~]  # sudo chmod -R 775 /u01   //사용자7(rwx), 그룹7(rwx), 기타5(r-x)

7. 커널 파라미터 / 사용자 리소스 제한 / 시스템 리소스 제한 설정

  • /etc/sysctl.conf 에 아래 내용을 추가한다. (커널 파라미터 설정)
    fs.file-max = 6815744
    kernel.sem = 250 32000 100 128
    kernel.shmmni = 4096
    kernel.shmall = 2097152
    kernel.shmmax = 12884901888
    net.core.rmem_default = 262144
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048576
    net.ipv4.ip_local_port_range = 9000 65500
  • 설정을 적용한다.
    [root@ ggab_bal_ja ~]  # sudo sysctl -p
  • /etc/security/limits.conf 에 아래 내용을 추가한다. (사용자 리소스 제한 설정)
    oracle   soft   nofile   1024
    oracle   hard   nofile   65536
    oracle   soft   nproc    2047
    oracle   hard   nproc    16384
    oracle   soft   stack    10240
    oracle   hard   stack    32768
    oracle   soft   memlock  134217728
    oracle   hard   memlock  134217728
  • /etc/pam.d/login, /etc/pam.d/sshd 에 아래 내용을 추가한다. (시스템 리소스 제한 설정)
    session required pam_limits.so

8. 환경변수 추가

  • oracle 사용자로 전환
    [root@ ggab_bal_ja ~]  # su - oracle
    [oracle@ ~] $ 
  • .bash_profile 파일 생성 후 환경 변수 추가
    [oracle@ ~] $ vi ~/.bash_profile
    # Oracle 환경 변수
    PATH=$PATH:$HOME/.local/bin:$HOME/bin
    export PATH
    export TMP=/tmp
    export TMPDIR=$TMP
    export EDITOR=vi
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
    export ORACLE_SID=orcl
    export ORACLE_TERM=xterm
    export DATA_DIR=/$ORACLE_BASE/oradata
    export BASE_PATH=/usr/sbin:$PATH
    export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/perl/bin::$BASE_PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
    export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
    export NLS_LANG=AMERICAN_KOREA.AL32UTF8
    export PS1='[\u@$ORACLE_SID \W]$ '
    export ORA_INVENTORY=/u01/app/oraInventory

  • 환경 변수 현재 세션에 적용 후 확인
    [oracle@ ~] $ source ~/.bash_profile
    [oracle@ ~] $ echo $ORACLE_BASE
    /uo1/app/oracle

    [oracle@ ~] $ echo $ORACLE_HOME
    /u01/app/oracle/product/19.0.0/dbhome_1
    [oracle@ ~] $ echo $ORACLE_SID
    orcl

9. 오라클 설치 (Silent Mode) (소프트웨어만 설치)

  • 다운로드한 파일의 압축을 해제한다.
    [oracle@ ~] $ cd /opt
    [oracle@ ~] $ unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.0.0/dbhome_1/
  • db_install.rsp 파일을  오라클 설치 디렉토리로 복사한다.
    [oracle@ ~] $ cp /u01/app/oracle/product/19.0.0/dbhome_1/install/response/db_install.rsp /home/oracle/db_install.rsp
  • db_install.rsp 수정
    [oracle@ ~] $ vi /home/oracle/db_install.rsp
    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=oinstall
    oracle.install.db.OSOPER_GROUP=oper
    oracle.install.db.OSBACKUPDBA_GROUP=dba
    oracle.install.db.OSDGDBA_GROUP=dba
    oracle.install.db.OSKMDBA_GROUP=dba
    oracle.install.db.OSRACDBA_GROUP=dba
    oracle.install.db.rootconfig.executeRootScript=false

  • 설치 실행
    [oracle@ ~] $ cd /u01/app/oracle/product/19.0.0/dbhome_1
    [oracle@ ~] $ ./runInstaller -silent -responseFile /home/oracle/db_install.rsp
  • 설치 실시간 로그 확인
    [oracle@ ~] $ cd /tmp/InstallActions[설치날짜_시간]
    [oracle@ ~] $ tail -f installActions[설치날짜_시간].log
    또는
    [oracle@ ~] $ cd /u01/app/oraInventory/logs/InstallActions[설치날짜_시간]
    [oracle@ ~] $ tail -f installActions[설치날짜_시간].log
  • 설치 완료 후 RootScript 실행
    [oracle@ ~] $ /u01/app/oraInventory/orainstRoot.sh
    [oracle@ ~] $ /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
  • 설치 실패 했을 때 아래 명령어 실행하여 디렉토리 삭제 후 다시 생성하여 설치 재진행
    [oracle@ ~] $ rm -rf /u01/app/oracle
    [oracle@ ~] $ rm -rf /u01/app/oraInventory

10. 리스너 설정 (기본설정)

  • 파일 복사
    [oracle@ ~] $ cd /home/oracle
    [oracle@ ~] $ cp $ORACLE_HOME/assistants/netca/netca.rsp /home/oracle/netca.rsp
  • 실행
    [oracle@ ~] $ netca /silent /responseFile ~/netca.rsp
  • 오류 발생 시 listener.ora 파일에 Valid Node Checking for Registration (VNCR) 설정 추가
    TNS-01198: Listener failed to initialize valid node list
        NL-07007: internal error
        NL-00408: cannot find or read value
    [oracle@ ~] $ vi /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
    VALID_NODE_CHECKING_REGISTRATION_LISTENER=OFF

11. 데이터베이스 생성

  • dbca 실행
    dbca -silent -createDatabase \
    -gdbName orcl \
    -templateName General_Purpose.dbc \
    -createAsContainerDatabase false \
    -characterSet AL32UTF8 \
    -memoryPercentage 40 \
    -datafileDestination /u01/app/oracle/oradata \
    -redoLogFileSize 50 \
    -emConfiguration LOCAL \
    -sysPassword oracle \
    -systemPassword oracle \
    -recoveryAreaDestination /u01/app/oracle/recovery_area \
    -recoveryAreaSize 2048

12. 리스너 동작 확인

  • 리스너 확인
    [oracle@ ~] $ lsnrctl stop

       [oracle@ ~] $ lsnrctl start

       [oracle@ ~] $ lsnrctl status

13. 오라클 접속 (SQL Plus 실행)

  • sysdba 로 접속
    [oracle@ ~] $ sqlplus / as sysdba
  • 쿼리로 데이터베이스 정보 확인
    SQL> SELECT instance_name, status FROM v$instance; // 데이터베이스 인스턴스 상태 확인
    SQL> SELECT name FROM v$database; // 데이터베이스 이름 확인
    SQL > SELECT name, open_mode FROM v$database; // 데이터베이스 오픈 모드 확인

리눅스(CentOs7) 에 오라클 19c 설치 완료 ~

'Linux' 카테고리의 다른 글

[Linux] 리눅스 명령어 정리  (3) 2024.07.19
[Linux] Vi란?  (0) 2024.07.19
[Linux] Windows에 WSL 설치 후 Ubuntu(우분투)까지 설치하기  (0) 2024.07.18
[Linux] 쉘(Shell)이란?  (0) 2024.07.18
[Linux] 커널이란?  (0) 2024.07.18