(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)
oci_new_connect — Connect to the Oracle server using a unique connection
$username
, string $password
[, string $connection_string
[, string $character_set
[, int $session_mode
]]] ) : resourceEstablishes a new connection to an Oracle server and logs on.
Unlike oci_connect() and oci_pconnect(), oci_new_connect() does not cache connections and will always return a brand-new freshly opened connection handle. This is useful if your application needs transactional isolation between two sets of queries.
username
The Oracle user name.
password
The password for username
.
connection_string
Zawiera instację Oracle, z którą ma połączyć. Może to być » łańcuch Easy Connect lub nazwa połączenia z pliku tnsnames.ora, lub tego pliku dla lokalnej instancji Oracle.
Jeżeli nie określono, PHP użyje
zmiennych środowiskowych takich jak TWO_TASK
(pod Linuksem)
lub LOCAL
(pod Windowsem)
oraz ORACLE_SID
, aby określić
instację Oracle, z którą ma połączyć.
Aby użyć metody nazewnictwa Easy Connect, PHP musi być połączony z bibliotekami klienckimi Oracle 10g lub nowszymi. Łańcuch znaków Easy Connect dla Oracle 10g ma postać: [//]nazwa_hosta[:port][/usługa]. Od Oracle 11g składnią jest: [//]nazwa_hosta[:port][/usługa][:typ_serweru][/nazwa_instancji]. Nazwy usług można znaleźć uruchamiając narzędzie Oracle lsnrctl status na maszynie serwera baz danych.
Plik tnsnames.ora może znajdować się w ścieżce wyszukiwania Oracle Net, która zawiera $ORACLE_HOME/network/admin i /etc. Alternatywnie możesz ustawić TNS_ADMIN tak, aby $TNS_ADMIN/tnsnames.ora był odczytywany. Upewnij się, że daemon ma prawo odczytu z tego pliku.
character_set
Określa zestaw znaków używany przez biblioteki Oracle Client. Zestaw znaków nie musi być zgodny z tym używanym przez bazę danych. Jeżeli nie jest zgodny, Oracle zrobi co w jego mocy aby skonwertować dane do i z zestawu znaków bazy danych. Zależnie od zestawów znaków, może nie dać to wyników nadających się do użycia. Konwersja dodaje także pewien narzut czasowy.
Jeżeli nie określono, biblioteki
Oracle Client określają zestaw znaków na podstawie
zmiennej środowiskowej NLS_LANG
.
Przekazanie tego parametru może skrócić czas potrzebny na połączenie.
session_mode
Ten
parametr jest dostępny od wersji PHP 5 (PECL OCI8 1.1) i przyjmuje
następujące wartości: OCI_DEFAULT
,
OCI_SYSOPER
oraz OCI_SYSDBA
.
Jeżeli OCI_SYSOPER
lub
OCI_SYSDBA
zostały określone, ta funkcja spróbuje
nawiązać uprzywilejowane połączenie używając zewnętrznych danych autoryzacyjnych.
Połączenia uprzywilejowane są domyślnie wyłączone. Aby je włączyć, musisz
ustawić oci8.privileged_connect
na On.
PHP 5.3 (PECL OCI8 1.3.4) wprowadziło tryb
OCI_CRED_EXT
. Mówi on Oracle, aby użyć
autentykacji zewnętrznej lub systemu operacyjnego, która musi być skonfigurowana w
bazie danych. Flaga OCI_CRED_EXT
może być użyta tylko
z nazwą użytkownika "/" i pustym hasłem.
oci8.privileged_connect
może być ustawiony na On lub Off.
OCI_CRED_EXT
może być połączony z trybami
OCI_SYSOPER
lub
OCI_SYSDBA
.
OCI_CRED_EXT
nie jest wspierane na Windows, ze
względów bezpieczeństwa.
Returns a connection identifier or FALSE
on error.
The following demonstrates how you can separate connections.
Przykład #1 oci_new_connect() example
<?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
?>
See oci_connect() for further examples of parameter usage.