(PHP 5, PHP 7, PHP 8, 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
Contém
uma Oracle instance
a conectar. Isso pode ser
uma » Easy Connect
string ou num Connect Name
de um arquivo tnsnames.ora, ou ainda o nome de uma instância
local Oracle.
Se não especificado o PHP utilizará
variáveis de ambiente como TWO_TASK
(no Linux)
ou LOCAL
(no Windows)
e ORACLE_SID
para determinar a
Oracle instance
a conectar.
Para utilizar o método via Easy Connect, o PHP precisa ter sido compilado com as bibliotecas cliente Oracle
10g ou maiores. Uma string Easy Connect para o Oracle
10g tem a forma:
[//]host_name[:port][/service_name]. Do Oracle
11g a sintaxe é:
[//]host_name[:port][/service_name][:server_type][/instance_name].
Nomes de serviço podem ser encontrados ao rodar o utilitário
Oracle lsnrctl status
na máquina servidora
do banco de dados.
O arquivo tnsnames.ora pode estar em um Oracle Net
search path, que
inclui $ORACLE_HOME/network/admin
e /etc. Alternativamente é possível
configurarTNS_ADMIN
de forma
que $TNS_ADMIN/tnsnames.ora seja encontrado. Tenha certeza
que o servidor web tem acesso de escrita nesse arquivo.
character_set
Determina o conjunto de caracteres utilizado pelas bibliotecas Oracle Client. O conjunto de caracteres não precisa bater com o utilizado pelo banco de dados. Se eles não baterem, o Oracle fará a melhor conversão possível dos dados de e para o conjunto de caracteres do banco de dados. Dependendo dos charsets isso pode ocasionar dados não utilizáveis. Conversão também aumenta o processamento.
Se não especificado, as
bibliotecas Oracle Client determinam o charset da variável de ambiente
NLS_LANG
.
Passar esse parâmetro pode reduzir o tempo necessário a conexão.
session_mode
Este
parâmetro está disponível desde o PHP 5 (PECL OCI8 1.1) e aceita os seguintes
valores: OCI_DEFAULT
,
OCI_SYSOPER
e OCI_SYSDBA
.
Caso esteja especificado OCI_SYSOPER
ou
OCI_SYSDBA
, esta função tentará
estabelecer uma conexão privilegiada utilizando credenciais externas.
Conexões privilegiadas estão desativadas por padrão. Para ativá-las é preciso
configurar oci8.privileged_connect
para On
.
O PHP 5.3 (PECL OCI8 1.3.4) introduziu o valor
OCI_CRED_EXT
. Isso informa o Oracle para utilizar
autenticação External ou OS, que precisa ser configurado no banco
de dados. A flag OCI_CRED_EXT
somente pode ser utilizado
com o usuário "/" e uma senha em branco.
oci8.privileged_connect
pode estar On
ou Off
.
OCI_CRED_EXT
pode ser combinado com
OCI_SYSOPER
ou
OCI_SYSDBA
.
OCI_CRED_EXT
não é suportado no Windows por
razões de segurança.
Returns a connection identifier or false
on error.
The following demonstrates how you can separate connections.
Exemplo #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.