Vous êtes sur la page 1sur 13

Downloads

Documentation

Get Involved

Help

Search

ConFoo 2015 - Become a Master


Manual de PHP Referencia de funciones

oci_password_change

oci_result

Extensiones de bases de datos


Extensiones de bases de datos especficas del proveedor OCI8
Funciones de OCI8

oci_pconnect

Change language:

Spanish
Edit

Report a Bug

(PHP 5, PECL OCI8 >= 1.1.0)

oci_pconnect Conectar a una base de datos de Oracle usando una conexin


persistente

Descripcin
resource oci_pconnect ( string $username , string $password
[, string $connection_string [, string $character_set [, int
$session_mode ]]] )
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Crea una conexin persistente al servidor de Oracle y se identifica.


Las conexiones persistentes son almacenadas en cach y reutilizadas entre

peticiones, resultando en la reduccin de carga adicional en cada pgina; una


aplicacin tpica de PHP tendr una nica conexin persistente abierta a un

servidor de Oracle por cada proceso hijo de Apache (o proceso FastCGI/CGI de


PHP). Vase la seccin Conexiones persistentes a bases de datos para ms
informacin.

Parmetros
username
El nombre de usuario de Oracle.
password
La contrasea de username.
connection_string
Contiene la instancia de Oracle a la que conectarse. Puede ser una
cadena de Conexin Sencilla (Easy Connect), o un Nombre de

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

cadena de Conexin Sencilla (Easy Connect), o un Nombre de


Conexin 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 mtodo de nomenclatura de Conexin Sencila, PHP
debe estar vinculado con las bibliotecas cliente de Oracle 10g o

superiores. La cadena de Conexin 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 bsqueda 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 ledo. Asegrse que el demonio web tiene acceso de lectura al
fichero.

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

character_set
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, podra no

proporcionarse resultados tiles. La conversin tambin aade algo de


carga extra de tiempo.
Si no se especifica, las bibliotacas cliente de Oracle determinarn el
juego de caracteres desde la variable de entorno NLS_LANG.
Pasar este parmetro puede reducir el tiempo que toma en conectarse.
session_mode
Este parmetro est disponible desde la versin 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 funcin

intentar establecer una conexin privilegiada con las credenciales

externas. Las conexiones privilegiadas estn desactivadas por omisin.


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
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

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 autenticacin Externa

o del SO, la cual debe estar configurada en la base de datos. La


bandera OCI_CRED_EXT slo puede usarse con el nombre de usuario "/"
y la contrasea en blanco. oci8.privileged_connect podra ser On o Off.

OCI_CRED_EXT podra estar en combinacin con los modos OCI_SYSOPER

o OCI_SYSDBA.

OCI_CRED_EXT no se admite en Windows por razones de seguridad.

Valores devueltos
Devuelve un identificador de conexin, o FALSE en caso de error.

Ejemplos
Ejemplo #1 Ejemplo bsico de oci_pconnect() usando la sintaxis de Easy
Connect

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

<?php
// Conecta al servicio XE (esto es, una base de datos) en la mquina
"localhost"
$conn = oci_pconnect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ER
ROR);
}
$stid = oci_parse($conn, 'SELECT * FROM employees');
oci_execute($stid);
echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
echo "<tr>\n";
foreach ($row as $item) {
echo "

<td>" . ($item !== null ? htmlentities($item, ENT_

QUOTES) : "") . "</td>\n";


}
echo "</tr>\n";
}
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

echo "</table>\n";
?>

Vase oci_connect() para ms ejemplos de uso de parmetros.

Notas
Nota: Desde PHP 5.1.2 y PECL OCI8 1.1, el tiempo de vida y el nmero

mximo de conexiones persistentes a Oracle por proceso de PHP se puede


ajustar estableciendo los siguientes valores de configuracin:
oci8.persistent_timeout, oci8.ping_interval y oci8.max_persistent.

Ver tambin
oci_connect() - Conecta a una base de datos de Oracle

