5 Ekim 2013 Cumartesi


Oracle’ın Kaldırılması
Oracle kurulumunu gerçekleştirmeden önce, sistemimizde kurulu olan başka bir oracle kurulumunun olup olmaması veya öncesinde herhangi bir kurulum gerçekleştirilip sonrasında kaldırıldığını kontrol etmemiz gerekmektedir.Bu örnek Oracle 10g için yapılmış olup 11g de de benzer işlemleri yapmamız yeterli olacaktır.
Oracle’ın daha önce kurulup, kurulmadığını anlamak için; start/çalıştır/regedit yazıyoruz. 
Image
Şekil-1
Çıkan registry editor’de , HKEY_LOCAL_MACHİNE’nin altındaki ,SOFTWARE’in altında oracle varsa; ya oracle kuruludur, yada kurulup kaldırılmıştır. Bazen hem veritabanı kurulmuştur, hemde rapor geliştirmek için universal database tool gibi, ayrı bir tool kurulmuştur. Bu durumda birden fazla key klasörü olacaktır.
Oracle’ı kaldırmak için Başlat/Programlar/Oracle-OraDb10g_home1/Oracle Installation Products/Universal Installer çalıştırılır. Ayrıca apache server gibi yeni bir bölüm eklenecegi zaman veya kurulum yazılımlardan birisinin kalırılacagı zamanda universal installer üzerinden işlem yapılır.
Image
                                                                                               Şekil-2
Bilgisayarımızda Oracle kurulu olduğunu düşünelim ve Universal Installer’ı çalıştıralım.İlk olarak karşımıza dost promt ekranı cıkıcaktır, ardından karşımıza Universal Installer ekranı çıkacaktır.Bu ekranda Deinstall Products diyerek kaldırma işlemini başlatalım.
Image
Şekil-3
Image
Şekil-4
Karşımıza Inventory ekranı çıkacaktır,bu ekranda şekildeki gibi OraDb10g_home1 in seçili olmasına dikkat ederek remove diyoruz.Bizden son olarak alttaki şekildeki gibi kaldırma işlemi için onay isteyecektir ve bizde Yes diyerek işlemi başlatıyoruz.
Image
                                                                                               Şekil-5
Image
                                                                                                  Şekil-6
Yukarıdaki şekilde görüldüğü gibi Deinstall successful yazısı ile kaldırma işlemimiz sorunsuz gerçekleşmiştir.
Image
 Şekil-7
Inventory ekranında close’u seçerek işlemlerimizi tamamlıyoruz.
Image
 Şekil-8
Universal Installer ekranından cancel diyerek çıkıyoruz,bize çıkmak istediğimizden emin olup olmadığımızı sorucak biz buna evet diyerek sayfayı kapatıcaz, bunu sormasının sebebi ekranı kapatmadan yeni bir kurulum gerçekleştirebilmemizden kaynaklanıyor ama bizim kurulumu yapmadan önce gerçekleştirmemiz gereken bir kaç işlem daha var.
Şimdi oracle’ın kurulmuş olan dizindeki oracle klasörünü kaldırmamız gerekiyor. Ancak Windowsoracle/oracle product/10.0.0/db_1/B1N dizininin içindeki dll uzantlılı dosyaların silinmesine izin vermediği için uzantılarını xyz gibi rastgele degiştirerek silebiliriz. Ardından program files’ın altındaki oracle klasörü silinir. 
 Image
       Şekil-9
Sonrasında Başlat/run ‘dan regedit yazılarakHKEY_LOCAL_MACHINE/SOFTWARE/Oracle klasörü 
Image
                                                                                              Şekil-10
ve HKEY_LOCAL_MACHİNE/SYSTEM/CurrentControlSet/Services’da OracleJobSchedulerORCL ve  OracleServiceORCL klasörleri kaldırılır. Bazı durumlardaCurrentControlSet2’de olabilir. Bunun  altında ki oracle klasörüde kalabilir. Bununda kaldırılması gerekmektedir.
Controlset ‘lerde oracle klasörü kalırsa services’larda oracle girişi kalır. Bunları görmek içinbaşlat/run’da services.msc yazılır.
İşlemlerin tamamlanabilmesi için sistem restart edilir. Böylece uzantısı değişen dosyalarıda silerek işlemi tamamlarız.
Restart’tan hemen sonra;
Bilgisayarıma sağ tıklıyoruz. Advanced/Environment Variables,
(Vistada özellikler/gelişmiş sistem ayarları/gelişmiş/ortam değişkenleri)
Image
Şekil-11
açılan pencerede system variables kısmında oracle_home var. Bunun boşa çıktığını görüyoruz. Bunu silebiliriz. 
Image
                                                                                                   Şekil-12
2 satır altındaki path ; her yazılım kendi bin dizinini path’ın başına atmak istiyor. Dolayısıyla oracle’da atıyor. Bir daha kursaydık; C:\ORACLE\PRODUCT\10.2.0\DB_1\BIN  dizini tekrardan yazılacaktı. Bu sebepten dolayı path’ın uzun olmasına sebep olacaktı. Path’i kesinlikle silmiyoruz. Edit (Düzenle) diyoruz. İkinci kurulum ise en baştaki oracle bin dizinini siliyoruz. Aksi halde iki tane olacak. 
Image
                                                                                                         Şekil-13
