31 Mayıs 2013 Cuma

ORA-28547 Hata Çözümü

Hata nedeni
------------------------------------
Windows 7 veya Xp işletim sistemlerinde oracle veritabanına bağlanırken yaşanan sorunlardan biridir.
Windows varsayılan kullanıcılarında Oracle Hizmetleri başarısız oluyor.

Çözüm 1:
Oracle servisini durdurduktan sonra
sqlnet.ora dosyasındaki SQLNET.AUTHENTICATION_SERVICES (NTS) tanımını
SQLNET.AUTHENTICATION_SERVICES (NONE). şekinde değiştirin.

Sonra Oracle servisini tekrar başlatın.

Oracle Servisine aşağıdaki gibi ulaşabilirsiniz.
- Bilgisayarınızda Başlat butonundan Çalıştır ekranını açıyorsunuz.(Kısayol Klavyede Başlat Düğmesi + R)
- Çalıştır ekranında "services.msc" yazıyorsunuz. Açılan pencerede OracleServiceORCL servisini bulup sağ tıkladıktan sonra "Durdur" diyorsunuz.
Not : OracleServiceORCL servisi sondaki ORCL değişkeni değişebilir.Bilgisayarızda Oracle Yüklenirken tanımladığınız servis ismidir.Oracle Express Edition kurarsanız servisi ismi OracleServiceXE olacaktır.


Çözüm 2:
Oracle Servisini başlatan kullanıcının değişmesi gerekir.Genellikle bilgisayarınız açılırken giriş yaptığınız Kullanıcı yetkilidir.Kullanıcı Hesaplarında başka bir kullanıcı tanımı yapınız. Örneğin X kullanıcısı.

Bunu yapmak için
1. Çözüm 1'de tanımladığımız şekilde oracle servisine ulaşıyorsunuz. (OracleServiceORCL)
2.Servise sağ tıkladıktan sonra Oturum Açma sekmesini seçiyorsunuz.
Ekran "Aşağıdaki Hesap" seçeneğini seçiyorsunuz. Tanımladığınız X kullanıcısı seçip ona ait parolayı giriniz
ve tamam deyiniz.
3.Veritabanını durdurun. Aşağıdaki komut satırı gibi

C:\Users\Administrator> sqlplus / as sysdba
SQL> SHUTDOWN NORMAL
SQL> STARTUP
Sonra Oracle servisi durdurup tekrar başlatabiliriz.

29 Mayıs 2013 Çarşamba

ROWNUM kullanarak ORDER BY ile bir tablo sütunu güncelleme

update table outer
set outer.sira_id = (
    select sira from (
           select rowid as id, row_number() over (order by TARIH) sira  
           from table 
    ) inner 
    where inner.id = outer.rowid);

27 Mayıs 2013 Pazartesi

web.xml cluster ayarı

Web uygulamasını Proxy uygulama olarak kullanmak için , kendi web uygulamanızda web.xml içerisinde aşağıdaki gibi tanım yapabilirsiniz.
sunucu1:port =Yönlendirilecek 1.sunucu
sunucu2:port =Yönlendirilecek 2.sunucu



<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/j2ee" >
<servlet>
<servlet-name>HttpClusterServlet</servlet-name>
<servlet-class>weblogic.servlet.proxy.HttpClusterServlet</servlet-class>
<init-param>
<param-name>WebLogicCluster</param-name>
<param-value>sunucu1:port|sunucu2:port</param-value>
</init-param>

<init-param>
<param-name>verbose</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>DebugConfigInfo</param-name>
<param-value>ON</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>/*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>/.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>/.html</url-pattern>
</servlet-mapping>
</web-app>

26 Mayıs 2013 Pazar

ORA-02289 Hata Çözümü

ORA-02289 ---> Sequence bulunmadı hatasıdır.
Veya sequence ' i bulunduran şemada diğer
şemalara erişim hakkı verilmelidir.

Çözüm 1 : CREATE SEQUENCE testSequence
START WITH 1
MAXVALUE 999999999999999999999999999
MINVALUE 1
NOCYCLE
NOCACHE
NOORDER;

Çözüm 2 : GRANT SELECT ON semaismi.testSequence to baskasema;

1 Mayıs 2013 Çarşamba

Veri içeren tabloda kolon veri türünü değiştirmek

Aşağıdaki gibi bir tablo tanımı olsun.

create table test1
(
no number,
ad varchar2(20),
sira varchar2(100)
);


İçindeki değerler

no ad sira
1 deger1 3
2 deger2 1
3 deger3 2

Tablonun içinde yukarıdaki gibi değerler mevcut ise

ve 'sira' kolonunun veri türünü 'number'

olarak değiştirilirse

"ORA-01439: column to be modified must be empty to change datatype"

gibi hata alır.

Aşağıdaki sql sırası çalıştırılırsa sorun çözülür.


ALTER TABLE test1 ADD (sira2 NUMBER);

UPDATE test1 set sira2=sira;

ALTER TABLE test1 DROP COLUMN sira;

ALTER TABLE test1 RENAME COLUMN sira2 TO sira;