Bu soruna neden olabilecek birkaç şey vardır, ancak JDBC'yi kullanmaya başlamadan önce, SQL * Plus kullanarak veritabanına bağlanabildiğinizden emin olmanız gerekir. SQL * Plus'ı bilmiyorsanız, Oracle'ın uzun süredir standart bir parçası olan Oracle veritabanlarına bağlanmak için bir komut satırı aracıdır ve Oracle XE ile birlikte gelir.
JDBC kullanarak bir Oracle veritabanına bağlanırken, veritabanına doğrudan bağlanamazsınız. Bunun yerine, sizi veritabanına bağlayan bir TNS dinleyicisine bağlanırsınız. Hata ORA-12505
, dinleyicinin açık olduğu ve ona bağlanabileceğiniz anlamına gelir, ancak veritabanının açık olduğunu bilmediği için sizi veritabanına bağlayamadı. Bunun iki nedeni var:
- veritabanı başlatılmadı,
- veritabanı dinleyiciye kayıtlı değildir, örneğin veritabanı dinleyiciden önce başlatıldığından. (Veritabanı başladığında, zaten çalışıyorsa kendisini bir dinleyiciye kaydeder. Dinleyici çalışmıyorsa, veritabanı kendisini kaydetmez ve dinleyici başlatılırsa, olabilecek veritabanlarını aramaz. kayıt olun.)
ORA-12505, dinleyicinin bu veritabanını bildiği anlamına gelir, ancak dinleyici veritabanından veritabanının açık olduğuna dair bir bildirim almaz. (Yanlış SID kullanarak yanlış veritabanına bağlanmaya çalışıyorsanız, "TNS: belirtilen bağlantı tanımlayıcısını çözemedi" şeklinde bir ORA-12154 hatası alırsınız.)
Hizmetler ek bileşeninde hangi Oracle hizmetleri çalışıyor? (Bunu Denetim Masası> Yönetimsel Araçlar> Hizmetler'den açın veya yalnızca Başlat> Çalıştır> services.msc
.) OracleServiceXE ve OracleXETNSListener hizmetlerinin çalışması gerekir.
Hizmetlerin her ikisi de başlatılmışsa, komut isteminde aşağıdakilerden birini kullanarak SQL * Plus'ta veritabanına bağlanabilir misiniz? (Bunları Oracle XE'yi yüklediğiniz makinede çalıştırdığınızı varsayıyorum.)
sqlplus sistem / sistem şifresi @XE
sqlplus sistem / sistem şifresi
sqlplus / sysdba olarak
( system-password
Oracle XE yüklemesi sırasında SYS ve SYSTEM kullanıcıları için belirlediğiniz parola ile değiştirin .)
Bu üçünden ilki TNS dinleyicisi aracılığıyla bağlanır, ancak ikincisi dinleyiciden geçmeden doğrudan veritabanına bağlanır ve yalnızca veritabanıyla aynı makinedeyseniz çalışır. Birincisi başarısız, ancak diğer ikisi başarılı olursa, JDBC bağlantıları da başarısız olur. Öyleyse, diğer ikisinden birini kullanarak veritabanına bağlanın ve çalıştırın ALTER SYSTEM REGISTER
. Ardından SQL * Plus'tan çıkın ve ilk formu tekrar deneyin.
Üçüncüsü başarısız, ancak ikincisi işe yarıyorsa, kullanıcı hesabınızı ora_dba grubuna ekleyin. Bunu Denetim Masası> Bilgisayar Yönetimi> Yerel Kullanıcılar ve Gruplar bölümünde yapın.
Bir kez formun bağlantılarını alabilirsiniz
sqlplus sistem / sistem şifresi @XE
Çalışmak için Oracle XE'ye JDBC aracılığıyla bağlanabilmelisiniz. (Bu arada, veritabanına bağlanmak için kullandığınız JDBC kodunu bize göstermediniz, ancak bunun büyük olasılıkla doğru olduğundan şüpheleniyorum; bağlantı dizesinin bölümleri yanlış olsaydı başka çeşitli hatalar olurdu.)