Path’ın iki altındaki PERL5LIB’de siliyoruz. Bunuda oracle ekliyor.
Path için not: Yeni işletim sistemleri için gerekli olmasada ,win98’de 250 karakterden sonrasını girilemiyordu. 7 kere oracle kurulmuş olsa, 250 karakterin yaklaşık 230 unu oracle kaplar ve diğer hiçbir yazılımın bin dizini görülmez. Bundan dolayı komut satırında girilen her komutla tanınmıyor ifadesi çıkar.

6 Temmuz 2011 Çarşamba

Enterprise Manager recreate komutları

önce çalisip çalismadigini kontrol etmek için;

 -- emctl status dbconsole

''Environment variable ORACLE_SID not defined. Please define it.''
  yazabilir.ilk çalistirmada sid degerini girmemizi ister.

-- set oracle_sid=orcl

sid değerimizi yazariz.(linux da set yerine export yazılır).Ancak linux da büyük harflerle orcl vermissek büyük yazacagiz.

-- emctl stop dbconsole

sonra

-- emctl start dbconsole

diyerek çalistimaya çalisirz.düzelmezse yeniden yartmaliyiz.yeniden yaratmak için aşşağıdaki adımları uygularız.

EM repository recreate

-- recreate
emca -config dbcontrol db -repos recreate


recreate komutu hata verirse ayrı ayrı drop ve create komutlarını çalıştırırız. 

-- drop
emca -deconfig dbcontrol db -repos drop


-- create
emca -config dbcontrol db -repos create


-- hata verirse (sysman user already exists gibi) elle
-----------------------------------------------------
-- sys kullanicisi ile


sql> drop user sysman cascade;
sql> drop role mgmt_user;
sql> drop user mgmt_view cascade;
sql> drop public synonym MGMT_TARGET_BLACKOUTS;
sql> drop public synonym SETEMVIEWUSERCONTEXT;

3 Temmuz 2011 Pazar

Sorgu bazlı flashback

Örneğin biri geldi dedi ki,5dk önce deneme3 tablosundan bir kaydı sildim ama hangi kaydı sildim bilmiyorum.Bu durumda hangi kaydı sildiğini bulmak için sorgu bazlı flashback yapmak gerekir.

select * from deneme3

as of timestamp to_timestamp('03/07/2011 20:55','DD/MM/YYYY HH24:MI')

minus

select *from deneme3



eklenen satırı bulmak içinse tam tersini yazarız



select *from deneme3

minus

select * from deneme3

as of timestamp to_timestamp('03/07/2011 20:55','DD/MM/YYYY HH24:MI')



eksik olanı bulduktan sonra insert into tablo adı yazarsak silinmiş olan kaydı da geri eklemiş oluruz.


insert into deneme3

select * from deneme3

as of timestamp to_timestamp('03/07/2011 20:55','DD/MM/YYYY HH24:MI')

minus

select *from deneme3

28 Haziran 2011 Salı

Linux üzerine oracle10g kurulumu için gerekli parametreler


gedit /etc/sysctl.conf yazip açilan sayfanin sonuna bu parametreleri yaziyoruz.        
#kernel.shmall = 2097152
#kernel.shmmax = 2147483648
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
#fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
restart etmeden geçerli olmasi için de       
/sbin/sysctl -p komutunu yazariz.   
 
gedit  /etc/security/limits.conf yazip dosyanin sonuna bunlari ekliyoruz.       
 
 
*               soft    nproc   2047
*               hard    nproc   16384
*               soft    nofile  1024
*               hard    nofile  65536                      
                      
                     
                     
 
[root@centos5 ~]# gedit /etc/pam.d/login yazip çikan dosyanin sonuna ekliyoruz.        
 
session    required     pam_limits.so         
          
          
kurulumda disable yaptik ama yapmadiysak /etc/selinux/config         
SELINUX=disabled
 
oracle kurulumu gereken gruplarin yaratilmasi için bu komutlari
 yazip oracle kullanicisi için yeni sifre veriyoruz
ben rootla ayni sifeyi verdim.
 
groupadd oinstall
groupadd dba
groupadd oper

useradd -g oinstall -G dba oracle
passwd oracle
 
oracle in yerini veriyoruz
 
mkdir -p /oracle/product/10.2.0/db_1
chown -R oracle.oinstall /oracle
 
clientlara açmak için
 
xhost +
 
 
gedit /etc/redhat-release yazip
 
eskisini silip redhat-4 yazıyoruz
 
 
system menüsünden log out root diyip oracle kullanicisi ile login olup asaidaki islemleri yapiyoruz 
(çikis dediginizde takilirsa init 6 yazin).komut satirindan
[oracle@centos5 ~]$ gedit .bash_profile yazip açilan dosyanin sonuna aşağıdaki komutlari yaziyoruz.
oracle_sid niz neyse komutta ORACLE_SID kismina onu yazin ;
 
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P9; export NLS_LANG
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi
 
 
.bash_profile i enable etmek için bu komutu çalistiyoruz.
 
