Menu

14 Kasım 2011 Pazartesi

DATAGUARD

Oracle Data Guard Kavramları, Kurulum ve Yönetimi

Oracle Data Guard , Oracle’da yüksek erişilebilirlik ve beklenmeyen sistem hataları neticesinde oluşabilecek veri kayıplarını en aza hatta sıfıra indiren oracle veritabanı ile bütünleşik bir veri koruma eklentisidir. Oracle enterprise sürümü gerektirir.Bütünleşiktir, ek kurulum gerektirmez. Veri tabanı hizmeti veren birincil sisteme (Primary) ek olarak bir veya daha fazla yedek (Secondary) sistem veya sistemlerin eş zamanlı veya eş zamanlı olmayan şekilde eşleştirilmesi prensibiyle çalışır. Çalışma prensibi , birincil veritabanında oluşan arşivlenmiş geridönüş loglarının (Archived Redo Logs) ikincil veritabanına aktarılması ve bu logların iki farklı yöntemle ikincil veritabına işlenmesine dayanır. Logların ikincil veritabanına işlenmesi yöntemi eşitlemenin fiziksel(Physical) mi mantıksal(Logical) mı olduğunu belirler. bu iki farklı işletim temel farklılıklar getirir. Sistemler birbirleriyle “Oracle Net” ile haberleşirler. Sistemler aynı ortamda veya uzak mesefalerde olabilirler. Sistemlerin yerleşimleri ile ilgili bir kısıtlama yoktur.




Fiziksel Bekleme Veritabanı (Physical Standby Database) : Birincil veritabanın birebir kopyasının ikincil veritabanında tutulmasıdır. İkincil veritabanı birincil veritabanın birebir kopyası olarak hazırlanır, birincil veritabanında oluşan arşiv geridönüşüm loglarının ikincil veritabanına uygulanması ile eşitlik sağlanmış olur. Fiziksel Bekleme Veritabanları açık veritabanları değillerdir. Startup Mount komutu ile açılırlar. birincil veritabanından gelen loglar Veritabanı Kurtarma(Database Recover) mantığıyla ikincil veritabanına işlenir. İstenirse ikincil vertabanı salt-okunur olarak açılabilir, fakat bu süre zarfında loglar işlenmez, biriktirilir. Tekrar işleme moduna alınarak logların işlenmesine devam edilebilir. Fiziksel Bekleme Veritabanları çoğunlukla felaket durumda kurtarma(disaster recovery) amaçlı olarak kullanılırlar. Felaket durumunda birincil veritabanının yerine geçecek olan veritabanı budur. böylece veri kaybı olmadan ve süre kaybetmeden kurtarım yapılmış olur.
Mantıksal Bekleme Veritabanı (Logical Standby Database) : Birincil veritabanının mantıksal olarak bir kopyasıdır, yani tablolar ve indexler gibi nesneler aynıdır fakat datafile dosyalarının düzeni farklılık gösterebilir. Birincil veritabanından gelen loglar SQL cümleciklerine çevrilerek işlenirler. Veritabanı açıktır, yani veritabanı üzerinde raporlama işlemleri yapılabilmektedir.Mantıksal veritabanına ait birtakım kısıtlamalar vardır. Bazı veri tipleri desteklenmemetedir. Ayrıca sistemdeki eşleşecek tabloların birincil anahtar indeksinin olması gerekmektedir. Oluşturulan SQL cümlecikler bu birincil anahtarlar kullanılarak işlenmektedir. Mantıksal veritabanları hem yedekleme için kullanılırlar hem de açık veritabanı oldukları için raporlama gibi işlemlerde de kullanılırlar. Böylece birincil veritabanının üzerinden yük alınarak performans artışı sağlanmış olur.
Oracle Data Guard 3 farklı koruma seviyesi sunar. Bunlar :
  • Maksimum Koruma : Bu seviyede hiçbir veri kaybı olmaması sağlanır. Birincil veritabanında oluşan redo log dosyası eş zamanlı olarak en ez bir ikincil veritabanına kopyalanıp işlenemelidir. Eğer bir sorun olur da ikincil veritabanına işlenemez ise birincil veritabanı kapatılır.
  • Maksimum Kullanılabilirlik : Bu seviye de maksimum korumada olduğu gibi sıfır veri kaybı hedeflenir, fakat hata durumunda veritabanı kapatılmaz, commit işlemi yapılmaz. hata düzelene kadar maksimum performans seviyesine geçilir. böylece veritabanının devamlılığı sağlanır. Hata düzeldikten sonra tekrar maksimum kullanılabilir seviye geçilir.
  • Maksimum Performans : Bu seviye varsayılan seviyedir ve birincil veritabanın performansında azalma olmadan koruma sağlar. Birincil veritabanında işlem commit edilir ve online redo log dosyasına yazılır. Bu redo loglar eşzamansız olarak ikincil veritabanına aktarılır ve işlenir. Log dosyalarının aktarılmasında sorun olursa sorun düzeldikten sonra kalınan yerden işleme devam edilir.
