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.

ORA-12705 HATASI

ora-12705 cannot access nls data files or invalid environment specified hatası nls değerinizin hatalı olduğunu gösterir.
düzeltmek için  komut satırından regedit--HK_LOCAL_MACHİNE --SOFTWARE--ORACLE--KEY_oradb10g_home1--NLS_LANG  değerini kontrol ediniz ve geçerili bir değer giriniz.

ÖNEMLİ ; NLS_LANG değerini değiştirdiğinizde bu değişikliğin geçerli olması için veritabanını kapatıp tekrar açmamız gerek

17 Haziran 2011 Cuma

Oracle da kullanıcılar veritabanına baglanamiyoruz dediğinde...

veritabanina baglanamiyoruz denildiginde
-------------------------------------------
1) veritabani açik mi?

   sqlplus sys/oracle@orcl as sysdba ile baglan.

   connected to an idle instance mesaji görüyorsan,veritabanı kapalıdır.

   startup komutu ile baslat.

2) listener açik mi ?


   lsnrctl status yazarak kontrol et.

   hatalar döndürüyorsa,listener kapalıdır.

   lsnrctl start ile baslat.

Oracle Kapatma komutları

shutdown [normal]
   - yeni kullanicilar giremez.
   - mevcut kullanicilarin kendi istegiyle çikmasini bekler.
  
shutdown immediate
   - yeni kullanicilar giremez.
   - islemleri rollback yapip, mevcut kullanicilari atar.

shutdown transactional
   - yeni kullanicilar giremez.
   - çalisan islemlerin bitmesini bekleyip atar.

shutdown abort
   - yeni kullanicilar giremez.
   - hemen atar, datafile'larin güncellenmesini bile beklemez,
     commit edilmis veriler redo log dosyalarinda kalir.

DİKKAT ! shutdown abort ile kapatıldığında redo log dosyalarında veri kalır.Bu yüzden redo log dosyalarına zarar gelmesi durumunda veri kaybı yaşanabilir.Abort ile kapatıldığında redo log dosyalarının güvenliğinden emin olmalıyız.