회사 개발서버 (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 |