sql >> Database >  >> RDS >> Oracle

Hoe installeer ik oracle instantclient en pdo_oci op ubuntu-machine?

Het antwoord is een replicatie van dit artikel (in het Russisch) dat op zijn beurt is gebaseerd op dit bericht met enkele correcties. Na een aantal dagen vruchteloos zoeken werkte het probleemloos voor mij.

Vereisten:

U zou beheerdersrechten moeten hebben

Je zou php5 moeten hebben geïnstalleerd met de volgende pakketten:

sudo apt-get install php5 php5-dev php-pear php5-cli
sudo pecl install pdo

U zou de bibliotheek libaio1 moeten hebben geïnstalleerd:

sudo apt-get install libaio1

Installatie van Oracle Instant Client

Download Oracle Instant Client voor uw processorarchitectuur en besturingssysteem vanaf de Oracle-website (oracle.com/technetwork/database/features/instant-client/index-097480.html).

Voor Linux zijn er 2 opties voor instant client:RPM-pakket voor Linux, CentOS, Fedora, Red Hat Enterprise Linux, Mandriva Linux, SUSE Linux, enz. ZIP-archief - voor alle andere die RPM niet ondersteunen.

Er zijn 2 bestanden om te downloaden:

instantclient-basic — Oracle instant client zelf

instantclient-sdk — set bibliotheken voor applicatie-ontwikkeling

Directory maken voor Oracle instant client ( /opt directory gereserveerd voor software-extensies is geschikt voor dit doel):

sudo mkdir -p /opt/oracle/

Verplaats gedownloade bestanden naar /opt/oracle en ga naar de doelmap (ervan uitgaande dat je "zip"-archieven hebt gedownload naar de map "downloads" van je gebruiker):

sudo mv ~/downloads/instantclient-*.zip /opt/oracle/
cd /opt/oracle/

Gedownloade archieven uitpakken:

sudo unzip instantclient-basic-*-*.zip
sudo unzip instantclient-sdk-*-*.zip

Eindelijk hebben we instantclient_11_2 directory aangemaakt in /opt/oracle voor Oracle instant-client 11.2.0.2.0. Hernoem deze map naar instantclient (let op versienummer) en schakel ernaar:

sudo mv instantclient_11_2 instantclient
cd instantclient

Vervolgens moeten we verschillende extra mappen en symbolische links maken (let op het versienummer):

sudo ln -s /opt/oracle/instantclient/libclntsh.so.* /opt/oracle/instantclient/libclntsh.so
sudo ln -s /opt/oracle/instantclient/libocci.so.* /opt/oracle/instantclient/libocci.so
sudo ln -s /opt/oracle/instantclient/ /opt/oracle/instantclient/lib

sudo mkdir -p include/oracle/11.2/
cd include/oracle/11.2/
sudo ln -s ../../../sdk/include client
cd -

sudo mkdir -p lib/oracle/11.2/client
cd lib/oracle/11.2/client
sudo ln -s ../../../ lib
cd -

Maak een configuratiebestand aan met de naam van de directory waarin de Oracle instant-clientbibliotheken moeten worden gezocht en schakel dit in:

echo /opt/oracle/instantclient/ | sudo tee -a /etc/ld.so.conf.d/oracle.conf
sudo ldconfig

Voor zover er geen directory is /usr/include/php in Ubuntu, maar de client zoekt er nog steeds naar, we zullen een symlink maken naar het equivalent ervan - php5:

sudo ln -s /usr/include/php5 /usr/include/php

Installatie van OCI8

Na eerdere acties is de oci8-extensie geïnstalleerd met pecl commando:

sudo pecl install oci8

u wordt gevraagd om het pad naar de Oracle Instant Client, antwoord met:

instantclient,/opt/oracle/instantclient

Extensie-verbindingsbestand maken:

echo "; configuration for php oci8 module" | sudo tee /etc/php5/conf.d/oci8.ini
echo extension=oci8.so | sudo tee -a /etc/php5/conf.d/oci8.ini

Installatie van PDO_OCI

Download voor de installatie van PDO_OCI het van de peer-repository (pear.php.net).

Lijst met perenpakketten bijwerken:

sudo pecl channel-update pear.php.net

Download en plaats archief in tijdelijke map:

sudo mkdir -p /tmp/pear/download/
cd /tmp/pear/download/
sudo pecl download pdo_oci

Archiefinhoud uitpakken:

sudo tar xvf PDO_OCI*.tgz
cd PDO_OCI*

Hier moeten we config.m4 wijzigen bestand omdat het geen informatie bevat over onze versie van Oracle Instant Client. Open het bestand en voeg wijzigingen toe die zijn gemarkeerd met "+" (let op versienummer):

sudo vim config.m4

Hieronder staat de diff van 2 bestanden:

***************
*** 7,12 ****
--- 7,14 ----
if test -s "$PDO_OCI_DIR/orainst/unix.rgs"; then
PDO_OCI_VERSION=`grep '"ocommon"' $PDO_OCI_DIR/orainst/unix.rgs | sed 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4`
test -z "$PDO_OCI_VERSION" && PDO_OCI_VERSION=7.3
+ elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then
+ PDO_OCI_VERSION=11.2
elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.10.1; then
PDO_OCI_VERSION=10.1 
elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.9.0; then
***************
*** 119,124 ****
--- 121,129 ----
10.2)
PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
;;
+ 11.2)
+ PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
+ ;;
*)
AC_MSG_ERROR(Unsupported Oracle version! $PDO_OCI_VERSION)
;;
***************

Omgeving voorbereiden voor php-extensie met phpize (php.net/manual/ru/install.pecl.phpize.php) commando:

sudo phpize

Pakketinstallatieprogramma configureren en pakket installeren (let op versienummer):

sudo ./configure --with-pdo-oci=instantclient,/opt/oracle/instantclient/,11.2
sudo make
sudo make install

Maak er een verbindingsbestand voor:

echo "; configuration for php PDO_OCI module" | sudo tee /etc/php5/conf.d/pdo_oci.ini
echo extension=pdo_oci.so | sudo tee -a /etc/php5/conf.d/pdo_oci.ini

Start apache opnieuw en controleer of extensies zijn geïnstalleerd:

sudo /etc/init.d/apache2 restart
php -m


  1. Hoe geen duplicaten in SQL te tonen

  2. ODBC-oproep mislukt met opgeslagen procedure - Doorzoek query

  3. Genereer een integer-reeks in MySQL

  4. MySQL-clienttoepassingen gebruiken