(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_new_connect — Устанавливает новое соединение с сервером Oracle
$username,$password,$connection_string = null,$encoding = "",$session_mode = OCI_DEFAULTСоздаёт новое соединение с сервером Oracle и выполняет вход.
В отличие от oci_connect() и oci_pconnect(), функция oci_new_connect() не кеширует соединения и при каждом вызове устанавливает новое соединение. Это полезно, если приложению необходима транзакционная изоляция двух наборов запросов.
usernameИмя пользователя Oracle.
password
       Пароль пользователя username.
      
connection_stringСодержит
экземпляр Oracle для подключения. Это может быть
» Easy Connect
 string, или Connect Name из файла
tnsnames.ora, или имя локального экземпляра Oracle.
Если не указано отдельно или null, PHP использует
 переменные окружения, такие как TWO_TASK (на Linux)
 или LOCAL (на Windows)
 и ORACLE_SID для определения
 экземпляра Oracle для соединения.
 Для использования метода Easy Connect, PHP должен быть слинкован с клиентскими библиотеками версии Oracle
 10g или старше. Easy Connect string для Oracle 10g принимает следующую форму:
 [//]host_name[:port][/service_name]. Начиная с Oracle 11g синтаксис таков:
 [//]host_name[:port][/service_name][:server_type][/instance_name].
 В Oracle 19c были введены дополнительные параметры, включая настройки времени ожидания и проверки активности.
 Обратитесь к документации Oracle. Названия служб могут быть определены с помощью запуска Oracle утилиты lsnrctl status
 на сервере базы данных.
 Файл tnsnames.ora может находиться в поисковом пути Oracle Net, который включает
 /your/path/to/instantclient/network/admin,
 $ORACLE_HOME/network/admin и /etc. В качестве альтернативного варианта
 можно установить TNS_ADMIN таким образом, чтобы путь $TNS_ADMIN/tnsnames.ora был читаемым.
 Убедитесь, что веб-сервер имеет доступ к этому файлу.
encodingОпределяет кодировку, которую будут использовать клиентские библиотеки Oracle. Кодировка не обязательно должна совпадать с кодировкой самой базы данных. Oracle сделает всё возможное, чтобы преобразовать данные из или в эту кодировку, если кодировка не совпадает. В зависимости от кодировок это не всегда даёт приемлемые результаты. Преобразование также занимает некоторое время.
 Клиентские библиотеки Oracle будут определять кодировку из переменной окружения NLS_LANG,
 если кодировку не указали.
Передача аргумента часто уменьшает время, которое тратится на соединение.
session_modeПараметр доступен
с PHP 5 (PECL OCI8 1.1) и принимает следующие значения: OCI_DEFAULT,
OCI_SYSOPER и OCI_SYSDBA. Если указали
OCI_SYSOPER или OCI_SYSDBA, функция попытается установить
привилегированное соединение через внешние данные авторизации. По умолчанию привилегированные
соединения отключены. Чтобы их включить, устанавливают
oci8.privileged_connect
в On.
 В версии PHP 5.3 (PECL OCI8 1.3.4) появилась константа OCI_CRED_EXT как значение режима.
 Этот режим говорит Oracle использовать внешнюю аутентификацию или аутентификацию операционной системы,
 которую требуется настроить в базе данных.
 Флаг OCI_CRED_EXT разрешается использовать только с именем пользователя "/"
 и пустым паролем.
 Опиция oci8.privileged_connect принимает
 значение On или Off.
 Режим OCI_CRED_EXT разрешается объединять с режимами OCI_SYSOPER
 и OCI_SYSDBA.
 Режим OCI_CRED_EXT не поддерживается в Windows по соображениям безопасности.
   Возвращает идентификатор соединения или false в случае возникновения ошибки.
  
| Версия | Описание | 
|---|---|
| 8.0.0, PECL OCI8 3.0.0 | connection_stringтеперь допускает значение null. | 
Приведённый ниже пример иллюстрирует как использовать обособленные соединения.
Пример #1 Пример использования oci_new_connect()
<?php
// создайте таблицу mytab (mycol number);
function query($name, $c)
{
    echo "Выполнение $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 "Нет данных\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("основного соединения", $c1);
query("нового соединения", $c2);
oci_commit($c1);
query("нового соединения после commit", $c2);
// Выведет:
//   Выполнение основного соединения
//   1234
//   Выполнение нового соединения
//   Нет данных
//   Выполнение нового соединения после commit
//   1234
?>Дополнительные примеры можно найти в описании функции oci_connect().
