본문 바로가기
Infra & Security Eng/Database Engineering

PHP와 Oracle DB 연동의 모든 것: 웹 서버부터 DB 엔진까지의 메커니즘 총 정리 - 수정 중

by 엔지니어 E 2026. 3. 20.
반응형
구분 필수 항목 정확한 역할
WEB 서버 Apache 사용자의 브라우저 요청을 받아 st_in.html 등을 보여주는 서버
(웹 페이지를 사용자에게 전달하는 기본 서버)
언어 엔진 PHP st_in.php 내의 oci_ 계열 함수들을 해석하고 실행하는 엔진
(데이터베이스와 통신하고 로직을 처리하는 엔진)
DB 서버 Oracle Database 실제 데이터가 저장되고 SQL 쿼리가 처리되는 공간 (교안의 $server = 'oracle' 부분)
클라이언트 Oracle Instant Client 가장 중요. PHP 서버에 설치되어 오라클 서버와 통신을 가능케 하는 드라이버
(PHP 서버에 설치되어 오라클 서버에 접속을 도와주는 라이브러리)
연동 모듈 OCI8 Extension PHP가 오라클과 대화할 수 있게 해주는 전용 통로

 

1. 웹 서버(Web Server)
사용자가  브라우저로 접속하는 서버이며 PHP 코드가 실행되는 곳

필수 설치 소프트웨어
- Apache: 웹 서비스를 제공함 
- PHP 엔진: st_in.php, conn.php 등의 코드를 해석함
- OCI8 익스텍션: PHP가 오라클 함수(oci_connect)를 인식하게 해주는 모듈 
- Oracle Instant Client: 오라클 DB 서버와 통신하기 위한 네트워크 라이브라리
(DB가 외부에 이으므로 반드시 필요함) 

2. DB 서버
실제 데이터가 저장되고 SQL 쿼리가 처리되는 곳 

필수 설치 소프트웨어
- Oracle Database (11g, 19c 등): 실제 데이터베이스 엔진 
- Listener(리스너): 웹 서버에서 들어오는 접속 요청을 대기하고 연결해주는 프로세스 (포트 1521번이 주로 사용됨) 

 

각 파일 설명 

1. 사용자 화면 파일 (HTML) - 사용자가 브라우저에서 직접 접속하여 데이터를 입력하는 페이지
st_in.html: 학생 정보를 입력받는 폼(Form) 파일. 학번, 이름, 성별, 학과 등을 입력하는 UI를 담당함

2. 기능 처리 파일 (PHP) - 사용자가 입력한 데이터를 받아 실제로 오라클 서버에 전달하고 결과를 처리하는 파일
1) st_in.php: st_in.html에서 보낸 데이터를 $_POST로 받아서 insert 쿼리를 실행하는 파일. 내부적으로 conn.php를 require하여 사용함
2) st_vi.php: 입력이 완료된 후 데이터를 화면에 뿌려주는 '출력 프로그램' 역할을 하는 파일

3. 데이터베이스 접속 설정 파일 (PHP) - 모든 데이터베이스 작업 시 공통으로 호출되는 파일
conn.php : 오라클 서버 주소, 사용자 ID, 패스워드, 문자셋(Charset) 정보를 담고 있다. oci_connect 함수를 사용하여 실제 연결 통로를 만든다
(PHP 엔진(웹 서버)과 Oracle Database 서버 사이를 연결해줌)

파일명 확장자 주요 역할
st_in .html 학생 정보 입력 화면 (UI)
conn .php 오라클 DB 접속 설정 (Config)
st_in .php 데이터 DB 저장 처리 (Insert)
st_vi .php 저장된 데이터 목록 출력 (View)
작업 순서(프로세스)

1. 오라클 서버 확인: 오라클 서비스가 활성화 중인지, 포트(보통 1521 - 수정) 가 열려 있는지 확인한다  
2. 테이블 생성: 업로드한 이미지의 명세 대로 SQL 문을 실행하여 실제 테이블을 만든다 
3. PHP 접속 정보 설정: IP 주소, 포트, SID(또는 서비스 이름) , 계정 ID, 패스워드를 준비 한다 
4. 코드 작성: oci_connect()로 접속하고, oci_parse()로 쿼리를 준비 한뒤, oci_execute()로 실행하는 코드를 작성 한다

 

PHP-오라클 연동 메커니즘(데이터 처리 흐름) 

1단계: 입력 및 데이터 수집(st_in.html -> st_in.php)
작업: 사용자가 웹 화면에서 정보를 입력하고, "확인"을 누른다
메커니즘: $_POST('변수명')을 통해 HTML의 입력값들을 PHP의 일반 변수($sno, $sname 등)로 옮겨 담는다

2단계: DB 접속(conn.php 호출) 

함수: oci_connect($user, $passwd, $server, $charset) - 를 사용해서 데이터베이스를 접속함
메커니즘: 오라클 서버주소, 계정명, 패스워드, 인코딩 설정을 사용하여 데이터베이스에 접속 통로를 만든다 

