"PHP에서 오라클 쿼리"의 두 판 사이의 차이

38번째 줄: 38번째 줄:
  $conn = oci_connect('testuser', 'P@ssw0rd', 'oracledb01/MYSVC', 'UTF8');
  $conn = oci_connect('testuser', 'P@ssw0rd', 'oracledb01/MYSVC', 'UTF8');
</source>
</source>
:→ 형식은 맞지만 oracledb01 = 111.222.33.44 이라는 정보가 없기 때문에 연결이 되지 않는다.
:→ 형식은 맞지만 oracledb01 = 111.222.33.44 이라는 정보가 없기 때문에 연결이 되지 않는다. hosts 설정이 필요하다.<ref>tnsnames.ora에 지정해두어도 되는 모양이지만...</ref>


==hosts 파일 설정==
==hosts 파일 설정==

2012년 9월 5일 (수) 14:13 판

PHP에서 오라클 접속
PHP에서 오라클 쿼리

1 소스 코드

<?php
function xmp_print_r($arr) { echo '<xmp>'; print_r($arr); echo '</xmp>'; }
function oci_query($query) {
  $conn = oci_connect('사용자명', '비밀번호', 'DB서버명/서비스명', 'UTF8');
  if(!$conn) die('cannot connect: '.oci_error());
  $stid = oci_parse($conn, $query);
  if(!$stid) die('oci parse error: ' . oci_error($conn));
  if(oci_execute($stid) === false) die("oci query error [ $query ] message : ".oci_error($stid));
  oci_fetch_all($stid, $arr, null, null, OCI_FETCHSTATEMENT_BY_ROW);
  oci_close($conn);
  return $arr;
}
$q = "SELECT 'A1' COL1, 'A2' COL2 FROM DUAL";
$q .= " UNION ALL "; 
$q .= "SELECT 'B1' COL1, 'B2' COL2 FROM DUAL";
$arr = oci_query($q);
xmp_print_r($arr);
?>

2 실행예시 (실패)

실패
Warning: oci_connect(): ORA-24408: could not generate unique server group name in /var/www/html/test_ora.php on line 4 cannot connect: Array
 $conn = oci_connect('testuser', 'P@ssw0rd', '111.222.33.44/MYSVC', 'UTF8');
→ oci_connect는 IP를 받아주지 않는다. 호스트명 형식으로 기입해야 한다.
 $conn = oci_connect('testuser', 'P@ssw0rd', 'oracledb01/MYSVC', 'UTF8');
→ 형식은 맞지만 oracledb01 = 111.222.33.44 이라는 정보가 없기 때문에 연결이 되지 않는다. hosts 설정이 필요하다.[1]

3 hosts 파일 설정

명령어
echo -e "아이피\t호스트명" >> /etc/hosts
→ DB서버의 아이피와 호스트명을 기입한다.
실행예시
[root@jmnote ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@jmnote ~]# echo -e "111.222.33.44\toracledb01" >> /etc/hosts
[root@jmnote ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
111.222.33.44	oracledb01

4 같이 보기

5 참고 자료

  1. tnsnames.ora에 지정해두어도 되는 모양이지만...
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}