oci_new_connect() - Conectar al servidor de Oracle usando una conexin


nica
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

User Contributed Notes


up 1

down

2 notes

add a note

php at jaggard dot org dot uk

6 years
ago

[Editor's note: OCI8 1.3 should not experience the problem

described in this user comment. The first use of such a connection


will return an Oracle error which will trigger a cleanup in PHP.
Subsequent persistent connection calls will then succeed.

For high

availability you might consider doing consecutive oci_pconnect calls


in your script.]
If you connect using oci_pconnect and the connection has logged you
off but is still valid, there seems to be no way to re-use that
connection. The next time I try oci_pconnect and then perform an
oci_execute operation, I get a "ORA-01012: not logged on" warning.
This problem remains, even if I close the connection using
oci_close. I ended up with the following (rather annoying) code.
<?php
function getOracleConnection()
{
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

if (!function_exists('oci_pconnect'))
return false;
$toReturn = oci_pconnect('user', 'pass', 'db');
if ($testRes = @oci_parse($toReturn, 'SELECT
Count(group_type_code) FROM pvo.group_type'))
if (@oci_execute($testRes))
if (@oci_fetch_array($testRes))
return $toReturn;
oci_close($toReturn);
if (!function_exists('oci_connect'))
return false;
$toReturn = oci_connect('user', 'pass', 'db');
if ($testRes = @oci_parse($toReturn, 'SELECT
Count(group_type_code) FROM pvo.group_type'))
if (@oci_execute($testRes))
if (@oci_fetch_array($testRes))
return $toReturn;
oci_close($toReturn);
if (!function_exists('oci_new_connect'))
return false;
$toReturn = oci_new_connect('user', 'pass', 'db');
if ($testRes = @oci_parse($toReturn, 'SELECT
Count(group_type_code) FROM pvo.group_type'))
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

if (@oci_execute($testRes))
if (@oci_fetch_array($testRes))
return $toReturn;
oci_close($toReturn);
return false;
}
?>

up -1

down

gotankersley at NOSPAM dot com

2 years

Installed on CentOS 6.2, and had lots of trouble getting it


to recognize tnsnames.ora.

ago

The fix for me was:

1. Make sure apache is getting the TNS_ADMIN env variable by putting


it in the /etc/init.d/httpd file:
TNS_ADMIN=/usr/lib/oracle/11.2/client64/network/admin
export PATH TNS_ADMIN
This can be debugging in PHP by <?php echo system('env'); ?> and by
verifying that TNS_ADMIN is there.
2. Make sure to use the name at the beginning of the tnsnames.ora
file - not the SID (although ideally they should match.
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

However, if
pdfcrowd.com

the name at the beginning is XXXX.world then pconnect will expect


this - not the SID)

add a note

Funciones de OCI8
oci_bind_array_by_name
oci_bind_by_name
oci_cancel
oci_client_version
oci_close
oci_commit
oci_connect
oci_define_by_name
oci_error
oci_execute
oci_fetch_all
oci_fetch_array
oci_fetch_assoc
oci_fetch_object
oci_fetch_row
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

oci_fetch
oci_field_is_null
oci_field_name
oci_field_precision
oci_field_s cale
oci_field_s ize
oci_field_type_raw
oci_field_type
oci_free_descriptor
oci_free_s tatement
oci_get_implicit_resultset
oci_internal_debug
oci_lob_copy
oci_lob_is_equal
oci_new_collection
oci_new_connect
oci_new_cursor
oci_new_descriptor
oci_num_fields
oci_num_rows
oci_parse
oci_password_change
oci_pconnect
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

oci_result
oci_rollback
oci_s erver_version
oci_s et_action
oci_s et_client_identifier
oci_s et_client_info
oci_s et_edition
oci_s et_module_name
oci_s et_prefetch
oci_s tatement_type

Copyright 2001-2015 The PHP Group

My PHP.net

Contact

Other PHP.net sites

Mirror sites

Privacy policy

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Vous aimerez peut-être aussi