PLSQL’de string ifadenin array’a çevrilmesi

PL/SQL’de parametre olarak string, belirtilen ayırac ile bölen fonksiyon. Eğer hiç ayırac kullanılmamışsa parametre olarak geçilen değer döner. Ayıraç birden fazla karakterden oluşabilir.

[sql]
create or replace function str2array(pStr in varchar2, pDelim in varchar2 ) return dbms_utility.uncl_array is
  Result dbms_utility.uncl_array;
  i number;
  j number;
  lastpos number;
  iCount number;
  bFound boolean;
begin
  i:=1;
  lastpos:=1;
  iCount:=1;
  
  while i<=length(pStr) 
  loop          
     bFound:=false;
     
     if  substr(pStr,i,1)=substr(pDelim,1,1) then 
         
         bFound:=true;
         
         for j in 1..length(pDelim)
         loop
            if substr(pStr,i+j,1)<>substr(pDelim,j+1,1)then
                bFound:=false;
            end if;                 
         end loop;
         
         if bFound then           
            Result(iCount):=substr(pStr,lastpos,i-lastpos);
            iCount:=iCount+1;            
            i:=i+length(pDelim);
            lastpos:=i; 
         end if;
         
     end if;
     
     i:=i+1;
  end loop;
  
  if substr(pStr,lastpos,length(pStr)-lastpos+1)<>pDelim then 
    Result(iCount):=substr(pStr,lastpos,length(pStr)-lastpos+1);
  end if;
   
  
  return(Result);
end;
[/sql]

Örnek kullanım :

[sql]
declare 
 arr dbms_utility.uncl_array;
 i number;
begin
  arr:= str2array('abc,d,ef',',');
  for i in 1..arr.count
  loop
     dbms_output.put_line( arr(i) );
  end loop;
end;
[/sql]

Oracle’da rtf’i text’e çevirmek.

Rtf dosyalarınızı text formatına çevirmeniz gerekebilir. Oracle’da bu işlemi oracle text fonksiyonlarını kullanarak yapabilirsiniz.

İlk önce policy oluşturmalısınız.

ctx_ddl.create_policy(policy_name => 'rtf2text_policy', FILTER => 'CTXSYS.AUTO_FILTER');

Çevirim Fonksiyonu

CREATE OR REPLACE FUNCTION "RTF2TEXT"(p_rtf clob) RETURN CLOB IS
c_text clob;
BEGIN
   ctx_doc.policy_filter(policy_name => 'rtf2text_policy',
                         document => p_rtf,
                         restab => c_text,
                         plaintext => TRUE);
   RETURN c_text;
END;

10gR2 Enterprise Edition ile test edilmiştir.

Oracle Enterprise Manager’i tekrar kurmak

Oracle 10.2.1 için enterprise manager’in silinip tekrar kurulması 

Silmek için :
emca -deconfig dbcontrol db -repos drop 

Oluşturmak için :
emca -config dbcontrol db -repos create 


  
 
Subject: How To Drop, Create And Recreate DB Control In A 10g Database
  Doc ID: Note:278100.1 Type: BULLETIN
  Last Revision Date: 24-JAN-2008 Status: PUBLISHED

In this Document
  Purpose
  Scope and Application
  How To Drop, Create And Recreate DB Control In A 10g Database
     DB Control options:
     A.  Delete DB Control Objects:
     B. Create DB Control Objects
     C.  Recreate/ReConfig DB Control
  References 


Applies to:

Enterprise Manager Grid Control – Version: 10.1 to 11.1
Information in this document applies to any platform.
DBConsole 

Purpose

This article provides detailed instructions on how to 1) create, 2) drop and 3)recreate the repository and configuration files for the DB Control application used to manage a single 10g Database. 

Scope and Application

The steps in this article are written for a DBA or System Administrator who needs to create, drop or reconfigure the DB Control Application.  

The format of the document will include steps for both 10.1 and 10.2 EMCA because the commands changed between the two releases. 

