(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_new_connect — Conexión al servidor Oracle utilizando una sola conexión
$username
,$password
,$connection_string
= null
,$encoding
= "",$session_mode
= OCI_DEFAULT
Establece una nueva conexión al servidor Oracle e identifica.
A diferencia de las funciones oci_connect() y oci_pconnect(), oci_new_connect() no almacena en caché las conexiones y siempre devuelve un manejador de conexión recién abierto. Esto es muy útil si la aplicación necesita aislamiento transaccional entre dos conjuntos de consultas.
username
El nombre de usuario de Oracle.
password
La contraseña para el usuario.
connection_string
Contiene
la instancia de Oracle
a la que conectarse. Puede ser
una » cadena de Conexión
Sencilla (Easy Connect), o un Nombre de Conexión del
fichero tnsnames.ora, o el nombre de una
instancia local de Oracle.
Si no se especifica, PHP utiliza
variables de entorno como TWO_TASK
(en Linux)
o LOCAL
(en Windows)
y ORACLE_SID
para determinar la
instancia de Oracle
a la que conectarse.
Para utilizar el método de nomenclatura de Conexión Sencila, PHP debe estar vinculado con
las bibliotecas cliente de Oracle 10g o superiores. La cadena de Conexión Sencilla para Oracle
10g se utiliza de la siguiente forma:
[//]nombre_host[:puerto][/nombre_servicio]. Desde Oracle
11g, la sintaxis es:
[//]nombre_host[:puerto][/nombre_servicio][:tipo_servicio][/nombre_instancia].
Los nombres de servicio pueden encontrarse ejecuntado la utilidad de Oracle
lsnrctl status
en el servidor donde se encuentra
la base de datos.
El fichero tnsnames.ora puede estar en la ruta de búsqueda de
Oracle Net, la cual
incluye $ORACLE_HOME/network/admin
y /etc. De forma alternativa,
establezca TNS_ADMIN
para
que $TNS_ADMIN/tnsnames.ora sea leído. Asegúrse
que el demonio web tiene acceso de lectura al fichero.
encoding
Determina el juego de caracteres usado por las bibliotecas cliente de Oracle. El juego de caracteres no tiene por que coinicidir con el utilizado en la base de datos. Si no coinicide, Oracle intentará hacer lo posible para convertir los datos entre los dos juegos de caracteres. Dependiendo del juego de caracteres que se esté usando, podría no proporcionarse resultados útiles. La conversión también añade algo de carga extra de tiempo.
Si no se especifica, las
bibliotacas cliente de Oracle determinarán el juego de caracteres desde
la variable de entorno NLS_LANG
.
Pasar este parámetro puede reducir el tiempo que toma en conectarse.
session_mode
Este
parámetro está disponible desde la versión 5 de PHP (PECL OCI8 1.1) y acepta los
siguientes valores: OCI_DEFAULT
,
OCI_SYSOPER
y OCI_SYSDBA
.
Si se especifica OCI_SYSOPER
o
OCI_SYSDBA
, esta función intentará
establecer una conexión privilegiada con las credenciales externas.
Las conexiones privilegiadas están desactivadas por omisión. Para activarlas
hay que establecer oci8.privileged_connect
a On
.
En PHP 5.3 (PECL OCI8 1.3.4) se introdujo el valor de modo
OCI_CRED_EXT
. Esto indica a Oracle que utilice
la autenticación Externa o del SO, la cual debe estar configurada en la
base de datos. La bandera OCI_CRED_EXT
sólo puede usarse
con el nombre de usuario "/" y la contraseña en blanco.
oci8.privileged_connect
podría ser On
o Off
.
OCI_CRED_EXT
podría estar en combinación con los modos
OCI_SYSOPER
o
OCI_SYSDBA
.
OCI_CRED_EXT
no se admite en Windows por
razones de seguridad.
Devuelve un identificador de conexión, o false
si ocurre un error.
Versión | Descripción |
---|---|
8.0.0, PECL OCI8 3.0.0 |
connection_string ahora es nullable.
|
A continuación se muestra cómo separar transacciones.
Ejemplo #1 Ejemplo con oci_new_connect()
<?php
// Creación de la tabla 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);
// Muestra:
// Querying basic connection
// 1234
// Querying new connection
// No rows
// Querying new connection after commit
// 1234
?>
Ver la función oci_connect() para más ejemplos sobre el uso de este parámetro.