공부 이야기/ORACLE

Oracle 23c 설치하기

mind: 2024. 4. 29. 10:33

1. 이왕 설치하는거 최신 버전을 설치해보자

* window에 docker, bash가 다운로드 상태이어야 함

2. docker로 이미지 가져오기

docker pull container-registry.oracle.com/database/free:latest

3. docker 이미지를 실행하기

docker run -d --name ora23 container-registry.oracle.com/database/free

* ora_container 대신 다른 이름 써도 됨

4. 부팅 로그 확인하기

docker logs --follow ora23


Starting Oracle Net Listener.
Oracle Net Listener started.
Starting Oracle Database instance FREE.
Oracle Database instance FREE started.

The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
2024-04-29T01:13:33.485159+00:00
===========================================================
Dumping current patch information
===========================================================
No patches have been applied
===========================================================
2024-04-29T01:13:34.316499+00:00
FREEPDB1(3):Opening pdb with Resource Manager plan: DEFAULT_PLAN
Completed: Pluggable database FREEPDB1 opened read write
Completed: ALTER DATABASE OPEN

-> listener 프로세스가 시작, PDB, mount가 완료되고 OPEN 상태임을 확인!

5. 현재 docker에서 실행중임을 확인하기

docker ps

CONTAINER ID   IMAGE                                         COMMAND                   CREATED          STATUS                             PORTS      NAMES
e27780d8fac8   container-registry.oracle.com/database/free   "/bin/bash -c $ORACL…"   59 seconds ago   Up 58 seconds (health: starting)   1521/tcp   ora23

6. docker에서 실행중인 oracle 서버에 접속하기

docker exec -it ora23 bash

7. oracle도 linux에서 실행 중임. 아래 명령어로 스펙 확인하기