For detailed instructions on DB Control 10.2 for RAC, please consult also:
Note 395162.1 How to manage DB Control 10.2 for RAC Database with emca
Note 395162.1 How to manage DB Control 10.2 for RAC Database with emca 

How To Drop, Create And Recreate DB Control In A 10g Database

DB Control options:

 

A.  Delete DB Control Objects:

Option 1.  Delete DB Control Configuration Files using EMCA scripts
Option 2.  Delete DB Control Configuration Files Manually:
Option 3.  Delete DB Control Repository Objects using RepManager
Option 4.  Delete DB Control Repository Objects Manually
Option 5.  Delete DB Control Configuration Files and Repository Objects using EMCA 


Option 1. Delete DB Control Configuration Files using EMCA scripts: 

For DB Control 10.1.x, run the command: <ORACLE_HOME>/bin/emca -x <sid>
For DB Control 10.2.x, run the command: <ORACLE_HOME>bin/emca -deconfig dbcontrol db

Option 2. Delete DB Control Configuration Files Manually: 

 

Remove the following directories from your filesystem:
<ORACLE_HOME>/<hostname_sid>
<ORACLE_HOME>/oc4j/j2ee/OC4J_DBConsole_<hostname>_<sid> 

NOTE: 
On Windows you also need to delete the DB Console service:
– run regedit
– navigate to HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services
– locate the OracleDBConsole<sid> entry and delete it 

Alternatively on Windows XP and Windows Server 2003 you can run the following from the command line:
‘sc delete <service_name>’ 

– where <service_name> is the DB Control service name (typically: OracleDBConsole<sid>) 

Also available from Microsoft is the delsrv.exe command.   (Free download from Microsoft)

Option 3. Delete DB Control Repository using RepManager:

This option is not as complete as the other options.  You may find that dropping the repository using the commandline options is a better solution.  Also note, RepManager is not used to create a DB Control Repository. 

In both 10g R1 and R2 run:
<ORACLE_HOME>/sysman/admin/emdrep/bin/RepManager <hostname> <listener_port> <sid> -action drop

  

Warning: this command puts the database in Quiesce Mode.
Please consult the Note 375946.1 Running EMCA Results in Database quiesce And No
New Connections or OperationsNote 375946.1 Running EMCA Results in Database quiesce And No
New Connections or Operations Can Be Performed During the DB Control Repository Creation
Option 4. Delete DB Control Repository Objects Manually 

Step 1: Drop AQ related objects in the SYSMAN schema
Logon SQLPLUS as user SYSMAN
SQL>exec DBMS_AQADM.DROP_QUEUE_TABLE(queue_table=>'MGMT_NOTIFY_QTABLE',force =>TRUE);

Step 2: Drop the DB Control Repository Objects
Logon SQLPLUS as user SYS or SYSTEM, and drop the sysman account and management objects:
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP RESTRICT;
SQL> EXEC sysman.emd_maintenance.remove_em_dbms_jobs;
SQL> EXEC sysman.setEMUserContext('',5);
SQL>REVOKE dba FROM sysman;
SQL> DECLARE
CURSOR c1 IS
SELECT owner, synonym_name name
FROM dba_synonyms
WHERE table_owner= 'SYSMAN';
BEGIN
FOR r1 IN c1 LOOP
IF r1.owner = 'PUBLIC' THEN
EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM '||r1.name;
ELSE
EXECUTE IMMEDIATE 'DROP SYNONYM '||r1.owner||'.'||r1.name;
END IF;
END LOOP;
END;
/
SQL> DROP USER mgmt_view CASCADE;
SQL> DROP ROLE mgmt_user;
SQL> DROP USER sysman CASCADE;
SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;

Note: The above will completely delete the DB Control repository from the database; under certain circumstances (e.g. you want to recreate the repository later on) the following statements may be sufficient to remove the repository: 

Logon SQLPLUS as user SYS or SYSTEM, and drop the sysman account and management objects:
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;
Option 5. Delete DB Control Configuration Files and Repository Objects using EMCA

