oci_new_connect
(PHP 5, PECL OCI8 >= 1.1.0)
oci_new_connect — Connect to the Oracle server using a unique connection
Beschreibung
$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) oderORACLE_SIDum 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_LANGauszulesen.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_SYSOPERundOCI_SYSDBA. Falls entwederOCI_SYSOPERoderOCI_SYSDBAangegeben 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_EXTeingeführt. Dies konfiguriert Oracle dazu eine externe oder Os-Authentifizierung vorzunehmen, welche in der Datenbank konfiguriert werden muss. Der SchalterOCI_CRED_EXTkann nur mit dem Benutzernamen "/" und einem leeren Passwort verwendet werden. oci8.privileged_connect kann entweder On oder Off sein.OCI_CRED_EXTkann mitOCI_SYSOPERoderOCI_SYSDBAkombiniert werden.OCI_CRED_EXTist 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
// create table 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);
// Output is:
// Querying basic connection
// 1234
// Querying new connection
// No rows
// Querying new connection after commit
// 1234
?>
See oci_connect() for further examples of parameter usage.
Siehe auch
- oci_connect() - Connect to an Oracle database
- oci_pconnect() - Connect to an Oracle database using a persistent connection