Donanımsal ve Yazılımsal gereksinimler : Sistemler aynı platformlara sahip olmalıdırlar. Örneğin 32-bit intel Linux sisteme sahip olabilirler. Donanımsal olarak bir kısıt yoktur. Farklı sayıda işlemci , ram disk birimlerinden oluşabilirler. Oracle veritabının enterprise sürüm olması ve sürümlerinin aynı olması gerekmektedir. Standart sürümde çalıştıralamamaktadır. Birincil Veritbanının ARCHIVELOG modunda çalışması gerekmektedir. Bütün sistemlerde COMPATIBLE parametrelerinin aynı olması gerekmektedir.
Fiziksel Bekleme Veritabanının Oluşturulması :Fiziksel bekleme vertabanı oluşturulmadan önce birincil veritabanında birtakım ayarlar ve kontrollerin yapılması gerekir. Bunlar :
  • Force Logging ayarının açılması : Aşağıdaki komutla birlikte veritabanın geçici Tablespace’lerin haricindeki tüm aktivitelerin loglanması sağlanır. Bu komuttan sonra NOLOGGING olarak ayarlanmış nesnelerde loglanmaya başlanır. Böylelikle bütün aktivitelerin log dosyalarına yazılması ve ikincil veritabanlarına uygulanması sağlanmış olur. SQL > Alter Database force logging;
  • Standby Redo Log oluşturulması : Maksimum Koruma ve Maksimum Kullanılabilirlik seviyelerinin kullanılabilmesi için Standby Redo Logların oluşturulması gerekmektedir. Maksimum performans seviyesinde zorunlu değil fakat kullanılması performans ve koruma açısından fayda sağlar. Standby Redo Log dosyaları bekleme modundanki veritabanlarında çalışırlar. Bekleme modunda çalışma için dizayn edildiklerinden online redo loglara veya arşivlenmiş loglara göre daha fazla koruma sağlarlar. Oluşturulacak olan Standby Redo Logların boyutlarının mevcut Online Redo Logların boyutlarıyla aynı olması gerekmektedir. Aşağıda bir Standby Redo Log dosylarının oluştrulması gösterilmiştir.
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 10
                        ('/oracle/dbs/log1c.rdo','/oracle/dbs/log2c.rdo') SIZE 500M;
Standy Redo Loglar ikincil veritabanlarında çalışırlar. Birincil veritabınında oluşturulması şartı yoktur. Fakat birincil ve ikincil veritabanlarının yer değiştirilmesi (switchover) işlemlerinden sonra düzgün çalışılabilmesi için birincil vertabanında da aynı şekilde Standby Redo Logların oluşturulması yararlı olacaktır. Aşağıdaki sorgu sistemdeki Standby Redo Logların durumu gösterir.  

SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;
         GROUP# THREAD#  SEQUENCE #ARC  STATUS
          -------  --------   ---------   --- ----------
                  3         1         16         NO  ACTIVE
                  4         0          0         YES UNASSIGNED
                  5         0          0         YES UNASSIGNED