For DB Control 10.1.x, dropping both the configuration files and the repository objects is a two step process.  Run the following two commands: 

<ORACLE_HOME>/bin/emca -x <sid>
<ORACLE_HOME>/sysman/admin/emdrep/bin/RepManager <hostname> <listener_port> <sid> -action drop


For DB Control 10.2.x, both configuration files and repository objects can be deleted with a single command.  Run the command: 

<ORACLE_HOME>/bin/emca -deconfig dbcontrol db -repos drop

  

Warning: this command puts the database in Quiesce Mode.
Please consult the Note 375946.1 Running EMCA Results in Database quiesce And No
New Connections or Operations Can Be Performed During the DB Control Repository Creation
Note 375946.1 Running EMCA Results in Database quiesce And No
New Connections or Operations Can Be Performed During the DB Control Repository Creation 

B. Create DB Control Objects

Option 1.  Create the DB Control Configuration Files
Option 2.  Create the DB Control Repository Objects and Configuration Files 

Option 1.  Create the DB Control Configuration Files
To create only the DB Control configuration files, skipping the repository creation (this would be done for instance if you dropped only the files and left the repository in place): 

For DB Control 10.1.x, run the command: <ORACLE_HOME>/bin/emca -r
For DB Control 10.2.x, run the command: <ORACLE_HOME>/bin/emca -config dbcontrol db

Option 2. Create the DB Control Repository Objects and Configuration Files 

For DB Control 10.1.x, run the command: <ORACLE_HOME>/bin/emca
For DB Control 10.2.x, run the command: <ORACLE_HOME>bin/emca -config dbcontrol db -repos create

  

Warning: this command puts the database in Quiesce Mode.
Please consult the Note 375946.1 Running EMCA Results in Database quiesce And No
New Connections or Operations Can Be Performed During the DB Control Repository Creation
Note 375946.1 Running EMCA Results in Database quiesce And No
New Connections or Operations Can Be Performed During the DB Control Repository Creation 

C.  Recreate/ReConfig DB Control

Option 1.  Recreate the DB Control Configuration Files only (leave Repository intact)
Option 2.  Recreate the DB Control Configuration Files and Repository 

In 10.2, the EMCA commands can be used to reconfigure the existing installs without removing them first. 

Option 1. Recreate the DB Control Configuration Files only (leave Repository intact):
For DB Control 10.2.x, run the command: 

<ORACLE_HOME>/bin/emca -config dbcontrol db


Option 2. Recreate the DB Control Configuration Files and Repository

For DB Control 10.2.x, run the command: 

<ORACLE_HOME>/bin/emca -config dbcontrol db -repos recreate

  

Warning: this command puts the database in Quiesce Mode.
Please consult the Note 375946.1 Running EMCA Results in Database quiesce And No
New Connections or Operations Can Be PerformedNote 375946.1 Running EMCA Results in Database quiesce And No
New Connections or Operations Can Be Performed During the DB Control Repository Creation
For additional information on EMCA commandline options, please see the Oracle Enterprise Manager 10g Advanced Configuration Guide or see Note 330130.1 Overview Of The EMCA Commands Available for DB Control 10.2 

References

Note 375946.1 – Problem: Running EMCA Results in Database quiesce And No New Connections or Operations Can Be Performed During the DB Control Repository Creation
Note 395162.1 – How to manage DB Control 10.2 for RAC Database with emca
Note 456437.1 – Ora-24005 Error Trying To Drop User Sysman Cascade 

Keywords

EMCA‘   ‘REPMANAGER‘   ‘QUIESCE‘   ‘DB~CONTROL‘   ‘DBCONSOLE‘   ‘DBMS_AQADM.DROP_QUEUE_TABLE‘   ‘REPMANAGER

Oracle’da sql ile bakiye hesaplama

Oracle’da analitik fonksiyonları kullanarak bakiye hesaplanabilmektedir. Örneğimizde bakiye test tablosu oluşturup test verilerini giriyoruz. Hesaplama sutunu için SUM grup fonksiyonunu OVER ile kullanarak satır satır çalışmasını sağlıyoruz. ORDER BY ile toplama işlemini hangi sırayla yapılmasını gerektiğini belirtiyoruz.


