A extensão oci8 oferece a você 3 diferentes funções para conectar ao Oracle. Isto para você usar a mais apropriada função para sua aplicação, e a informação nesta seção tem objetivo de ajudar a fazer um boa escolha.
Conectar a um servidor Oracle é uma razoavelmente grande operação, em termos de tempo que isto leva para completar. A função oci_pconnect() usa uma cache persistente de conexões que pode ser reusado para diferentes requisições. Isto significa que você irá normalmente somente fazer a conexão uma vez por processo php (ou processo filho do apache).
Se sua aplicação conecta ao Oracle usando um diferente conjunto de credenciais para cada usuário web, o cache persistente empregado por oci_pconnect() será pouco útil como o número de usuários concorrentes aumenta, pelo o ponto onde ele pode iniciar um efeito inversamente ao da performance de seu servidor Oracle devido a muitas conexões ociosas. Se sua aplicação é estruturada desta forma, é recomendado que esteja usando as definições de configuração oci8.max_persistent e oci8.persistent_timeout (estas irão dar a você controle sobre o tamanho do cache e tempo de vida e conexões persistentes) ou usar oci_connect() ao invés.
Ambas oci_connect() e oci_pconnect() usando um cache de conexão; se você fiz múltiplas chamadas para oci_connect(), usando os mesmo parâmetros, em um dado script, o segundo e subseqüêntes chamadas retornam o existente manipulador de conexão. O cache usado por oci_connect() é limpado no final da execução do script, ou quando você explicitamente fecha um manipulador de conexão. oci_pconnect() tem um comportamento similar, embora o cache seja mantido separadamente e sobreviva entre requisições.
Este recurso de cache é importamente lembrar, porque ele dá a aparência que os dois manipuladores não são transacionalmente isolados (eles são de fato o mesmo manipulador de conexão, então não há nenhum tipo de isolamento). Se sua aplicação precisa ter dois separados, conexões transacionalmente isoladas, você precisa usar oci_new_connect().
oci_new_connect() sempre cria uma nova conexão para o servidor Oracle, desconsiderando que outras conexões possa já existir. Aplicações de bastante tráfego web devem tentar evitar usar oci_new_connect(), especialmente na parte de negócias da aplicação.