Birincil Veritabanında Başlangıç Parametrelerinin Oluşturulması : Birincil veritabanında oluşan log dosyalarının ikincil veritabanlarına aktaramıyla ilgili parametreler oluşturulacaktır. Bunun yan
ında zorunlu olmasa da , daha sonra veritabanlarının rol değiştirmesi (switchover,failover işlemleriyle) gerekli olan , birincil veritabanının ikincil veritabanı olarak çalışması ile ilgili ayarlar da yapılacaktır. Aşağıdaki hem birincil hem de ikincil veritabanlarına ait ayırıcı bilgiler bulunmaktadır. Bu bilgiler parametrelerde kullanılacatır.
Veritabani DB_UNIQUE_NAME* Oracle Net Service Name
Birincil(Primary) istanbul istanbul
İkincil(Secondary) ankara ankara
* DB_UNIQUE_NAME parametre değişkenin her veritabanı için farklı olan, log transfer ayarlarında kullanılan bir değişkendir.Veritabanlarının log transferi seviyesinde birbirlerinden ayrılmalarını sağlar. Aşağıda birincil veritabanına ait bir başlangıç parametleri gösterilmektedir.

DB_NAME=istanbul
DB_UNIQUE_NAME=istanbul
LOG_ARCHIVE_CONFIG='DG_CONFIG=(istanbul,ankara)'
CONTROL_FILES='/opt/oracle/product/10gR2/dbs/control1.ctl',
                                        '/opt/oracle/product/10gR2/dbs/control2.ctl'
LOG_ARCHIVE_DEST_1='LOCATION=/opt/oracle/product/10gR2/archive/
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
   DB_UNIQUE_NAME=istanbul'
LOG_ARCHIVE_DEST_2='SERVICE=ankara LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=ankara'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
LOG_ARCHIVE_MAX_PROCESSES=30

Yukarıdaki parametrelerin oracle başlangıç paremetre dosyasına yazılması gerekir. Öncelikle mevcut sistemdeki SPFILE bir dosyaya yazılır. Oluşturulan bu dosyaya yukarıdaki parametreler eklenir(Control_files parametresi zaten mevcuttur.) ve bu dosya kullanılarak yeni SPFILE oluşturulur.

SPFILE düzenlemesi istanbul #

istanbul # sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 – Production on Sal Mar 18 14:58:19 2008
Bağlantı:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL>
SQL> shutdown immediate;
SQL> --Veritabanı kapatıldı.
SQL> --Veritabanı kullanıma kapatıldı.
SQL> create pfile=’/tmp/pfile.txt’ from spfile;
SQL> --Dosya yaratıldı.
Yukarıdaki parametrelerde LOG_ARCHIVE_DEST_1 parametresi sistemdeki online redo logların nereye arşivleneceğini belirtiyor. LOG_ARCHIVE_DEST_2 ise ikincil veritabanı hakkında bilgiler içeriyor.”SERVICE=ankara” parametresi logların ankara veritabanına aktarılacağını,”LGWR” aktarma için LGWR yönteminin kullanılacağını (ARCH da olabilir di) ,”ASYNC” ise aktarmanın eşzamansız olduğunu belirtiyor. Bu parametreler daha önce bahsettiğimiz 3 farklı koruma seviyesinden hangisinin kullanılacağını belirler.
Birincil Veritabanınında Log Arşivlemenin Ayarlanması : Eğer birincil veritabanında log arşivleme etkin değilse aşağıdaki komutlar ile etkin hale getirilmelidir.  

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
  