create table bakiye_test (
  id number primary key,
  tarih date not null,
  giren number not null,
  cikan number not null
);


insert into bakiye_test values (1,'05.04.2010',100,0);
insert into bakiye_test values (2,'07.04.2010',0,200);
insert into bakiye_test values (3,'09.04.2010',300,0);
insert into bakiye_test values (4,'10.04.2010',100,0);
insert into bakiye_test values (5,'12.04.2010',0,50);
insert into bakiye_test values (6,'19.04.2010',50,0);
insert into bakiye_test values (7,'21.04.2010',0,30);
commit;


SQL> SELECT B.*, SUM( GIREN-CIKAN ) OVER (ORDER BY TARIH ASC ) BAKIYE FROM BAKIYE_TEST B;

        ID TARIH            GIREN      CIKAN     BAKIYE
---------- ----------- ---------- ---------- ----------
         1 05.04.2010         100          0        100
         2 07.04.2010           0        200       -100
         3 09.04.2010         300          0        200
         4 10.04.2010         100          0        300
         5 12.04.2010           0         50        250
         6 19.04.2010          50          0        300
         7 21.04.2010           0         30        270

7 rows selected

Foreign Key ile bağlantı kurulmuş kayıtlarda güncelleme yapmak.

Primary Key – Foreign Key ilişkisi kurulmuş olan bir yapıda,  foreign key olan alanların değerini yeni bir değerle nasıl değiştirebiliriz?

Bir örnek ile açıklamaya çalışalım; Müşteri ve ödeme  bilgilerini içeren iki tablomuz ve aralarında Müşteri id üzerinden foreign key bağlantısı olmuş olsun. Müşteri bilgileri tablosunda A firmasının ikinci bir kaydının A* şeklinde açılmış olduğunu ve bu yanlış açılan firma için ödeme bilgisi girildiğini kabul edelim. A* firmasının yanlış açılmış bir kayıt olduğunu, A* firmasına yapılan ödeme bilgilerinin A firması olarak değiştirilmesi gerektiğinde ödeme bilgilerindeki Müşteri id’sinin güncellenmesi gerekecektir.  Tek tablo için bir update yeterli iken 100’den fazla tabloda update yapılması gerektiğinde ne yapılmalıdır? İlgili tabloya foreign key’le bağlı olan tabloları ve ilişkili olan alanları bulup  alandaki değerleri güncellemek en kestirme yol olacaktır.

Şöyle ki:

drop table odeme_test;
drop table musteri_test;

create table musteri_test (
   musteri_id number primary key,
   adi varchar2(20)
);


create table odeme_test (
   musteri_id number references musteri_test(musteri_id) ,
   tutar number
);

insert into musteri_test values (1,'A FIRMASI');
insert into musteri_test values (2,'B FIRMASI');
insert into musteri_test values (3,'A* FIRMASI');

insert into odeme_test values (1,10);
insert into odeme_test values (2,-10);
insert into odeme_test values (3,20);
insert into odeme_test values (1,-20);
insert into odeme_test values (2,30);
insert into odeme_test values (3,-30);
commit;

SQL> select * from musteri_test;

MUSTERI_ID ADI
---------- --------------------
         1 A FIRMASI
         2 B FIRMASI
         3 A* FIRMASI

SQL> select * from odeme_test;

MUSTERI_ID      TUTAR
---------- ----------
         1         10
         2        -10
         3         20
         1        -20
         2         30
         3        -30

6 satırları seçildi.

Güncellemeleri yapacak sql’ler oluşturuluyor…

