PHP Doku:: Connect to the Oracle server using a unique connection - function.oci-new-connect.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzDatenbankerweiterungenAnbieterspezifische DatenbankerweiterungenOracle OCI8OCI8 Funktionenoci_new_connect

Ein Service von Reinhard Neidl - Webprogrammierung.

OCI8 Funktionen

<<oci_new_collection

oci_new_cursor>>

oci_new_connect

(PHP 5, PECL OCI8 >= 1.1.0)

oci_new_connectConnect to the Oracle server using a unique connection

Beschreibung

resource oci_new_connect ( string $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.

Parameter-Liste

username

The Oracle user name.

password

The password for username.

connection_string

Beinhaltet die Oracle-Instanz, mit der verbunden werden soll. Dies kann eine » Easy Connect Zeichenkette, ein Connect-Name aus der Datei tnsnames.ora oder der Name einer lokalen Oracle-Instanz sein.

Wenn dies nicht angegebe wird, verwendet PHP Umgebungsvariablen wie TWO_TASK (unter Linux), LOCAL (unter Windows) oder ORACLE_SID um die Oracle-Instanz mit der verbunden werden soll zu ermitteln.

Um die benannte Easy Connect Methode zu verwenden, muss PHP gegen die Clientbibliotheken von Oracle 10g oder höher gelinkt sein. Die Easy Connect Zeichenfolge für Oracle 10g hat den Aufbau: [//]host_name[:port][/service_name]. Für Oracle 11g ist die Syntax: [//]host_name[:port][/service_name][:server_type][/instance_name]. Service name kann bestimmt werden, indem man das Oracle-Hilfswerkzeug lsnrctl status auf dem Datenbankserver ausführt.

Die Datei tnsnames.ora kann sich im Oracle Net Suchpfad befinden, welcher $ORACLE_HOME/network/admin sowie /etc beinhaltet. Alternativ kann TNS_ADMIN auf einen Wert gesetzt werden, damit $TNS_ADMIN/tnsnames.ora gelesen wird. Es muss sichergestellt sein, dass der Webserver Leseberechtigung für die Datei besitzt.

character_set

Bestimmt den Zeichensatz, der von den Oracle Client Bibliotheken verwendet wird. Dieser Zeichensatz muss nicht dem von der Datenbank verwendeten Zeichensatz entsprechen. Wenn diese nicht übereinstimmen, wird Oracle bestmöglich versuchen, die Daten in den Datenbankzeichensatz zu übersetzen. Abhängig von den Zeichensätzen kann dies zu unbrauchbaren Ergebnissen führen. Diese Konvertierung führt auch zu einem erhöhten Zeitbedarf.

Falls nicht angegeben, werden die Oracle Client Bibliotheken versuchen, den Zeichensatz aus der Umgebungsvariablen NLS_LANG auszulesen.

Die Übergabe dieses Parameters verringert die Zeit für den verbindungsaufbau.

session_mode

Dieser Parameter ist seit PHP 5 (PECL OCI8 1.1) verfügbar und akzeptiert die folgenden Werte: OCI_DEFAULT, OCI_SYSOPER und OCI_SYSDBA. Falls entweder OCI_SYSOPER oder OCI_SYSDBA angegeben wurden wird diese Funktion versuchen die priviligierte Verbindung mit externen Credentials aufzubauen. Um diese einzuschalten muss man oci8.privileged_connect auf On setzen.

PHP 5.3 (PECL OCI8 1.3.4) hat den Wert OCI_CRED_EXT eingeführt. Dies konfiguriert Oracle dazu eine externe oder Os-Authentifizierung vorzunehmen, welche in der Datenbank konfiguriert werden muss. Der Schalter OCI_CRED_EXT kann nur mit dem Benutzernamen "/" und einem leeren Passwort verwendet werden. oci8.privileged_connect kann entweder On oder Off sein.

OCI_CRED_EXT kann mit OCI_SYSOPER oder OCI_SYSDBA kombiniert werden.

OCI_CRED_EXT ist auf Windows-Systemen aus sicherheitsgründen nicht unterstützt.

Rückgabewerte

Returns a connection identifier or FALSE on error.

Beispiele

The following demonstrates how you can separate connections.

Beispiel #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($stmtOCI_DEFAULT);
  echo 
$conn " inserted hallo\n\n";
}

function 
delete_data($conn)
{
  
$stmt oci_parse($conn"delete from scott.hallo");
  
oci_execute($stmtOCI_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($stmtOCI_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>";
?>

Anmerkungen

Hinweis:

In PHP versions before 5.0.0 you must use ocinlogon() instead. Der alte Funktionsname kann noch immer verwendet werden, dies ist jedoch veraltet und wird nicht empfohlen.

Siehe auch


Keine BenutzerBeiträge.
- Beiträge aktualisieren...



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)