(PHP 5, 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
]]] )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.
username
The Oracle user name.
password
The password for username
.
connection_string
Contiene la Instancia Oracle a conectarse. Puede ser una » Cadena de fácil conexión, o un Nombre de Conexión del fichero tnsnames.ora, o del 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 Oracle a conectarse.
Para utilizar el método de conexión fácil de nomenclatura, PHP debe estar enlazado con Oracle con las librerias de cliente 10g o superiores. La cadena de fácil conexión para Oracle de 10g se usa de la siguiente forma: [//]host_name[:port][/service_name]. Con Oracle 11g, la sintaxis es: [//]host_name[:port][/service_name][:server_type][/instance_name]. Los nombres de servicio pueden encontrarse ejecuntado la utilidad de Oracle lsnrctl status en el servidor donde está la base de datos.
El fichero tnsnames.ora puede estar en la ruta de búsqueda de la red de Oracle, que incluye $ORACLE_HOME/network/admin y /etc. De forma alternativa define TNS_ADMIN para que $TNS_ADMIN/tnsnames.ora sea leído. Asegúrse que el dominio web tiene acceso de lectura al fichero.
character_set
Determina el juego de caracteres usado por las librerías cliente de Oracle. El juego de caracteres no tiene porque coinicidir con el que está definido en la base de datos. Si no coinicide, Oracle intentará hacer lo posible para convertir los datos en el juego de caracteres de la base de datos. Dependiendo del tipo de juego de caracteres que se este usando puede no dar resultados útiles. La conversión también añade sobrecarga en el tiempo.
Si no es especificado, las librerias
cliente de Oracle determinan el juego de caracteres desde
la variable global NLS_LANG
.
Pasar este parámetro puede reducir tiempo de conexión.
session_mode
Este
parámetro está disponible desde la versión PHP 5 (PECL OCI8 1.1) y acepta los
siguientes valores: OCI_DEFAULT
,
OCI_SYSOPER
y OCI_SYSDBA
.
Si cualquiera de OCI_SYSOPER
o
OCI_SYSDBA
son especificados, esta función intentará
establecer una conexión privilegiada con las credenciales exteriores.
Las conexiones privilegiadas están desactivadas por defecto. Para activarlas
tiene que establecer oci8.privileged_connect
a On.
En PHP 5.3 (PECL OCI8 1.3.4) se introdujo el modo valor
OCI_CRED_EXT
. Esto indica a Oracle usar
External o autenticación OS , que debe estar configurado en la
base de datos. La flag OCI_CRED_EXT
sólo puede ser usada
con el nombre de usuario "/" y la contraseña en blanco.
oci8.privileged_connect
puede que esté On o Off.
OCI_CRED_EXT
puede que esté en combinación con los modos
OCI_SYSOPER
o
OCI_SYSDBA
.
OCI_CRED_EXT
no está soportado en Windows por
razones de seguridad.
Returns a connection identifier or FALSE
on error.
The following demonstrates how you can separate connections.
Ejemplo #1 oci_new_connect() example
<?php
echo "<html><pre>";
$db = "";
$c1 = oci_connect("scott", "tiger", $db);
$c2 = oci_new_connect("scott", "tiger", $db);
function create_table($conn)
{
$stmt = oci_parse($conn, "create table scott.hallo (test
varchar2(64))");
oci_execute($stmt);
echo $conn . " created table\n\n";
}
function drop_table($conn)
{
$stmt = oci_parse($conn, "drop table scott.hallo");
oci_execute($stmt);
echo $conn . " dropped table\n\n";
}
function insert_data($conn)
{
$stmt = oci_parse($conn, "insert into scott.hallo
values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
oci_execute($stmt, OCI_DEFAULT);
echo $conn . " inserted hallo\n\n";
}
function delete_data($conn)
{
$stmt = oci_parse($conn, "delete from scott.hallo");
oci_execute($stmt, OCI_DEFAULT);
echo $conn . " deleted hallo\n\n";
}
function commit($conn)
{
oci_commit($conn);
echo $conn . " committed\n\n";
}
function rollback($conn)
{
oci_rollback($conn);
echo $conn . " rollback\n\n";
}
function select_data($conn)
{
$stmt = oci_parse($conn, "select * from scott.hallo");
oci_execute($stmt, OCI_DEFAULT);
echo $conn . "----selecting\n\n";
while (oci_fetch($stmt)) {
echo $conn . " <" . oci_result($stmt, "TEST") . ">\n\n";
}
echo $conn . "----done\n\n";
}
create_table($c1);
insert_data($c1);
select_data($c1);
select_data($c2);
rollback($c1);
select_data($c1);
select_data($c2);
insert_data($c2);
commit($c2);
select_data($c1);
delete_data($c1);
select_data($c1);
select_data($c2);
commit($c1);
select_data($c1);
select_data($c2);
drop_table($c1);
echo "</pre></html>";
?>
Nota:
In PHP versions before 5.0.0 you must use ocinlogon() instead. El nombre viejo de la función todavía puede ser utilizado en versiones actuales, sin embargo es obsoleto y no se recomienda.