SQL> select
 'UPDATE '|| a.OWNER ||'.'|| c.TABLE_NAME ||
 ' SET '|| c.COLUMN_NAME ||'=&YENI'||
 ' WHERE '|| c.COLUMN_NAME ||'=&ESKI;' update_sql
 from
 all_constraints a,
 all_cons_columns c
 where
 a.constraint_type = 'R'
 and a.CONSTRAINT_NAME = c.CONSTRAINT_NAME
 and r_constraint_name in
 (
 select constraint_name
 from all_constraints
 where constraint_type in ('P')
 and table_name = 'MUSTERI_TEST'
 );

yeni değerini girin: 1
eski 3: ' SET '|| c.COLUMN_NAME ||' = &YENI'||
yeni 3: ' SET '|| c.COLUMN_NAME ||' = 1'||
eski değerini girin: 3
eski 4: ' WHERE '|| c.COLUMN_NAME ||'= &ESKI;' update_sql
yeni 4: ' WHERE '|| c.COLUMN_NAME ||'= 3;' update_sql
UPDATE_SQL
-------------------------------------------------------
UPDATE ZGUVEN.ODEME_TEST SET MUSTERI_ID=1 WHERE MUSTERI_ID=3;

SQL> UPDATE ZGUVEN.ODEME_TEST SET MUSTERI_ID=1 WHERE MUSTERI_ID=3;

2 satırları güncellendi.

SQL> select * from odeme_test;

MUSTERI_ID      TUTAR
---------- ----------
         1         10
         2        -10
         1         20
         1        -20
         2         30
         1        -30

6 satırları seçildi.

SQL>

Bir tablo üzerinde kayıt varsa güncelleme yoksa ekleme yapmak

Oracle’da merge kelimesini kullanarak tek sql ile kayıt varsa güncelleme yoksa ekleme yaptırabiliriz (Upsert).
Upsert Sql’imiz:

 merge into tablo t
 using dual s on (t.alan1=1)
 when matched then
   update set alan2='UPDATE'
 when not matched then
   insert (alan1,alan2) values (1,'INSERT');

Test ediyoruz :

SQL> create table tablo (alan1 number(10),alan2 varchar2(10));

Table created

SQL> select * from tablo;

      ALAN1 ALAN2
----------- ----------

SQL> merge into tablo t
2 using dual s on (t.alan1=1)
3 when matched then
4 update set alan2='UPDATE'
5 when not matched then
6 insert (alan1,alan2) values (1,'INSERT');

Done

SQL> select * from tablo;

      ALAN1 ALAN2
----------- ----------
          1 INSERT

SQL> merge into tablo t
2 using dual s on (t.alan1=1)
3 when matched then
4 update set alan2='UPDATE'
5 when not matched then
6 insert (alan1,alan2) values (1,'INSERT');

Done

SQL> select * from tablo;

      ALAN1 ALAN2
----------- ----------
          1 UPDATE

SQL> commit;

Commit complete

SQL>

İki tarih arasındaki farkı Yıl, Ay, Gün olarak bulmak.

İki tarih arasında geçen zamanı bulmanız, yaş hesaplamanız gerekebilir. Oracle’da iki tarih arasındaki farkı yıl, ay,gun olarak  veren fonksiyon bulunmamaktadır.

Ben aşağıdaki şekilde bir sql ile hallettim: 

SQL>SELECT
  DOG_TAR DOGUM_TARIHI,
TRUNC( MONTHS_BETWEEN( SYSDATE, dog_tar)/12) yil,
TRUNC( MOD( MONTHS_BETWEEN( SYSDATE, dog_tar),12) ) ay,
TRUNC( (MONTHS_BETWEEN(SYSDATE,dog_tar)- TRUNC(MONTHS_BETWEEN( SYSDATE, dog_tar))) /0.032258064516129) gun
FROM
  PERSONEL; 


DOGUM_TARIHI        YIL         AY        GUN
------------ ---------- ---------- ----------
11.04.1970           39          9         24
01.01.1960           50          1          3
01.01.1998           12          1          3
04.08.1997           12          6          0
13.02.1982           27         11         22

0.032258064516129 iki gün arasındaki fark.

SQL>SELECT MONTHS_BETWEEN( SYSDATE,SYSDATE-1) FROM DUAL;