Artık birincil veritabanı hazır hale geldi. bundan sonraki ilk işlem birincil veritabanına ait bütün datafile dosyalarının , Online Redo Logları ve oluşturulan Standby Redo Logların ikincil veritabanına kopyalanmasıdır. dosyalar ikincil veritabanına kopyalandıktan sonra birincil veritabanından controlfile ve initfile bilgileri aşağıdaki sorgularla alınır ve ikincil veritabanına işlenir.
  • İkincil Veritabanı için Controlfile Dosyasının oluşturulması : İkincil veritbanına birincil veritabanına ait controlfile dosyalarının alınıp birebir kopyalanması hatalıdır. Bekleme modundaki ikincil veritabanı için önce birincil veritabanında “Standby Controlfile” oluşturulmalıdır. 

  • SQL > STARTUP MOUNT;
    SQL > ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/ankara.ctl';
    Oluşturulan bu dosya ikincil veritabanına kopyalanmalıdır. Kopyalama SCP ve FTP kullanılarak yapılabilir. ikincil veritabanın da kontrol dosyalarının ‘/opt/oracle/product/10gR2/dbs/control1.ctl’ ve ‘/opt/oracle/product/10gR2/dbs/control2.ctl’ olduğunu, istanbul bilgisayarının ip adresinin ankara bilgisayarındaki /etc/hosts dosyasına tanımlı olduğunu varsayarsak aşağıdaki scp komutları ile kontrol dosyları kopyalanmış olur.


    ankara # scp istanbul:/tmp/ankara.ctl /opt/oracle/product/10gR2/dbs/control1.ctl;
    ankara # scp istanbul:/tmp/ankara.ctl /opt/oracle/product/10gR2/dbs/control2.ctl;
  • İkincil Veritabanında Başlangıç Parametrelerinin Oluşturulması : İkincil veritabanının başlangıç parametreleri birincil veritabanına göre biraz farklılık gösterir.














    DB_NAME=ankara
    DB_UNIQUE_NAME=ankara
    LOG_ARCHIVE_CONFIG=’DG_CONFIG=(istanbul,ankara)’
    CONTROL_FILES='/opt/oracle/product/10gR2/dbs/control1.ctl',
    '/opt/oracle/product/10gR2/dbs/control2.ctl'
     LOG_ARCHIVE_DEST_1=
    'LOCATION=/opt/oracle/product/10gR2/archive/
    VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
    DB_UNIQUE_NAME=ankara'
    LOG_ARCHIVE_DEST_2='SERVICE=istanbul LGWR ASYNC
    VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
    DB_UNIQUE_NAME=istanbul'
    LOG_ARCHIVE_DEST_STATE_1=ENABLE
    LOG_ARCHIVE_DEST_STATE_2=ENABLE
    REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
    LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
    LOG_ARCHIVE_MAX_PROCESSES=30
    Buradaki LOG_ARCHIVE_DEST_1 ve LOG_ARCHIVE_DEST_2 ikincil veritabanı birincil veritabanına çevrilirse çalışacaktır.İkincil veritabanında bu parametreler çalıştırılmaz. Bu ayarlar yapıldıktan ve spfile dosyası yukarıda anlatıldığı gibi oluşturulur.Veritabanları başlatılmadan önce Oracle Net ayarlarının yapılması gerekmektedir. aşağıda birincil ve ikincil veritabanına ait TNSNAMES.ora dosyası vardır.

    ankara =(DESCRIPTION =(ADDRESS_LIST=
                           (ADDRESS = (PROTOCOL = TCP)(HOST = ankara)(PORT =
                    1521)))(CONNECT_DATA =(SERVICE_NAME = FINANS))) istanbul =(DESCRIPTION
                   =(ADDRESS_LIST =(ADDRESS = (PROTOCOL= TCP)(HOST = istanbul)(PORT = 1521)))
                (CONNECT_DATA
                  =(SERVICE_NAME = FINANS)))
 İşletim sisteminde her iki bilgisayarda ping ankara ve ping istanbul komutlarının başarılı olması gerekmektedir. Başarılı değil ise linux sistemlerde /etc/hosts dosyasında gerekli tanımların yapılması gerekmektedir.

Artık her iki veritabanı başlatılabilir. Birincil veritabanı
ALTER DATABASE OPEN; komutuyla açılarak kullanıma başlanabilir. daha sonra listener hizmetinin açılması gerekir.

istanbul # lsnctrl start;

İkincil veritabanı ise STARTUP MOUNT; komutuyla
açılmalıdır. Daha sonra gelen log dosyalarının işlenmesini sağlamak için aşağıdaki komut çalıştırılır.


SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
Artık yedekleme işlemi başlamış durumdadır.Birincil veritabanında;


SQL> alter system switch logfile;

Komutu ile bir arşiv log dosyası oluşturulur ve bu dosyanın ikincil veritabanına ulaşıp ulaşmadığı ve işlenip işlenmediği aşağıdaki komutla test edilebilir.İkincil veritabanında :


SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
        SEQUENCE# APP
         ---------    ---
                   8     YES
                   9     YES
                 10      YES
                 11      YES
Birincil veritabanında aşağıdaki sorgu çalıştırılarak sistemin işleyip işlemediği, var ise hatanın sebebi görülebilir.



SELECT * FROM V$ARCHIVE_DEST_STATUS WHERE STATUS 'DEFERRED' AND STATUS 'INACTIVE';

13 Ekim 2011 Perşembe

Virtual Box increase Disk size

C:\Program Files\Oracle\VirtualBox>VBoxManage modifyhd "C:\Users\User\VirtualBox VMs\OCP11G\OCP11G.vdi" --resize 20000

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

finish

Network


C:\Program Files\Oracle\VirtualBox>VBoxManage.exe dhcpserver add --netname baku
--ip 10.13.13.100 --netmask 255.255.255.0 --lowerip 10.13.13.101 --upperip 10.13
.13.254 -enable

7 Ekim 2011 Cuma

How to connect to asmcmd

$ asmcmd
Connected to an idle instance.


export ORACLE_HOME=/u01/home/oracle/product/11.2.0/grid

export PATH=/u01/home/oracle/product/11.2.0/grid/bin:$PATH

export ORACLE_SID=+ASM

asmcmd -p

ASMCMD [+] > ls
DATA/

19 Ağustos 2011 Cuma

Tomcat admin console start

C:\>set TOMCAT_HOME=c:\tomcat\bin
C:\>set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_26
C:\>set PATH=$JAVA_HOME/bin:$PATH

edit c:\tomcat\conf\tomcat-users.xml













c:\tomcat\bin\startup.bat

25 Temmuz 2011 Pazartesi

ORA-01000: maximum open cursors exceeded hatasi

Error : ORA-01000: maximum open cursors exceeded

Cozum 
Open cursor sayisini artirmak
ALTER SYSTEM SET open_cursors = 5000 SCOPE=BOTH;

Default degeri 300 olmali
SQL> show parameter open_cursor;

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------
open_cursors                         integer     300
SQL>

14 Temmuz 2011 Perşembe

Glassfish windows service gibi baslatmak

1. C:\glassfish3.1\glassfish\bin>asadmin create-service
2. C:\glassfish3.1\glassfish\domains\domain1\bin>domain1Service.exe start
3 .C:\glassfish3.1\glassfish\domains\domain1\bin>domain1Service.exe stop
4. C:\glassfish3.1\glassfish\domains\domain1\bin>domain1Service.exe uninstall
5. C:\glassfish3.1\glassfish\domains\domain1\bin>domain1Service.exe install

12 Temmuz 2011 Salı

Mysql create user

mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost'
    ->     WITH GRANT OPTION;

5 Temmuz 2011 Salı

Oracle Enterprise Linux uzerine, Oracle 11gr2 Kurulumu

Bu makalemizde, Oracle Enterprise Linux 5 uzerine Oracle 11gr2 kurulumunu ve linux icin gerekli kernel ayarlarinin yapilmasini inceleyecez..
Linux uzerine kurulum icin asagidaki adimlari takip edecez.
  • Download Software
  • Unpack files
  • Hosts File
  • Set kernel parameters
  • Setup
  • Installation
  • Post installation
Indirmek icin

