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

잔글 (봇: 자동으로 텍스트 교체 (-source +syntaxhighlight))
 
(사용자 2명의 중간 판 17개는 보이지 않습니다)
1번째 줄: 1번째 줄:
;PHP에서 오라클 접속 테스트
;PHP에서 오라클 접속 테스트
;PHP에서 오라클 쿼리 테스트  
;PHP에서 오라클 쿼리 테스트  
;<nowiki>ORA-24408: could not generate unique server group name</nowiki>
==사전 작업==
*[[PHP에서 오라클 DB 사용]]


==소스 코드==
==소스 코드==
웹서버에 아래 내용으로 test_ora.php 라는 파일을 생성하자.
웹서버에 아래 내용으로 test_ora.php 라는 파일을 생성하자.
<source lang='php'>
<syntaxhighlight lang='php'>
<?php
<?php
function xmp_print_r($arr) { echo '<xmp>'; print_r($arr); echo '</xmp>'; }
function xmp_print_r($arr) { echo '<xmp>'; print_r($arr); echo '</xmp>'; }
function oci_query($query) {
$conn = oci_connect('사용자명', '비밀번호', 'DB서버주소/서비스명', 'UTF8');
  $conn = oci_connect('사용자명', '비밀번호', 'DB서버주소/서비스명', 'UTF8');
$query = "SELECT to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') AS Now FROM dual";
  if(!$conn) die('cannot connect: '.oci_error());
$stid = oci_parse($conn, $query) or die('oci parse error: '.oci_error($conn));
  $stid = oci_parse($conn, $query);
if(oci_execute($stid) === false) die("oci query error [ $query ] message : ".oci_error($stid));
  if(!$stid) die('oci parse error: ' . oci_error($conn));
oci_fetch_all($stid, $arr, null, null, OCI_FETCHSTATEMENT_BY_ROW);
  if(oci_execute($stid) === false) die("oci query error [ $query ] message : ".oci_error($stid));
oci_close($conn);
  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);
xmp_print_r($arr);
?>
</syntaxhighlight>
</source>


;4행 기입예시
;3행 기입예시
<source lang='php'>
<syntaxhighlight lang='php'>
  $conn = oci_connect('testuser', 'P@ssw0rd', '111.222.33.44/MYSVC', 'UTF8');
$conn = oci_connect('testuser', 'P@ssw0rd', '111.222.33.44/MYSVC', 'UTF8');
</source>
</syntaxhighlight>


==브라우저 확인 (실패)==
==브라우저 확인 (실패)==
브라우저로 test_ora.php에 접속해보자.
브라우저로 test_ora.php에 접속해보자.
<source lang='text'>
<syntaxhighlight lang='text'>
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
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
</source>
</syntaxhighlight>
:→ 웹서버와 DB서버의 통신에 문제가 있다.
:→ 웹서버와 DB서버의 통신에 문제가 있다.
:→ 웹서버에 대해 고유한 서버그룹명이 필요.
:→ 웹서버의 오라클 연동 모듈이 자신(웹서버)를 호출할 때 호스트명을 이용하는 모양이다.


==hosts 파일 설정==
==hosts 파일 설정==
{{참고|ORA-24408}}
;명령어
;명령어
<source lang='bash'>
<syntaxhighlight lang='bash'>
echo -e "자신의아이피\t호스트명" >> /etc/hosts
echo -e "자신의아이피\t호스트명" >> /etc/hosts
</source>
</syntaxhighlight>
:→ 웹서버 자신의 아이피와 호스트명을 기입한다.<ref>호스트명이 실제 웹서버의 호스트명과 일치하지 않아도 된다. DB서버가 웹서버에 대해 적절한 이름을 생성하는 힌트로 사용된다.</ref>
:→ 웹서버 자신의 아이피와 호스트명을 기입한다.


;실행예시
;실행예시
<source lang='dos'>
<syntaxhighlight lang='console'>
[root@jmnote ~]# cat /etc/hosts
[root@zetawiki ~]# cat /etc/hosts
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@jmnote ~]# echo -e "111.222.33.44\tjmnote" >> /etc/hosts
[root@zetawiki ~]# echo -e "111.222.33.44\tjmnote" >> /etc/hosts
[root@jmnote ~]# cat /etc/hosts
[root@zetawiki ~]# cat /etc/hosts
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
111.222.33.44 jmnote
111.222.33.44 jmnote
</source>
</syntaxhighlight>


==브라우저 확인 (성공)==
==브라우저 확인 (성공)==
브라우저에서 test_ora.php에 접속해보자.
브라우저에서 test_ora.php에 접속해보자.
<source lang='text'>
<syntaxhighlight lang='text'>
Array
Array
(
(
67번째 줄: 64번째 줄:
         )
         )
)
)
</source>
</syntaxhighlight>


==같이 보기==
==같이 보기==
*[[PHP에서 오라클 DB 사용]]
*[[PHP에서 오라클 DB 사용]]
*[[PHP에서 PostgreSQL 접속 테스트]]
*[[PHP에서 PostgreSQL 접속 테스트]]
*[[/etc/hosts]]


==주석==
==참고==
<references/>
 
==참고 자료==
*http://onmay.com/46
*http://onmay.com/46
*http://eqcode.com/wiki/Now
*http://stackoverflow.com/questions/10484231/ora-24408-could-not-generate-unique-server-group-name


[[분류:PHP]]
[[분류:PHP]]
[[분류:오라클]]
[[분류:오라클]]

2020년 11월 2일 (월) 02:35 기준 최신판

PHP에서 오라클 접속 테스트
PHP에서 오라클 쿼리 테스트
ORA-24408: could not generate unique server group name

1 사전 작업[ | ]

2 소스 코드[ | ]

웹서버에 아래 내용으로 test_ora.php 라는 파일을 생성하자.

<?php
function xmp_print_r($arr) { echo '<xmp>'; print_r($arr); echo '</xmp>'; }
$conn = oci_connect('사용자명', '비밀번호', 'DB서버주소/서비스명', 'UTF8');
$query = "SELECT to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') AS Now FROM dual";
$stid = oci_parse($conn, $query) or 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);
xmp_print_r($arr);
3행 기입예시
$conn = oci_connect('testuser', 'P@ssw0rd', '111.222.33.44/MYSVC', 'UTF8');

3 브라우저 확인 (실패)[ | ]

브라우저로 test_ora.php에 접속해보자.

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
→ 웹서버와 DB서버의 통신에 문제가 있다.
→ 웹서버의 오라클 연동 모듈이 자신(웹서버)를 호출할 때 호스트명을 이용하는 모양이다.

4 hosts 파일 설정[ | ]

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

5 브라우저 확인 (성공)[ | ]

브라우저에서 test_ora.php에 접속해보자.

Array
(
    [0] => Array
        (
            [NOW] => 2012-09-06 18:12:19
        )
)

6 같이 보기[ | ]

7 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}