MONTHS_BETWEEN(SYSDATE,SYSDATE
------------------------------
             0,032258064516129

İki tarih arasındaki farkı yıl,ay,gün,hafta olarak hesaplayan fonksiyon.

CREATE OR REPLACE FUNCTION "TARIH_HESAPLA"(BAS_TARIH DATE, BIT_TARIH DATE,FORMAT
   VARCHAR2 DEFAULT '%YIL% yil %AY% ay %AYGUN% gun')
   RETURN VARCHAR2 DETERMINISTIC IS
   SONUC VARCHAR2(100) ;
   FARK NUMBER;
BEGIN
   -- %YIL% : Iki tarih arasindaki fark yil olarak
   -- %AY% : Iki tarih arasindaki fark ay olarak
   -- %AYGUN% : Iki tarih arasindaki fark aydan kalan gun olarak
   -- %HAFTA% : Iki tarih arasindaki fark hafta olarak
   -- %HAFTAGUN% :Iki tarih arasindaki fark haftadan kalan gun olarak
   SONUC := FORMAT;
   FARK:=months_between(BIT_TARIH, BAS_TARIH);
   SONUC := REPLACE(SONUC,'%YIL%',trunc(fark / 12));
   SONUC := REPLACE(SONUC,'%AY%',trunc(mod(fark, 12)) );
   SONUC := REPLACE(SONUC,'%AYGUN%',trunc( (fark - trunc(fark) ) / 0.032258064516129));
   SONUC := REPLACE(SONUC,'%HAFTAGUN%',TRUNC(mod(BIT_TARIH-BAS_TARIH,7 )));
   SONUC := REPLACE(SONUC,'%HAFTA%',TRUNC( (BIT_TARIH-BAS_TARIH)/7 ));
   RETURN SONUC;
END;

Örnek:

SQL> select tarih_hesapla(sysdate-999,sysdate) from dual;

TARIH_HESAPLA(SYSDATE-999,SYSD
------------------------------
2 yil 8 ay 25 gun


SQL> select tarih_hesapla(sysdate-999,sysdate,'%YIL% Yil') from dual;

TARIH_HESAPLA(SYSDATE-999,SYSD
------------------------------
2 Yil


SQL> select tarih_hesapla(sysdate-100,sysdate,'%HAFTA% Hafta %HAFTAGUN% Gün') from dual;

TARIH_HESAPLA(SYSDATE-100,SYSD
------------------------------
14 Hafta 2 Gün

Flashback query ile sorgulama

Oracle’da tablolar ile  çalışırken,  tabloya ait daha önceki verilerini görmeniz gerekebilir. Tablo’nun belirli bir zamana ait verisini görmek için :

SELECT * FROM tabloadi AS OF TIMESTAMP TO_DATE('25.12.2009 15:00:00','DD.MM.YYYY HH24:MI:SS');

Sorgulama yaparken ORA-08186:invalid timestamp specified / ORA-08186:geçersiz zaman damgası belirlendi hatası alıyorsanız, sorguladığınız zaman aralığı flashback’te bulunmuyor demektir.

Linux üzerinde Oracle’ın otomatik olarak başlatılması

Oracle enterprise linux Release 5,Update 4. Oracle 11g R2 Enterprise versiyonunda uygulanmıştır.
Oracle’ın otomatik başlatılabilir olarak tanımlanması
root kullanıcısında, komut satırına :

vi /etc/oratab  

yazıp, oratab dosyasındaki  oracle_sid:oracle_home:<Y|N> formatında yazılmış satırdaki N’yi Y olarak değiştiriyoruz. Bu  değişiklik oracle’ın otomatik olarak başlatılması için gerekli.

orcl:/u01/app/oracle/product/11.2.0:Y

Ortam değişkenlerinin tanımlanması

vi /home/oracle/.bash_profile

yazıp,
# User specific environment and startup programs
satırından sonraki mavi renkli satırları ekleyiniz.

# .bash_profile


# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

ORACLE_HOSTNAME=localhost.localdomain; export ORACLE_HOSTNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_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

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

Linux’servisinin oluşturulması
Bu kısımda linux’un her açılışında otomatik olarak çalıştıracağı bir dosya oluşturuyoruz.Bu dosya sistemin her  açılışında ve kapanışında çalıştırılacak.

vi /etc/init.d/oracledb

dosya içine

#!/bin/sh
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.


ORA_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORA_OWNER=oracle
ORACLE_SID=orcl
export $ORACLE_SID

if [ ! -f $ORA_HOME/bin/dbstart ]

then
    echo "Oracle startup: cannot start"
    exit
fi

case "$1" in
    'start')
        # Start the Oracle databases:
        # The following command assumes that the oracle login
        # will not prompt the user for any values
        su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
        su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
        su - $ORA_OWNER -c "$ORA_HOME/bin/emctl start dbconsole"  
        echo "OK"
        ;;
    'stop')
        # Stop the Oracle databases:
        # The following command assumes that the oracle login
        # will not prompt the user for any values
        su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
        su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
        ;;
esac

Ardından chmod komutu ile bu dosyanın yetki seviyesini 750 olarak ayarlıyoruz:

chmod 750 /etc/init.d/oracledb

chkconfig komutu ile bu script dosyasını linux servis’ine ekliyoruz :

/sbin/chkconfig --level 345 oracledb on

Oracle Enterprise Linux üzerine Oracle 11g R2 kurmak

Anlatılan OEL (Oracle Enterprise Linux) versiyonu Release 5, Update 4 tur.

İndirmek için : http://edelivery.oracle.com/linux

Oracle Database’in kurulumu sırasında yapmanız gereken paket kontrolü ve kullanıcı tanımlaması işlemlerinin OEL tarafından yapılmasını sağlayabilirsiniz. Bunun için kurulum sırasında  oracle-validated paketinin yüklenmesi gereklidir.

Paketin yüklenmesi için aşağıdakileri takip edin :

Kurulumda yazılım özellikleri ekranına geldiğinizde  “Customize Now” seçeneğini seçip Next’e  tıklayın.

oelinstall1

Sol taraftaki ekrandan “Base System” i seçip sağ taraftaki listeden “System Tools” seçin. “System Tools” un önündeki checkbox’a seçin sonra listenin altındaki “Optional Packages” butonunu tıklayın.

oelinstall2

oelinstall3

Listeyi aşağıya doğru kaydırın “oracle-validated” paketini seçip “Close” butonunu tıklayın

oelinstall4

OEL kurulduğunda oracle ile ilgili paketlerde yüklenmiş olacaktır.

Oracle veritabanı’nın kurulması.

Oracle kullanıcısındayken http://www.oracle.com/technology/software/products/database/index.html sayfasından
32 bit için:
linux_11gR2_database_1of2.zip
linux_11gR2_database_2of2.zip

64 bit için:
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip

kurulum dosyalarını bilgisayarınıza (mesela: /home/oracle)indirin.

root kullanıcısında iken :

mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01
chmod 755 /u01/app/oracle

komutlarını verin.

oracle kullanıcısı olarak giriş yapın

Terminal pernceresi açıp dosyaları indirdiğiniz dizinde:

32 bit için: 

unzip -d db11gr2 linux_11gR2_database_1of2.zip
unzip -d db11gr2 linux_11gR2_database_2of2.zip
cd db11gr2/database
./runInstaller

64 bit için: 

unzip -d db11gr2 linux.x64_11gR2_database_1of2.zip
unzip -d db11gr2 linux.x64_11gR2_database_2of2.zip
cd db11gr2/database
./runInstaller

oracle kurulum perceresi açılmış olmalıdır.

İlgili linkler:
oracle-validate paketi
Installing Oracle 11gR2 on OEL 5.3
Oracle Enterprise Linux 5.1 Kurulumu
Oracle Enterprise Linux 5.1′e Oracle 10g Veritabanı Kurulumu
http://www.puschitz.com/InstallingOracle10g.shtml