oci_new_connect

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_new_connect — 고유한 연결을 사용하여 Oracle 서버에 연결


설명

oci_new_connect(
    string $username,
    string $password,
    ?string $connection_string = null,
    string $encoding = "",
    int $session_mode = OCI_DEFAULT
): resource|false
                

Oracle 서버에 대한 새 연결을 설정하고 로그온합니다.

oci_connect()oci_pconnect()와 달리 oci_new_connect()는 연결을 캐시하지 않으며 항상 새로 열린 연결 핸들을 반환합니다. 이는 애플리케이션이 두 쿼리 세트 간에 트랜잭션 격리가 필요한 경우에 유용합니다.


매개변수

username
Oracle 사용자 이름입니다.
password
사용자 이름의 비밀번호입니다.
connection_string
연결할 Oracle 인스턴스를 포함합니다. » Easy Connect 문자열, tnsnames.ora 파일의 연결 이름 또는 로컬 Oracle 인스턴스의 이름일 수 있습니다.

지정하지 않거나 null인 경우 PHP는 TWO_TASK(Linux의 경우) 또는 LOCAL(Windows의 경우) 및 ORACLE_SID와 같은 환경 변수를 사용하여 연결할 Oracle instance를 결정합니다.

Easy Connect 이름 지정 방법을 사용하려면 PHP가 Oracle 10g 이상의 클라이언트 라이브러리와 연결되어 있어야 합니다. Oracle 10g용 Easy Connect 문자열은 [//]host_name[:port][/service_name] 형식입니다. Oracle 11g에서 구문은 [//]host_name[:port][/service_name][:server_type][/instance_name]입니다. 시간 초과 및 연결 유지 설정을 포함하여 Oracle 19c에 추가 옵션이 도입되었습니다. 오라클 문서를 참조하십시오. 서비스 이름은 데이터베이스 서버 시스템에서 Oracle 유틸리티 lsnrctl status를 실행하여 찾을 수 있습니다.

tnsnames.ora 파일은 /your/path/to/instantclient/network/admin, $ORACLE_HOME/network/admin/etc를 포함하는 Oracle Net 검색 경로에 있을 수 있습니다. 또는 $TNS_ADMIN/tnsnames.ora를 읽도록 TNS_ADMIN을 설정합니다. 웹 데몬에 파일에 대한 읽기 액세스 권한이 있는지 확인하십시오.

encoding
Oracle 클라이언트 라이브러리에서 사용하는 문자 집합을 결정합니다. 문자 집합은 데이터베이스에서 사용하는 문자 집합과 일치할 필요가 없습니다. 일치하지 않는 경우 Oracle은 데이터를 데이터베이스 문자 집합으로 또는 그 반대로 변환하기 위해 최선을 다할 것입니다. 문자 집합에 따라 사용 가능한 결과를 제공하지 않을 수 있습니다. 변환은 또한 약간의 시간 오버헤드를 추가합니다.

지정하지 않으면 Oracle 클라이언트 라이브러리는 NLS_LANG 환경 변수에서 문자 집합을 결정합니다.

이 매개변수를 전달하면 연결하는 데 걸리는 시간을 줄일 수 있습니다.

session_mode
이 매개변수는 PHP 5(PECL OCI8 1.1) 버전부터 사용할 수 있으며 OCI_DEFAULT, OCI_SYSOPEROCI_SYSDBA 값을 허용합니다. OCI_SYSOPER 또는 OCI_SYSDBA가 지정된 경우 이 기능은 외부 자격 증명을 사용하여 권한 있는 연결을 설정하려고 시도합니다. 권한 있는 연결은 기본적으로 비활성화되어 있습니다. 활성화하려면 oci8.privileged_connectOn으로 설정해야 합니다.

PHP 5.3(PECL OCI8 1.3.4)은 OCI_CRED_EXT 모드 값을 도입했습니다. 이는 Oracle이 데이터베이스에서 구성해야 하는 외부 또는 OS 인증을 사용하도록 지시합니다. OCI_CRED_EXT 플래그는 "/"의 사용자 이름과 빈 암호에만 사용할 수 있습니다. oci8.privileged_connectOn 또는 Off일 수 있습니다.

OCI_CRED_EXTOCI_SYSOPER 또는 OCI_SYSDBA 모드와 결합될 수 있습니다.

OCI_CRED_EXT는 보안상의 이유로 Windows에서 지원되지 않습니다.


반환 값

연결 식별자를 반환하거나 오류가 발생하면 false를 반환합니다.


변경 로그

버전 설명
8.0.0, PECL OCI8 3.0.0 connection_string는 이제 nullable입니다.

Examples

다음은 연결을 분리하는 방법을 보여줍니다.

예제 #1 oci_new_connect() 예제

                  
<?php

// create table mytab (mycol number);

function query($name, $c)
{
    echo "Querying $name\n";
    $s = oci_parse($c, "select * from mytab");
    oci_execute($s, OCI_NO_AUTO_COMMIT);
    $row = oci_fetch_array($s, OCI_ASSOC);
    if (!$row) {
        echo "No rows\n";
    } else {
        do {
            foreach ($row as $item)
                echo $item . " ";
            echo "\n";
        } while (($row = oci_fetch_array($s, OCI_ASSOC)) != false);
    }
}

$c1 = oci_connect("hr", "welcome", "localhost/orcl");
$c2 = oci_new_connect("hr", "welcome", "localhost/orcl");

$s = oci_parse($c1, "insert into mytab values(1234)");
oci_execute($s, OCI_NO_AUTO_COMMIT);

query("basic connection", $c1);
query("new connection", $c2);
oci_commit($c1);
query("new connection after commit", $c2);

// Output is:
//   Querying basic connection
//   1234
//   Querying new connection
//   No rows
//   Querying new connection after commit
//   1234

?>
                    
                  

매개변수 사용에 대한 추가 예는 oci_connect()를 참조하십시오.


기타

  • oci_connect() - Oracle 데이터베이스에 연결
  • oci_pconnect() - 영구 연결을 사용하여 Oracle 데이터베이스에 연결