3단계: SQL문 준비 및 파싱(SQL 생성 -> oci_parse)
함수: oci_parse($conn, $sql)
메커니즘: insert into student... 와 같은 SQL문을 오라클이 이해할 수 있도록 분석(파싱)하고 실행계획을 세운다 
* 분석(파싱): select문을 컴퓨터는 알아볼 수 없으므로 기계가 알아볼 수 있도록 바꿔주는 것 
* 실행계획: 테이블을 이 컴퓨터가 어떻게 읽는지 등을 계획을 세우는 것임

4단계: 데이터 바인딩 및 실행(oci_ bind _by_name -> oci_execute)
함수: oci_execute($result)
메커니즘: 준비된 SQL문을 실제로 실행함. 입력(Insert) 일 경우 이 단계에서 데이터베이스에  값이 저장됨
* 메모리에 바이너리 형태로 넘어옴

5단계: 결과 패치 및 종료(oci_fetch_array -> oci_close)
함수: oci_fetch_array, oci_free_statement, oci_close - 함수를 이용해서 패치를 적용함
매커니즘: 조회 시에는 데이터를 배열 형태로 가져와 화면에 띄운다 
* 바이너리 데이터를 사용자가 보기 쉽게 함수로 패치를 적용함

* 오라클은 실행과 패키츨 따로 사용한다 (mysql이랑 차이를 가짐) 

 

서버/클라이언트 구분표

장소 (서버) 설치 소프트웨어 성격 구분 이유
사용자 PC 웹 브라우저 (Chrome 등) 웹 클라이언트 웹 서버에 페이지를 달라고 요청함
웹 서버 (Linux A) Apache 웹 서버 브라우저의 요청을 받아 응답함
웹 서버 (Linux A) PHP 엔진 앱 서버 코드를 해석하여 실행 결과를 돌려줌
웹 서버 (Linux A) OCI8 익스텐션 부품 (Module) PHP 엔진이 오라클 기능을 쓰게 해줌
웹 서버 (Linux A) Oracle Instant Client DB 클라이언트 웹 서버가 DB 서버에 접속할 때 쓰는 통신 부품
웹 서버 (Linux A) sqlplus DB 클라이언트 사람이 직접 DB 서버에 접속할 때 쓰는 도구
DB 서버 (Linux B) Oracle Database DB 서버 데이터를 보관하고 SQL을 처리하여 응답함
DB 서버 (Linux B) Listener (리스너) 대기 프로세스 외부(웹 서버)에서 오는 접속 전화를 받아줌
웹서버는 서버이기도 하고 클라이언트 이기도 하다 
1. 사용자 (브라우저) 앞에서는 서비스를 제공하는 웹 서버 이다 
2. 오라클(DB) 앞에서는 데이터를 요청하는 DB 클라이언트 이다 
 
sqlplus는 클라이언트 도구이다
DB 서버 안에 설치해서 쓸 수도 있고, 웹 서버에  설치해서 쓸 수도 있다. 어디에 있든 역할은 "DB 서버에 접속을 요청하는" 클라이언트 이다 

요약하면 
서버: Apache, PHP 엔진, Oracle Database (서비스를 제공함) 
클라이언트: 브라우저, sqlplus, Oracle Instanct Client(서비스를 요청/연결함) 
작동 메커니즘 
1단계: 사용자 요청
동작: 사용자가 웹 브라우저(Chrome 등) 주소창에 URL을 입력하여 데이터를 전송 한다
성격: 웹 클라이언트가 웹 서버의 Apache에 접속을 요청하는 단계

2단계: 서버 판단 및 PHP 엔진 가동
동작: Apache 웹 서버가 사용자의 요청을 받는다. 요청된 파일이 .php 확장자임을 확인하면, 서버 내부에 설치된 PHP 엔진을 깨워 해당 코드를 실행하도록 넘긴다

3단계: 오라클 접속 및 쿼리 전송 (oci_connect& oci_parse)
동작: PHP 엔진이 코드를 읽으며 실행 한다. 이 때 oci_connect 함수를 만나면 Oracle Instant Client 부품을 사용해 멀리 있는 DB 서버의 오라클에 접속을 요청 한다 
* 해당 코드는 사용자 정보임, 데이터베이스가 아님 

4단계: 오라클 서버의 데이터처리
동작: 오라클 서버 프로세스가 전달받은 SQL 을 실행한다
핵심원리: 서버 프로세스는 인스턴스(Memory)에서 데이터를 찾는다. 만약 메모리에 없다면 데이터 베이스(Disk)에서 데이터를 가져와 메모리에 올린 후 읽는다 * 서버 프로세스는 오직 메모리에서만 데이터를 읽는다 

5단계: 데이터 반환 및 패치 (Binary to Text)
전송: 오라클이 결과 데이터를 PHP에게 돌려준다. 이때 데이터는 기계어인 바이너리 형태로 넘어온다 
패치: PHP엔진은 이 데이터를 받아 사용자가 읽을 수 있는 문자 형태로 변환(Fetch)한다

6단계: HTML 생성 및 최종 출력 
생성: PHP는 변환된 데이터를 <table>, <tr>, <td> 와 같은 HTML 태그와 결합하여 하나의 완성도니 웹 페이지 화면을 만든다 
출력: Apache가 완성된 HTML 페이지를 사용자의 웹 브라우저로 전송하고, 사용자는 최종 화면을 보게 된다