Centos ile oracle veri tabanına bağlantı yapabilmek için öncelikle centos işletim sistemine bir php uzantısı olan OCI8 eklenmesi gerekir. Php ile oracle veritabanına erişim sağlayabilmek için Oracle Instant Client arşivini kurmak gerekir. Bu arşivleri kurduktan sonra oci8 uzantısı pecl ile kurulur. Pecl uzantısı, centos kurulumunda özel ayarlamalar yapmadıysanız centos ile birlikte gelmektedir. Pecl kurulu ise kurulum için aşağıdaki adımları uygulayın.
İlk olarak kütüphane kurulumu için rpm dosyalarını sunucuya yüklemeniz gerekir. Rpm dosyalarına bu sayfadan ya da aşağıdaki bağlantıdan ulaşabilirsiniz.
Instant Client Basic RPM
- Instant Client Basic paketi, OCI, OCCI ve JDBC-OCI uygulamalarının çalışması için gereken tüm dosyaları içerir.
wget https://get.kadirhanoglu.com/rpm/oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
Instant Client SDK RPM
- Instant Client SDK paketi, geliştiriciler için ek olarak üst bilgi dosyaları ve örnek makefile dosyalarını içerir.
wget https://get.kadirhanoglu.com/rpm/oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
RPM dosyalarının kurulumu için dosyaları çektiğiniz dizinde aşağıdaki komutları uygulayarak rpm dosyalarını sunucuya yüklüyoruz. 100% olarak kurulum tamamlanıncaya kadar bekleyin. ( En fazla 2 dk )
rpm -Uvh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
rpm -Uvh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
RPM dosyaları kurulduktan sonra kütüphane yolunu sistem profiline ekliyoruz.
vim ~/.bash_profile
Profil dosyasını vi ile açtıktan sonra, PATH=$PATH:$HOME/bin satırının üzerine aşağıdaki yolları ekleyin.
ORACLE_HOME=/usr/lib/oracle/12.1/client64;
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
Düzenleme sonrası dosyanın olması gereken hali aşağıdaki gibidir.
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
ORACLE_HOME=/usr/lib/oracle/12.1/client64;
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
PATH=$PATH:$HOME/bin
export PATH
Burada dikkat edilmesi gereken konu, eğer işletim sistemi 32 bit ise kodlarda yer alan client64 klasörünün adı client olmalıdır. Aksi takdirde yolu göremez ve oracle bağlantısı sağlanamaz.
Dosyayı kaydedip kapattıktan sonra web sunucusunu yeniden başlatın.
service httpd restart
OCI8 Uzantısının Kurulumu
Son olarak gerekli olan oracle kütüphanesi kurulduktan sonra oci8 uzantısını pecl ile kurarak aktif hale getiriyoruz.
pecl install oci8
ya da bu bağlantıdaki son stable versiyon numarasına göre aşağıdaki komut satırını uygulayabilirsiniz.
pecl install oci8-2.0.10
Kurulum sırasında size Oracle Instant Client kütüphanesinin yolunu soracaktır.
Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] :
Buraya kütüphane yolunu girdikten sonra enter tuşuna basıp geçiyoruz.
Girilecek olan kütüphane yolu
instantclient,/usr/lib/oracle/12.1/client64/lib
TNS ile Uzak Oracle Sunucusuna Bağlantı
Uzakta olan oracle veri tabanı sunucusuna bağlantı yapabilmek için tns admin bilgilerine sahip olmanız gerekir. Bu bilgiler, uzak sunucu adresi ya da ip'si, srid, ve port bilgileridir.
Örnek tnsnames.ora;
KADIR =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 33005))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = KADIR)
)
)
tnsnames.ora dosyasını centos üzerinde oluşturacağınız dizin etc olmalıdır. usr klasörü altında bulunan oracle dizini içinde oluşurursanız, dizin yetkileri nedeniyle burada çalışmama durumu söz konusudur.
etc Klasörüne geçiş yapıyoruz.
cd /etc
tnsnames.ora dosyasını oluşturuyoruz.
vi tnsnames.ora
Bilgileri olması gerektiği gibi düzenledikten sonra gerekli kodları yapıştırıyoruz.
KADIR =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 33005))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = KADIR)
)
)
Dosyayı kaydedip çıkın.
Tekrar profil dosyasını düzenliyoruz. Burada tnsnames.ora dosyasının yolunu gösteriyoruz.
vim ~/.bash_profile
TNS_ADMIN satırını profil dosyasında bulunan oracle dizinlerinin altına ekleyip dosyayı kaydettikten sonra çıkıyoruz.
TNS_ADMIN=/etc
Tekrar web sunucusunu başlatarak kontrolleri sağlıyoruz.
service httpd restart