Unpack Files 
indirdigimiz file`lari zipden cikariyoruz.
# unzip linux.x64_11gR2_database_1of2.zip 
# unzip linux.x64_11gR2_database_2of2.zip

Hosts Files

# vi /etc/hosts 
127.0.0.1            localhost.localdomain  localhost
192.168.10.12    ora11g.localdomain  ora11g
Set Kernel Parameters
Oracle`in tavsiye ettigi minimum degerleri asagidaki gibi olmalidir.
# vi /etc/sysctl.conf
fs.suid_dumpable = 1
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
Yaptigimiz islemlerin, restart yapmadan uygulanmasi icin..
 # vi /sbin/sysctl -p
Asagidaki satirlarida ekleyelim.
# vi /etc/security/limits.conf
oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536
oracle              soft    stack   10240
SELINUX`u kapatmamiz gerekmektedir.
# vi /etc/selinux/config
   SELINUX=disabled // bu satir disabled olmalidir. 
Simdi kurulum icin, bize gerekli olan, paketleri yuklemeliyiz.
gerekli olan paketler, OEL 5 DVD`nin icinde bulabilir.

# From Oracle Linux 5 DVD
cd /media/cdrom/Server
rpm -Uvh binutils-2.*
rpm -Uvh compat-libstdc++-33*
rpm -Uvh compat-libstdc++-33*.i386.rpm
rpm -Uvh elfutils-libelf*
rpm -Uvh gcc-4.*
rpm -Uvh gcc-c++-4.*
rpm -Uvh glibc-2.*
rpm -Uvh glibc-common-2.*
rpm -Uvh glibc-devel-2.*
rpm -Uvh glibc-headers-2.*
rpm -Uvh ksh*
rpm -Uvh libaio-0.*
rpm -Uvh libaio-devel-0.*
rpm -Uvh libgomp-4.*
rpm -Uvh libgcc-4.*
rpm -Uvh libstdc++-4.*
rpm -Uvh libstdc++-devel-4.*
rpm -Uvh make-3.*
rpm -Uvh sysstat-7.*
rpm -Uvh unixODBC-2.*
rpm -Uvh unixODBC-devel-2.*
rpm -Uvh numactl-devel-2*
cd /
eject 
Simdi grouplar ve user ekleyecez.
# groupadd oinstall
# groupadd dba
# groupadd oper
# groupadd asmadmin
# useradd -g oinstall -G dba,oper,asmadmin oracle
# passwd oracle 
// Eger ASM kullanmayacaksaniz, asmadmin`e gerek yoktur. 
Simdi Oracle software kurulumu icin, directory yaratacaz, ve oracle kullanicisina
yetki verecez.


# mkdir -p /u01/app/oracle/product/11.2.0/db_1
# chown -R oracle:oinstall /u01
# chmod -R 775 /u01
Buradan sonra "oracle" kullanicisi ile login oldukdan sonra, ".bash_profile" icine
asagidaki satirlari ekliyoruz.
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=ora11g.localdomain; export ORACLE_HOSTNAME
ORACLE_UNQNAME=ORCL; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=ORCL; export ORACLE_SID
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH 
Gerekli islemleri yaptikdan sonra, zipden cikardigimiz "database" klasoru icindeki runInstaller`i calisitiriyoruz.
# cd database
# ./runInstaller
Buradan sonra, karsiniza, grafik ekran gelecektir.
Ama eger runInstaller`i calistirken asagidaki hata ile karsilasirsaniz

[oracle@ertugrula database]$ ./runInstaller
bash: ./runInstaller: Permission denied
Eger sizde benim gibi yukaridaki hata ile karsilastiysaniz yapmamiz gereken, permissionlar vermekte asagida oldugu gibi
[oracle@ertugrula grid]$ chmod u+x runInstaller
[oracle@ertugrula grid]$ chmod u+x ./install/.oui
[oracle@ertugrula grid]$ chmod u+x ./install/unzip
Simdi tekrar deneyiniz,
# ./runInstaller

4 Temmuz 2011 Pazartesi

chmod: changing permissions of `VBoxLinuxAdditions.run': Read-only file system

Virtual boxda tam ekran yaparken asagidaki hatayi aliyorsak;


# sudo ./VBoxLinuxAdditions.run
chmod: changing permissions of `VBoxLinuxAdditions.run': Read-only file system