source ~/.bash_profile
 
 
bu işlemlerden sonra oracle kurulumuna başlayabiliriz.  

CENTOS5 ÜZERİNE ORACLE10G KURULUMU

[oracle@centos5 ~]$ ls
aaa.zip  database  Desktop
[oracle@centos5 ~]$ cd database
[oracle@centos5 database]$ ls
doc  install  response  runInstaller  stage  welcome.html
[oracle@centos5 database]$ ./runInstaller 



diyerek kurulum baslar.

Advenced seçeneğini seçiyoruz.

Default gelenleri değiştirmeden devam diyoruz.

İstediğimiz edition'ı seçiyoruz

Oracle'ın kurulacağı adresi ayarlıyorz.default olanı seçiyorum.

Network configuration konuusnda hata verebilir.Dikkatte almayıp next diyoruz.

Create database diyoruz

İstediğimiz database tipini seçiyoruz.

Tüm dilleri desteklemesini istiyorsak utf-8 i ayarlıyoruz.sample şemaların da olmasını istersen en alttaki seçeneği işaretliyoruz.

Use database control seçeniğini seçip next diyoruz.

Windows da alışık olduğum gibi olsun diye resimdeki adresi veriyorum.

Şuan ayarlamayı tercih etmiyorum.


    




Kullanıcı şifrelerini veriyorum.hepsine aynı şifreyi vermek için altki seçeneği tercih edip     veriyorum.                                     
İnstall diyoruz

Exit diyoruz.bu işlemden sonra yaklaşık 10-15dk'lık yükleme işlemi başlayacaktır.

Yükleme işlemi bitikten sonra bu ekran karşınıza çıkar.bu kısımda 2 script çalıştırmamızı ister.
[oracle@centos5 ~]$ su - root
Password: sorunca root şifresini giriyoruz.
[root@centos5 ~]# sh /oracle/oraInventory/orainstRoot.sh

 [root@centos5 ~]# /oracle/product/10.2.0/db_1/root.sh    
yazıp gelen seçeneğe enter diyip geçip bitiriyoruz.





Scriptlerin çalıştırılması


  
kurulumdan sonra root kulllanıcısına geçip ;

[oracle@centos5 ~]$ su - root
Password: root şifreni gir.
[root@centos5 ~]# gedit /etc/oratab   yazıp açılan dosyanın en sonuna


ORCL:oracle/product/10.2.0/db_1:Y    yazıyoruz
 
[root@centos5 ~]# gedit /etc/redhat-release   yazıp açılan dosyaya

CentOS release 5.3 (Final)              diyip eski haline çeviriyoruz.


18 Haziran 2011 Cumartesi

Oracle karakter set kodları

  • west european WE8MSWIN1252 amerikalıların kendi kodudur.oracle kurulurken default olarak bu seçili gelir.bu değerde ş,i,ğ gibi türkçe karakterleri depolayamayız.genelde ? işaretine çevirir.

  • Unicode standart UTF-8 AL32UTF8 içinde bütün dilleri barındırır.ancak ISO lara göre daha yavaştır.ufuk bir çevirme işleminden geçecektir.ancak gözle fark edilemeyecek kadar bir süredir bu.

  • Turkish WE8ISO8859P9 türkçe karakter setidir.

  • Turkish TR8MSWIN1254 ise 8859P9 a birkaç karakter eklenmiş halidir.ikiside seçilebilir.


Windows ortamında regedit --HKEY_LOCAL_MACHINE--software--oracle--KEY_ORADB10G_HOME1 altında NLS_LANG a çift tıklayıp   karakter setleri ayarlayabiliriz.Örneğin unicode standart ayarlamak istersek;
 AMERICAN_AMERICA. AL32UTF8 gireriz.




Önemli! veritabanımızda türkçe karakter set kullanacaksak ileride veritabanımızın başka bir dilde kullanılmayacağından emin olmamız gerekir.örneğin bir çağrı merkezi uygulaması yaptık.yöneticiler ruslarda giriş yapacak gerekli tedbirleri alın dediklerinde yapacak hiçbir şey yoktur.sadece türkçe ve ingilizce karakterler girilebilir.Yani ileride globallik ihtimali varsa UTF-8 seçilmelidir.

Possible charset conversion

Örneğin;client üzerinden serverdaki bir kullanıcını verilerini export ile alırken,client ile serverın nls_lang değerleri aynı değilse possible charset conversion yapar.yani client da nsl_lang değeri neyse karakterleri client ın nls_lang değerine çevirir.Bu durumda da türkçe karakterlerde bozulma olabilir.Bu durumun olmaması için client ın nls lang değerini server ile aynı yapıp export almak gerekir.

örneğin;
nls_lang değerimiz AMERICAN_AMERICA.WE8MSWIN1252 şeklinde ise export  alırken ş,ğ leri bozar.Bu yüzden AMERICAN_AMERICA.WE8ISO8859P9 yaparsak ş ve ğ harflerini kaybetmeyiz.
ilk restart ta geçerli olur.