oci_new_connect
(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_new_connect — Connect to the Oracle server using a unique connection
Descrição
string
$username
,string
$password
,?string
$connection_string
= null
,string
$encoding
= "",int
$session_mode
= OCI_DEFAULT
): resource|false
Establishes 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.
Parâmetros
username
-
The Oracle user name.
password
-
The password for
username
. connection_string
-
Contém a
instância do Oracle
à qual se conectar. Pode ser uma » string Easy Connect ou um Connect Name do arquivo tnsnames.ora ou o nome de uma instância local do Oracle.Se não especificado ou
null
, o PHP usará variáveis de ambiente comoTWO_TASK
(no Linux) ouLOCAL
(no Windows) eORACLE_SID
para determinar ainstância do Oracle
à qual se conectar.Para usar o método de nomenclatura Easy Connect, o PHP precisa ter sido compilado com as bibliotecas Oracle Client 10g ou superiores. A string Easy Connect para o Oracle 10g tem o formato: [//]nome_do_servidor[:porta][/nome_do_servico]. A partir do Oracle 11g a sintaxe é: [//]nome_do_servidor[:porta][/nome_do_servico][:tipo_de_servidor][/nome_da_instancia]. Outras opções foram introduzidas com o Oracle 19c, incluindo as configurações de timeout e keep-alive. Consulte a documentação do Oracle. Os nomes dos serviços podem ser encontrados executando o utilitário Oracle
lsnrctl status
na máquina do servidor de banco de dados.O arquivo tnsnames.ora pode estar no caminho de pesquisa Oracle Net, que inclui /seu/caminho/para/instantclient/network/admin, $ORACLE_HOME/network/admin e /etc. Como alternativa, defina
TNS_ADMIN
para que $TNS_ADMIN/tnsnames.ora possa ser lido. Certifique-se de que o servidor web tem acesso de leitura ao arquivo. encoding
-
Determina o conjunto de caracteres usado pelas bibliotecas Oracle Client. O conjunto de caracteres não precisa corresponder ao conjunto de caracteres usado pelo banco de dados. Se não corresponderem, o Oracle fará o possível para converter os dados de e para o conjunto de caracteres do banco de dados. Dependendo dos conjuntos de caracteres, isso pode não fornecer resultados utilizáveis. A conversão também adiciona alguma sobrecarga de tempo.
Se não for especificado, as bibliotecas Oracle Client determinam um conjunto de caracteres a partir da variável de ambiente
NLS_LANG
.Passar este parâmetro pode reduzir o tempo necessário para conectar.
session_mode
-
Este parâmetro está disponível a partir do PHP 5 (PECL OCI8 1.1) e aceita os seguintes valores:
OCI_DEFAULT
,OCI_SYSOPER
eOCI_SYSDBA
. SeOCI_SYSOPER
ouOCI_SYSDBA
forem especificadas, esta função tentará estabelecer uma conexão privilegiada usando credenciais externas. Conexões privilegiadas estão desabilitadas por padrão. Para habilitá-las é preciso configurar oci8.privileged_connect paraOn
.O PHP 5.3 (PECL OCI8 1.3.4) introduziu o valor de modo
OCI_CRED_EXT
. Ele informa ao Oracle para usar autenticação External ou OS, que deve ser configurada no banco de dados. A flagOCI_CRED_EXT
só pode ser usada com o usuário "/" e uma senha vazia. oci8.privileged_connect pode serOn
ouOff
.OCI_CRED_EXT
pode ser combinado com os modosOCI_SYSOPER
ouOCI_SYSDBA
.OCI_CRED_EXT
não é suportado no Windows por razões de segurança.
Valor Retornado
Returns a connection identifier or false
on error.
Registro de Alterações
Versão | Descrição |
---|---|
8.0.0, PECL OCI8 3.0.0 |
connection_string is now nullable.
|
Exemplos
The following demonstrates how you can separate connections.
Example #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.
Veja Também
- oci_connect() - Connect to an Oracle database
- oci_pconnect() - Connect to an Oracle database using a persistent connection