반응형


| 오라클 접속을 위해 알아야 할 정보 1. 오라클 서버의 IP와 사용 포트 번호(리스너 포트번호) 2. 오라클 SID명(인스턴스 이름) 3. 오라클 서버의 접속 식별자(tns명) 4. 오라클 접속 계정과 암호 |
PHP - 오라클 데이터베이스 연동 프로세스
| 1. 터미널(Putty)에서 접속 정보 확인하기 (dal (공통서버)) 먼저 Rocky Linux 터미널에서 tnsping dal을 입력하면, 오라클 클라이언트가 해당 서버(dal)를 어떻게 찾아가야 하는지 설정된 **주소록(tnsnames.ora)**의 내용을 보여준다 =============================================================================================== Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = tcp) (HOST = 192.168.10.11) (port = 1521)) (CONNECT_DATA = (SID = DB19))) 2. PHP 접속 코드 작성하기 방법A: 상세 주소를 직접 입력하는 방식(oconnection1.php) 이 방식은 IP, 포트, SID 정보를 코드에 직접 기록하여 접속 하는 방법이다 =============================================================================================== <?php $user_name = "st15"; - 접속할 데이터베이스의 사용자 계정 아이디 $password = "st15"; - 해당 계정의 비밀번호 $charset = "AL32UTF8"; - 한글 데이터가 깨지지 않도록 설정하는 문자 인코딩 규격(유닉스에서 사용하는 기본 문자셋) $server = "(DESCRIPTION = (ADDRESS = (PROTOCOL = tcp)(HOST = 192.168.10.11)(port = 1521)) (CONNECT_DATA = (SID = DB19)) )"; - 서버의 IP 주소, 통신 규약(TCP), 포트 번호(1521), 데이터베이스 식별자(SID)를 명시한 접속 문자열 $conn = oci_connect($user_name, $password, $server, $charset); - 설정한 정보들을 사용하여 오라클 데이터베이스 서버에 연결을 시도하고 그 결과를 변수에 저장함 if (!$conn) { - 연결 결과가 거짓(실패)인 경우 실행됨 $e = oci_error(); - 발생한 에러의 구체적인 정보를 가져옴 echo "Connection failed: " . $e['message']; - 에러 메시지를 화면에 출력함 * 배열 $e 안에는 여러 정보가 들어있는데, 그중에서 **['message']**라는 키값에 접근하면 사용자가 읽을 수 있는 문장 형태의 에러 메시지만 쏙 뽑아낼 수 있다 } else { - 연결 결과가 참(성공)인 경우 실행됨 echo "Oracle Server Connected (Direct Mode)!<br>"; - 접속 성공을 알리는 문구와 줄바꿈 태그를 출력함 echo oci_server_version($conn); - 현재 연결된 오라클 데이터베이스 서버의 소프트웨어 버전 정보를 화면에 출력함 } echo "<hr>"; - 화면에 시각적인 구분선을 출력 show_source(__FILE__); - 현재 작성되어 실행 중인 이 파일의 전체 소스 코드를 웹 화면에 그대로 표시 ?> 방법 B: TNS 별칭을 사용하는 방식 (oconnection2.php) 이 방식은 리눅스 서버 설정 파일에 미리 등록된 dal이라는 별칭을 사용하여 접속하는 방법이다 <?php $server = "dal"; - 리눅스 서버의 tnsnames.ora 파일에 정의된 서버의 별칭 $user_name = "st15"; - 접속할 사용자 계정 아이디 $password = "st15"; - 해당 계정의 비밀번호 $conn = @oci_connect($user_name, $password, $server) or die('Could not connect:'); - 연결을 시도하되 실패하면 에러를 숨기고(@) 메시지를 출력하며 프로그램을 즉시 종료(die)한다 * @: 에러 메시지 출력 억제 하는 기능 * oci_connect: 이 함수는 실행 결과로 두 가지 중 하나(true 혹은 false)를 반환 * die('메시지'): die 라는 함수는 괄호 안의 문자열을 화면에 출력하고, 그 즉시 PHP 프로그램의 모든 실행을 중단하고 종료함 echo "Oracle 19c \$conn : $conn<br>"; - 생성된 연결 통로의 식별자 정보를 화면에 출력함 $st = oci_server_version($conn); - 접속된 서버의 상세 버전 정보를 변수에 할당함 echo "$st<br>"; - 할당된 버전 정보 문자열을 화면에 표시함 ?> 3. 웹서버(달서버)에서 php 출력물 확인하기 |
웹 접속 메커니즘(작동 순서)
| 사용자가 브라우저 접속창에 PHP 파일 웹 주소를 입력하면 다음 과정이 일어난다 1. 요청: 사용자의 PC 브라우저가 네트워크를 타고 192.168.10.11 서버에 있는 아차피(Apache) 웹 서버에게 "이 파일 좀 실행해줘" 라고 요청을 보낸다 2. 해석(Parsing): 아파치는 파일 확장자가 .php인 것을 보고 PHP 엔진에게 파일을 넘긴다 3. DB접속: PHP 엔진은 코드 내의 oci_connect를 실행한다. 이때 같은 서버(또는 네트워크로 연결된) 오라클(Oracle) 데이터베이스에 st15 계정으로 문을 두드려 접속 허가를 받는다 4. 결과 생성: 접속이 성공하면 PHP는 "Oracle Server Connected..."라는 문구와 서버 버전 정보를 HTML 형태로 만든다. 5. 응답: 아파치가 최종 완성된 HTML 화면을 사용자의 브라우저로 다시 보내주면, 우리가 보는 화면이 띄어지게 된다 |
| 참고사항 "or 연산자"는 "= 연산자"보다 우선순위가 후순위 이므로 항상 "= 연산자" 부터 명령이 실행된다 * 여기서 or은 앞의 결과가 **거짓(False)**일 때만 뒤의 명령을 실행하라는 조건부 실행의 역할 or 연산자는 예시로 a와 b를 연산했을 때 둘 중 하나가 true 이면 true가 된다. 그래서 or 앞에 문장(여기서는 $conn=~) 이 실행이 안되면 or 뒤 문장을 실행해야하는데(여기서는 die('Could not ~) or 여기서 문장은 앞에 문장이 에러가 나면뒷부분(에러 처리 또는 종료)을 실행하라라는 뜻이 된다(뒷 문장으로 실행이 됨) |
'Infra & Security Eng > Database Engineering' 카테고리의 다른 글
| PHP와 Oracle DB 연동의 모든 것: 웹 서버부터 DB 엔진까지의 메커니즘 총 정리 - 수정 중 (0) | 2026.03.20 |
|---|---|
| [PHP] Oracle DB 연동 및 테이블별 데이터 출력 실습 (st_vi, pr_vi 등) (0) | 2026.03.20 |
| 시퀀스 개념, 용도, 생성, 수정, 삭제, 확인 명령어, 게시판 테이블 생성 실습 (0) | 2026.02.12 |
| 인라인 뷰 Top-N 분석과 RANK 개념과 실습 (0) | 2026.02.12 |
| SQL 뷰 인라인뷰 개념,특징, 실제 문제 (0) | 2026.02.12 |