Cozum:

# sudo sh VBoxLunuxAdditions.run


En iyi Backup alma yonteminden biri

Asagidaki kodumuz, en iyi backup alma yontemlerinden biridir, (Tabiki cok daha iyileri vardir.)

RMAN > BACKUP as COMPRESSED BACKUPSET DATABASE FORMAT
               '/home/oracle/backup/datafile/dbf_%d_%t_%s.rman' 
               TAG='DBF_DB11G_20110321_1453' PLUS
               ARCHIVELOG format '/home/oracle/backup/arcfile/arc_%d_%t_%s.rman'
               TAG='ARC_DB11G_20110321_1453'

28 Haziran 2011 Salı

Fedora uzerine Virtualbox kurulurken cikan hata

Error! Your kernel source for kernel 2.6.35.6-45.fc14.x86_64 cannot be found at
/lib/modules/2.6.35.6-45.fc14.x86_64/build or /lib/modules/2.6.35.6-45.fc14.x86_64/source

#yum install gcc

#yum install dkms

#uname -r

// burada gorunen degeri yum install kernel-devel-xxxxxxx
// bende asagidaki gibi...

#yum install kernel-devel-2.6.35.6-45.fc14.x86_64

#sudo /etc/init.d/vboxdrv setup

26 Haziran 2011 Pazar

Oracle Scheduler

Bu makalemizde Oracle 11g icerisinde olan dbms_scheduler paketini kullanacagiz..

Bunun icin bir user yaratalim ve ona grant create job rolunu verelim..

sql > CREATE USER aslan IDENTIFIED BY aslan;
sql> GRANT DBA TO aslan;
sql > GRANT CREATE JOB TO aslan;

job icinde kullanacagimiz bir table yaratalim...

sql> CREATE TABLE EMP (ID NUMBER, NAME VARCHAR2(30), SAL NUMBER);

tablomuzun icine biraz veri ekledikden sonra job icinde kullanalim..

------------------------------- JOB`un yaratilmiasi------------------
sql > BEGIN
              DBMS_SCHEDULER.CREATE_JOB(
              job_name => 'upt_emp',
              job_type => 'PLSQL_BLOCK',
              job_action => 'update emp set sal = sal * 1.2;',
              start_date => systimestamp,
              repeat_interval => 'FREQ=YEARLY',
             end_date => NULL,
             enabled = TRUE,
             comments => 'Iscilerin maaslarin artirilmasi');
         END;
/

-----------------------JOB`larin listesini gorelim------------------------
SQL> select job_name, enabled, run_count from user_scheduler_jobs;

JOB_NAME                       ENABL  RUN_COUNT
------------------------------ ----- ----------
UPT_EMP                        TRUE           0

-----------------------JOB`un aktiv edilmesi-------------------

 SQL > begin
                   dbms_scheduler.enable(name => 'UPT_EMP');
             end;
             /

-----------------------JOB`un pasif edilmesi-------------------

 SQL > begin
                   dbms_scheduler.disable(name => 'UPT_EMP');
             end;
             /

-----------------------JOB`un kopyalanmasi-------------------

 SQL > begin
                   dbms_scheduler.copy_job('UPT_EMP', 'COP_UPT');
             end;
             /
 //  Bu kodu calistirdikdan sonra, joblarin sayisinin  arttigini goreceksiniz ( ama kopy jobun disable olacaktir).

-----------------------JOB`un calistirilmasi-------------------

 SQL > begin
                   dbms_scheduler.run_job('UPT_EMP',TRUE);
             end;
             /


-----------------------JOB`un durdurulmasi-------------------

 SQL > begin
                   dbms_scheduler.stop_job(job_name => 'UPT_EMP',
                   force => TRUE),
             end;
             /
// Burada job calisiyorsa durdurulucaktir ancak, job calismiyorsa, kod hata verecektir.

-----------------------JOB`un silinmesi-------------------

 SQL > begin
                   dbms_scheduler.drop_job(job_name => 'UPT_EMP',
                   force => TRUE),
             end;
             /