반응형
| 구분 | 필수 항목 | 정확한 역할 |
| 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 페이지를 사용자의 웹 브라우저로 전송하고, 사용자는 최종 화면을 보게 된다 |
'Infra & Security Eng > Database Engineering' 카테고리의 다른 글
| PHP-Oracle 연동을 통한 데이터 관리 시스템 구축 및 입출력 프로세스 분석 (0) | 2026.03.23 |
|---|---|
| 데이터 모델링 정의, 구성요소 4가지, 정규화 정의, 함수적 종속, 단계별 과정 (0) | 2026.03.23 |
| [PHP] Oracle DB 연동 및 테이블별 데이터 출력 실습 (st_vi, pr_vi 등) (0) | 2026.03.20 |
| [PHP] Oracle 19c 데이터베이스 연동: oci_connect 상세 주소와 별칭으로 접속하기 (0) | 2026.03.20 |
| 시퀀스 개념, 용도, 생성, 수정, 삭제, 확인 명령어, 게시판 테이블 생성 실습 (0) | 2026.02.12 |