Forum
Ben delphi ile
program yazıyorum.yıllardır Firebird veritabanı kullanıyorum.Şimdiye kadarda
bir sorun yaşamadım.Fakat firebird
veritabanı localde güzel fakat
uzak bağlantıda biraz yavaş...
Bu nedenle oracle 11g xe kısıtlı sürümü ile deneyim dedim.
Oracle veritabanına Delphi ve devart
( http://www.devart.com/odac/) firmasının odac komponenti ile bağlanıp veri
girebiliyorum.Tek bilgisayarda sorun yok..Fakat ana bilgisayara ikinci bir
terminalden veri girişi yapamıyorum bağlantı sorunu oluyor sebep nedir acaba..
Sorunun sebebinin tnsnames.ora veya listener.ora
dosyalarındaki bir ayar sorunu olduğunu düşünüyorum..
.
Teşekkür ederim.
tnsnames.ora
XE =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)(HOST = dtbsrv)(PORT = 1521))
(CONNECT_DATA =
(SERVER =
DEDICATED)
(SERVICE_NAME =
XE)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION =
RO)
)
)
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID =
CLRExtProc)
(PRESENTATION =
RO)
)
)
----------------------------------------------------------------
*********************************************************************
Selam;
dtbsrv ismini diğer makineden çözebiliyor mu ?
Örneğin;
ping dtbsrv
Dediğinde ping atabiliyormusun bunu denermisin. Eğer atamıyorsan tnsnames dosyasında dtbsrv yerine makinenin ip adresini yazıp dener misin ?
Birde Firewall ayarlarını kontrol etmelisin son olarak da bağlandığın makineden session kapatıp terminalden denermisin session kısıtımı var görelim.
Bağlanamadığın makineden;
tnsping dtbsrv
dediğinde sonuç olarak ne dönüyor ?
Teşekkürler
client makina ve ana bilgisayar olan iki makinada WINDOWS 7 yüklü..İki makinanın ip sini sabit verdim..
ağda birbirlerini görüyorlar..
ping dtbsrv komutu sonuç döndürüyor..
fakat tnsping dtbsrv komutunu deneyemedim.Çünkü client makineye oracle ile ilgili hiç bir şey kurmadım...
Sunucu makinada "oracle Stop " komutu ile durdur dedikten sonra bile tnames.ora ve listener.ora dosyasını değiştirmeye sistem izin vermedi..
Fakat bilgisyarımda birden faz işletim sistemi hardisklerime kurulu olduğu için diğer işletim sisteminden açıp bu dosyalardaki host bilgisini "dtbsrv" yi ip şeklinde 192.168.1.11" şeklinde değiştirdiğimde ve sistemi oracle yüklü olan harddiskten başlattığımda ise bu sefer oracle hiç çalışmadı tns hatası verdi..
Bende sistemi eski haline çevirmek zorunda kaldım.
Fakat yaptığım denemelerde 1.000.000 insert işlemini 12:31 saniyede gerçekleştirdim.
Bu ora dosyalarında host bilgisinin kolayca değişimi nasıl oluyor..Bu kadar zor olmaması lazım bu işlerin..tahminimce..
Selam;
Değiştirememen Windows güvenliğinden ya da Kullanıcını denetiminin açık olmasından kaynaklanıyor. Çünkü Oracle servisleri açık olsa da bunu değiştirmene izin vermesi gerekiyor. Ancak Windows güvenlik ayarı İşletim sistemi diskindeki dosyaları değiştirmene izin vermediği için sorun oluyordur. Bunun için Denetim Masasında kullanıcılar bölümünden Windows Kullanıcı denetimini en aşağı çekip restart ettikten sonra deneyebilirsin.
Insert yapabildiğinden bahsetmişsin yani çalıştı mı ?
Birde Oracle Client kurarak deneyebilirsin. Ancak makine 64 bit olsada uygulaman 32 bit ise 32 bit client kurup denemen gerekir.
Teşekkürler
1milyon kaydı random olarak delphide yazdığım programla oracle girdim.Program ana makinede çalışıyor clientda henüz çalışmıyor..
Benim program yazarken benimsediğim prensip olabildiğince sade bir kurulum yani sıfır kurulumdur.
Delphide bizim kullandığımız devart bileşenleride direct ulaşım diye bir şey var .Hiç bir dll ye ihtiyaç duymadan direkt bağlanmamıza imkan veriyor.
MYSQL veritabanıda kullanıyorum ondan da ana makineya sadece MYSQL veritabanı ve programın exe sini kuruyorum.Terminallere ise sadece ana makinede olan programın olduğu klasöre paylaşım verdikten sonra burdan bir programın exe sine kısayolla çalıştıyorum..
Oracle da da yapmak istediğim bu...
Sadece ana makineye Oracle kurmak.Yazacağım programın exe dosyasını ana bilgisayarda bir klasöre attıktan sonra client makinelere buraya paylaşım vermek 2001 yılından beri bu sistemi mysql de kullandım ve sorun yaşamadım.
Siz oracle uğraşan arkadaşlardan merak öğrenmek istediğim bilgi şu ...
1)Ana makineye oracle kurulduktan sonra ve modemden server bilgisayara sabit ip ve port(1521) ataması yapıldıktan sonra uzaktan bağlanlatılar için mutlaka client makineye oracle istemci gibi bir şey mi kurmak lazım veya oracle dış bağlantılar için açmak için bir komut filan mı kullanmak lazım..mysql bunları biliyorum fakat oracle ile bilgim sıfır sayılabilir..Benim kullandığım devart odac bileşeninde cilent kurmaya ihtiyaç yok.
Sadece deneme amaçlı oracle xe kurdum.Sitesinde oracle bağlanma ve veritabanı oluşturma programını(sqldeveloper-3.2.20.09.87) indirdim..O sayede veritabanı oluşturdum.Bir adetde autoinc no için sequence oluşturdum.Ve buna uygun bir triger yazdım.
2)ORacle için form develepor vardı onu bü ücretsiz sürümde de kullanabiliyor muyuz.. Kısacası form develepor ile hazırlayacağım java kodlu sayfaları webte kullanma imkanımız var mı?Bu imkan sadece ücretli kullanıcılar için mi var..
Yaptıkklarım hepsi aşağıda....
CREATE TABLE "VEDATPALA"."PERSONEL"
( "SIRANO" NUMBER NOT NULL ENABLE,
"ADI" VARCHAR2(20 BYTE),
"ADRESI" VARCHAR2(100 BYTE),
"BORCU" NUMBER(20,2),
"TARIH" DATE,
CONSTRAINT "PERSONEL_PK" PRIMARY KEY ("SIRANO")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ENABLE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;
CREATE OR REPLACE TRIGGER "VEDATPALA"."PERSONEL_INSERT_SIRANO"
BEFORE INSERT
ON VEDATPALA.PERSONEL
FOR EACH ROW
DECLARE
SIRANO number;
begin
IF :new.SIRANO IS NULL THEN
SELECT PERSONEL_SIRANO_SEQ.nextval INTO :new.SIRANO FROM DUAL;
END IF;
end;
/
ALTER TRIGGER "VEDATPALA"."PERSONEL_INSERT_SIRANO" ENABLE;
Selam;
Sen ana makine üzerinde bu companentler ve veritabanı kurulu olduğu için connection kurabiliyorsun. Ancak programı share ederek .exe tıkladığında çalıştırmak istediğinde ana makine üzerinde bulunan companentleri client makinede aramayacak mı ? Bunlar yoksa nasıl çalıştıracaksın ? Bir Oracle veritabanına bağlantı kurabilmek için Windows ODBC, ODAC, Oracle Client vb. veritabanına Access edecek araçlar olmadan nasıl erişeceksin ?
Dediğin mantıkta en makul çözüm şudur. Uygulamanı Web platformuna taşıyacaksın ve tüm herşeyi bir web arayüzünden ana makine üzerinden çalıştıracaksın en doğrusu bu. Yoksa sadece bir exe çift tıklayarak herşeyi ana makine üzerinden çalıştırmasını beklemek pek doğru bir teknoloji çözümü değil. ODAC bileşenleri ana makinede kurulu ve client bunları görmüyor nasıl bağlanacaksın ?
Oracle bağlantı kurabilmek için bu bileşenlerden birine client makinede sahip olmalısın veya Sunucu İstemci mantığında çalışacak bir uygulama yazmalısın.
Bunların içinde de önereceğim Web tabanlı bir uygulama yazıp bunu da Sunucu üzerinde deploy ederek client'ların buradan kullanmasını sağlaman olacaktır.
Teşekkürler.
Öncelikle cevap verdiğiniz ve ilgilendiğiniz için teşekkür ederim.
Devart firmasın forum kısmına da soru sordum bu konuyla ilgili cevap bekliyorum..
Fakat sizden öğrenmek istediğim şey hep oracle form builder ile kolayca web tabanlı veri girişi hazırlamak istemişimdir..
Oracle XE ile bunu yapabilme şansım var mı acaba...?
Oracle Form builder için ne kurmam lazım...
Selamlar;
Oracle Forms Developer ile derleyip Oracle Application Server ile public etmelisiniz. Bu biraz eski bir teknoloji o yüzden artık genelde Microsoft .NET ve IIS aracılığı ile derleyip public edilen uygulamalar yapılmaktadır. Linux platformu olacaksa PHP ve Apache de düşünülebilir. O yüzden bu iki teknolojiyi incelemenizi tavsiye ederim. Oracle Forms oldukça eski ve artık yavaş yavaş kalkacak bir teknolojidir. Bu araçlar ile geliştirdiğinizde arkada çalışan veritabanı Oracle XE olabilir. Herhangi bir sıkıntı olmayacaktır.
Teşekkürler
Client makineye hiç bir client program kurmadan ve yüklemeden ve hiç bir dll yüklemeden...
Sadece kendi yazdığım delphi programı ile bağlandım. Sorun ana makinedeki 1521 nol tcp portunun kapalı olmasından imiş.Bu portu açınca client makine sorunsuzca bağlandı.Böylece sıfır kurulumla oracle da veritabanında da bağlantı yapmış oldum.
Eminim başka sorunlarım oracle ile ilgili olacaktır.
Teşekkür ederim
Selam;
İlk gün verdiğim yanıtta "Birde Firewall ayarlarını kontrol etmelisin...." şeklinde yazmıştım. Hocam dikkate almamışsın 🙂
Geçmiş olsun. Problemin çözülmesine sevindim.
Teşekkürler.