cat /etc/*-release

Oracle Linux Server release 8.8
NAME="Oracle Linux Server"
VERSION="8.8"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="8.8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Oracle Linux Server 8.8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:8:8:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://github.com/oracle/oracle-linux"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 8"
ORACLE_BUGZILLA_PRODUCT_VERSION=8.8
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=8.8
Red Hat Enterprise Linux release 8.8 (Ootpa)
Oracle Linux Server release 8.8

8. 리눅스 서버에서 실행 중인 oracle 상태 확인하기

ps -ef

UID          PID    PPID  C STIME TTY          TIME CMD
oracle         1       0  0 01:13 ?        00:00:00 /bin/bash /opt/oracle/runOracle.sh
oracle        24       1  0 01:13 ?        00:00:00 /opt/oracle/product/23c/dbhomeFree/bin/tnslsnr LISTENER -inherit
oracle        33       1  0 01:13 ?        00:00:00 db_pmon_FREE
oracle        37       1  0 01:13 ?        00:00:00 db_clmn_FREE
oracle        41       1  0 01:13 ?        00:00:00 db_psp0_FREE
oracle        45       1  0 01:13 ?        00:00:00 db_vktm_FREE
oracle        51       1  0 01:13 ?        00:00:00 db_gen0_FREE
oracle        55       1  0 01:13 ?        00:00:00 db_mman_FREE
oracle        61       1  0 01:13 ?        00:00:00 db_gen2_FREE
oracle        63       1  0 01:13 ?        00:00:00 db_vosd_FREE
oracle        69       1  0 01:13 ?        00:00:00 db_diag_FREE
oracle        71       1  0 01:13 ?        00:00:00 db_ofsd_FREE
oracle        73       1  0 01:13 ?        00:00:00 db_dbrm_FREE
oracle        75       1  0 01:13 ?        00:00:00 db_vkrm_FREE
oracle        77       1  0 01:13 ?        00:00:00 db_svcb_FREE
oracle        81       1  0 01:13 ?        00:00:00 db_pman_FREE
oracle        83       1  0 01:13 ?        00:00:00 db_dia0_FREE
oracle        85       1  0 01:13 ?        00:00:00 db_dia1_FREE
oracle        87       1  0 01:13 ?        00:00:00 db_lmhb_FREE
oracle        89       1  0 01:13 ?        00:00:01 db_dbw0_FREE
oracle        91       1  0 01:13 ?        00:00:00 db_lgwr_FREE
oracle        95       1  0 01:13 ?        00:00:00 db_ckpt_FREE
oracle        97       1  0 01:13 ?        00:00:00 db_smon_FREE
oracle        99       1  0 01:13 ?        00:00:00 db_smco_FREE
oracle       112       1  0 01:13 ?        00:00:00 db_reco_FREE
oracle       114       1  0 01:13 ?        00:00:00 db_lreg_FREE
oracle       116       1  0 01:13 ?        00:00:00 db_pxmn_FREE
oracle       120       1  0 01:13 ?        00:00:00 db_mmon_FREE
oracle       122       1  0 01:13 ?        00:00:00 db_mmnl_FREE
oracle       128       1  0 01:13 ?        00:00:00 db_bg00_FREE
oracle       130       1  0 01:13 ?        00:00:00 db_w000_FREE
oracle       136       1  0 01:13 ?        00:00:00 db_bg01_FREE
oracle       142       1  0 01:13 ?        00:00:00 db_bg02_FREE
oracle       148       1  0 01:13 ?        00:00:00 db_d000_FREE
oracle       150       1  0 01:13 ?        00:00:00 db_s000_FREE
oracle       152       1  0 01:13 ?        00:00:00 db_tmon_FREE
oracle       154       1  0 01:13 ?        00:00:00 db_rcbg_FREE
oracle       157       1  0 01:13 ?        00:00:00 db_gcw0_FREE
oracle       159       1  0 01:13 ?        00:00:00 db_gcr0_FREE
oracle       161       1  0 01:13 ?        00:00:00 db_m000_FREE
oracle       163       1  1 01:13 ?        00:00:01 db_m001_FREE
oracle       167       1  0 01:13 ?        00:00:00 db_tt00_FREE
oracle       169       1  0 01:13 ?        00:00:00 db_tt01_FREE
oracle       174       1  0 01:13 ?        00:00:00 db_p000_FREE
oracle       369       1  0 01:13 ?        00:00:00 db_aqpc_FREE
oracle       389       1  0 01:13 ?        00:00:00 db_m002_FREE
oracle       393       1  0 01:13 ?        00:00:00 db_m003_FREE
oracle       395       1  0 01:13 ?        00:00:00 db_m004_FREE
oracle       399       1  1 01:13 ?        00:00:01 db_m005_FREE
oracle       403       1  0 01:13 ?        00:00:00 db_m006_FREE
oracle       405       1  0 01:13 ?        00:00:00 db_m007_FREE
oracle       407       1  0 01:13 ?        00:00:00 db_m008_FREE
oracle       409       1  0 01:13 ?        00:00:01 db_cjq0_FREE
oracle       438       1  0 01:13 ?        00:00:00 tail -f /opt/oracle/diag/rdbms/free/FREE/trace/alert_FREE.log
oracle       444       1  0 01:13 ?        00:00:00 db_j000_FREE
oracle       446       1  0 01:13 ?        00:00:00 db_j001_FREE
oracle       448       1  0 01:13 ?        00:00:00 db_j002_FREE
oracle       450       1  0 01:13 ?        00:00:00 db_j003_FREE
oracle       453       1  0 01:13 ?        00:00:00 db_qm02_FREE
oracle       455       1  0 01:13 ?        00:00:00 db_q001_FREE
oracle       459       1  0 01:13 ?        00:00:00 db_q003_FREE
oracle       461       1  0 01:13 ?        00:00:00 db_q004_FREE
oracle       465       1  0 01:14 ?        00:00:00 db_q005_FREE
oracle       467       1  0 01:14 ?        00:00:00 db_ir00_FREE
oracle       469       1  0 01:14 ?        00:00:00 db_ir01_FREE
oracle       504       1  0 01:14 ?        00:00:00 db_cl00_FREE
oracle       506       1  0 01:14 ?        00:00:00 db_w001_FREE
oracle       509       0  0 01:14 pts/0    00:00:00 bash
oracle       556     509  0 01:15 pts/0    00:00:00 ps -ef

-> 보통은 ORA_ 언더바로 시작하는데 db_ 언더바로 시작함. listener, SMON, PMON을 확인. spfile을 읽어서 init이 정상적으로 동작했음을 확인할 수 있음

9. oracle 관련 환경변수 확인하기

env | grep ORA

ORACLE_SID=FREE
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/product/23c/dbhomeFree
ORACLE_PDB=
ORACLE_PWD=
ORACLE_DOCKER_INSTALL=true

10. lsnrctl 명령어로 실시간 listener 프로세스 상태 확인하는 방법

bash-4.4$ lsnrctl status

LSNRCTL for Linux: Version 23.0.0.0.0 - Production on 29-APR-2024 01:16:41

Copyright (c) 1991, 2023, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_FREE)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 23.0.0.0.0 - Production
Start Date                29-APR-2024 01:13:19
Uptime                    0 days 0 hr. 3 min. 22 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Default Service           FREE
Listener Parameter File   /opt/oracle/product/23c/dbhomeFree/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/e27780d8fac8/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_FREE)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
Services Summary...
Service "045acbe8e883095de0630600580a36d1" has 1 instance(s).
  Instance "FREE", status READY, has 1 handler(s) for this service...
Service "FREE" has 1 instance(s).
  Instance "FREE", status READY, has 1 handler(s) for this service...
Service "FREEXDB" has 1 instance(s).
  Instance "FREE", status READY, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "freepdb1" has 1 instance(s).
  Instance "FREE", status READY, has 1 handler(s) for this service...
The command completed successfully

-> FREE는 설치한 oracle 버전을 의미함

 

11. sqlplus를 이용해서 oracle 서버에 접속하기 (최종)

 sqlplus / as sysdba

SQL*Plus: Release 23.0.0.0.0 - Production on Mon Apr 29 01:16:51 2024
Version 23.3.0.23.09

Copyright (c) 1982, 2023, Oracle.  All rights reserved.


Connected to:
Oracle Database 23c Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.3.0.23.09

SQL> show pdbs

 

-> 앞이 SQL로 바뀜. 커맨드 실행 가능